l0_name_resolver.py

l0_name_resolver.py

Module: l0_name_resolver

Source: compiler/stage1_py/l0_name_resolver.py Language: Python

Symbols

Namespace l0_name_resolver

Class l0_name_resolver::NameResolver

Stage-1 name resolver for module-level symbols.

This resolver:

  • Builds a ModuleEnv for each module in a CompilationUnit.

  • Collects top-level symbols (functions, structs, enums, variants, aliases).

  • Processes imports by injecting imported symbols into the importer’s scope.

  • Detects duplicate definitions and import conflicts.

Member Data l0_name_resolver.NameResolver.cu

1
l0_name_resolver.NameResolver::cu

Function l0_name_resolver.NameResolver.__init__

1
l0_name_resolver.NameResolver.__init__(self, CompilationUnit cu)

Initialize the name resolver.

Parameters:

  • cu: The compilation unit to process.

    Function l0_name_resolver.NameResolver.resolve

1
Dict[str, ModuleEnv] l0_name_resolver.NameResolver.resolve(self)

Resolve names for all modules in the compilation unit.

Returns: A mapping from module names to their populated ModuleEnv objects.

Function l0_name_resolver.NameResolver._collect_locals

1
None l0_name_resolver.NameResolver._collect_locals(self, ModuleEnv env)

Collect local symbols from module declarations.

Parameters:

  • env: The module environment to populate.

    Function l0_name_resolver.NameResolver._define_local

1
None l0_name_resolver.NameResolver._define_local(self, ModuleEnv env, str name, Symbol sym)

Define a local symbol, checking for duplicates.

Parameters:

  • env: The environment to define the symbol in.
  • name: The name of the symbol.
  • sym: The Symbol object.

    Function l0_name_resolver.NameResolver._open_imports

1
None l0_name_resolver.NameResolver._open_imports(self, ModuleEnv env)

Process imports for a module environment.

Parameters:

  • env: The module environment whose imports should be opened.

    Function l0_name_resolver.NameResolver._extern_signatures_compatible

1
bool l0_name_resolver.NameResolver._extern_signatures_compatible(self, Symbol local, Symbol imported)

Check if two extern function signatures are compatible.