l0_signatures.py
Module: l0_signatures
Source: compiler/stage1_py/l0_signatures.py Language: Python
Symbols
- l0_signatures
- l0_signatures::StructFieldInfo
- l0_signatures::StructInfo
- l0_signatures::EnumVariantInfo
- l0_signatures::EnumInfo
- l0_signatures::SignatureResolver
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.