resolveTypeAnnotationDynamic static method

RuntimeType resolveTypeAnnotationDynamic(
  1. SAstNode typeNode,
  2. Environment env
)

Implementation

static RuntimeType resolveTypeAnnotationDynamic(
    SAstNode typeNode, Environment env) {
  if (typeNode is SNamedType) {
    final typeName = typeNode.name?.name ?? '';

    Logger.debug(
        "[InterpretedClass._resolveTypeAnnotationDynamic] Resolving SNamedType: $typeName");

    final resolved = env.get(typeName);
    if (resolved is RuntimeType) {
      Logger.debug(
          "[InterpretedClass._resolveTypeAnnotationDynamic] Resolved from environment to RuntimeType: ${resolved.name}");
      return resolved;
    } else {
      throw RuntimeD4rtException(
          "Symbol '$typeName' resolved to non-type value: $resolved");
    }
  } else {
    throw RuntimeD4rtException(
        "Unsupported type annotation for constraint: ${typeNode.runtimeType}");
  }
}