l0_signatures.py

l0_signatures.py

Module: l0_signatures

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

Symbols

Namespace l0_signatures

Class l0_signatures::StructFieldInfo

Information about a single struct field.

Member Data l0_signatures.StructFieldInfo.name

1
str name

Member Data l0_signatures.StructFieldInfo.type

1
Type type

Class l0_signatures::StructInfo

Resolved type information for a struct.

Member Data l0_signatures.StructInfo.struct_type

1
StructType struct_type

Member Data l0_signatures.StructInfo.fields

1
List fields

Class l0_signatures::EnumVariantInfo

Information about a single enum variant.

Member Data l0_signatures.EnumVariantInfo.name

1
str name

Member Data l0_signatures.EnumVariantInfo.field_types

1
List field_types

Class l0_signatures::EnumInfo

Resolved type information for an enum.

Member Data l0_signatures.EnumInfo.enum_type

1
EnumType enum_type

Member Data l0_signatures.EnumInfo.variants

1
Dict variants

Class l0_signatures::SignatureResolver

Resolves top-level type signatures across all modules.

The resolver processes:

  • Function signatures (parameters and return types).

  • Struct field types.

  • Enum variant payload types.

  • Type alias targets.

  • Module-level constant (let) types.

It also performs cycle detection for value-type definitions.

Member Data l0_signatures.SignatureResolver.cu

1
l0_signatures.SignatureResolver::cu

Member Data l0_signatures.SignatureResolver.module_envs

1
l0_signatures.SignatureResolver::module_envs

Function l0_signatures.SignatureResolver.__init__

1
l0_signatures.SignatureResolver.__init__(self, CompilationUnit cu, Dict[str, ModuleEnv] module_envs)

Initialize the signature resolver.

Parameters:

  • cu: The compilation unit.
  • module_envs: Environments produced by name resolution.

    Function l0_signatures.SignatureResolver.resolve

1
None l0_signatures.SignatureResolver.resolve(self)

Resolve all top-level signatures in the compilation unit.

This iterates through all modules and their declarations, populating the resolution tables and reporting any errors found.

Function l0_signatures.SignatureResolver._resolve_module_signatures

1
None l0_signatures.SignatureResolver._resolve_module_signatures(self, ModuleEnv env)

Resolve all declarations within a single module.

Function l0_signatures.SignatureResolver._emit

1
None l0_signatures.SignatureResolver._emit(self, Diagnostic diag)

Add a diagnostic to the collection.

Function l0_signatures.SignatureResolver._resolve_type_ref

1
Optional[Type] l0_signatures.SignatureResolver._resolve_type_ref(self, ModuleEnv env, TypeRef tref, Optional[Set[Tuple[str, str]]] alias_stack=None)

Resolve a TypeRef in the context of a module environment.

Parameters:

  • env: The current module environment.
  • tref: The TypeRef AST node to resolve.
  • alias_stack: Stack of aliases being resolved (for cycle detection).

Returns: The resolved Type if successful, otherwise None.

Function l0_signatures.SignatureResolver._resolve_type_alias_symbol

1
Optional[Type] l0_signatures.SignatureResolver._resolve_type_alias_symbol(self, ModuleEnv env, Symbol sym, Optional[Set[Tuple[str, str]]] alias_stack=None)

Resolve a TYPE_ALIAS symbol to its target Type .

Caches the result in sym.type . Detects recursive alias cycles.

Parameters:

  • env: Current module environment.
  • sym: The type alias symbol to resolve.
  • alias_stack: Set of alias identifiers currently being resolved.

Returns: The target Type if successful, otherwise None.

Function l0_signatures.SignatureResolver._resolve_struct

1
None l0_signatures.SignatureResolver._resolve_struct(self, ModuleEnv env, StructDecl decl)

Resolve field types for a struct declaration.

Function l0_signatures.SignatureResolver._resolve_enum

1
None l0_signatures.SignatureResolver._resolve_enum(self, ModuleEnv env, EnumDecl decl)

Resolve variant payload types for an enum declaration.

Function l0_signatures.SignatureResolver._resolve_func

1
None l0_signatures.SignatureResolver._resolve_func(self, ModuleEnv env, FuncDecl decl)

Resolve parameter and return types for a function declaration.

Function l0_signatures.SignatureResolver._resolve_type_alias

1
None l0_signatures.SignatureResolver._resolve_type_alias(self, ModuleEnv env, TypeAliasDecl decl)

Resolve the target type for a type alias.

Function l0_signatures.SignatureResolver._resolve_let

1
None l0_signatures.SignatureResolver._resolve_let(self, ModuleEnv env, LetDecl decl)

Resolve or infer the type for a module-level ‘let’ binding.

Function l0_signatures.SignatureResolver._infer_literal_type

1
Optional[Type] l0_signatures.SignatureResolver._infer_literal_type(self, ModuleEnv env, Expr expr)

Infer type from simple literal expressions and struct/enum construction.

Function l0_signatures.SignatureResolver._symbol_is_zero_arg_enum_variant

1
bool l0_signatures.SignatureResolver._symbol_is_zero_arg_enum_variant(self, Symbol sym)

Return whether a symbol names a zero-argument enum variant.

Function l0_signatures.SignatureResolver._enum_type_for_variant_symbol

1
Optional[EnumType] l0_signatures.SignatureResolver._enum_type_for_variant_symbol(self, Symbol sym)

Return the owning enum type for an enum variant symbol.

Function l0_signatures.SignatureResolver._extract_value_type_dependencies

1
Set[Tuple[str, str]] l0_signatures.SignatureResolver._extract_value_type_dependencies(self, Type typ)

Extract type dependencies for value fields only (pointer-free).

Function l0_signatures.SignatureResolver._detect_value_type_cycles

1
None l0_signatures.SignatureResolver._detect_value_type_cycles(self)

Detect and report cycles in value-type definitions.

Value-type cycles (where A contains B and B contains A directly) create infinite-size types and are prohibited. Pointers must be used to break such cycles.