Fan

 

class

compiler::ResolveImports

sys::Obj
  compiler::CompilerSupport
    compiler::CompilerStep
      compiler::ResolveImports

ResolveImports maps every Using node in each CompilationUnit to a pod and ensures that it exists and that no imports are duplicated. Then we create a map for all the types which are imported into the CompilationUnit so that the Parser can quickly distinguish between a type identifier and other identifiers. The results of this step populate Using.resolvedXXX and CompilationUnit.importedTypes.

Slots

checkUsingPodSource

static Void checkUsingPod(CompilerSupport cs, Str podName, Location loc)

Check that a pod name is in the dependency list.

makeSource

new make(Compiler compiler)

Constructor takes the associated Compiler

resolveQualifiedSource

static CType? resolveQualified(CompilerSupport cs, Str podName, Str typeName, Location location)

Resolve a fully qualified type name into its CType representation. This may be a TypeDef within the compilation units or could be an imported type. If the type name cannot be resolved then we log an error and return null.

resolvedSource

Str:CPod resolved := [Str:CPod][:]

runSource

override Void run()

Run the step