crates.sage_ir.modules
8 anchors
| Anchor | Implementation | Tests |
|---|---|---|
| crates.sage_ir.modules (8) | 7 Implemented1 TODO | 4 Implemented8 TODO |
| crates.sage_ir.modules.expand (4) | 4 Implemented | 2 Implemented4 TODO |
completeness | Implemented | ImplementedTODO |
Exhaustive absence requires complete expansion. Published symbols are safe to use even when expansion is incomplete, but an omitted symbol supports a definite negative answer only when expansion is complete for that semantic question. This is the expansion consequence of Incompleteness is an explicit terminal outcome. | ||
dependencies | Implemented | TODO |
Expansion observes expansion inputs, never checked semantic detail. A module expansion may depend on parsed item identities, macro resolution and definitions, generated output, and completeness facts. It must not depend on item signatures, trait solutions, or function bodies. | ||
direct_members | Implemented | TODO |
Expansion returns direct module members, not a visible-name environment. The result preserves deterministic order and provenance for source and generated direct items. Child-module members remain in the child, while imports and namespace lookup are interpreted later by resolution. | ||
recursion_and_fixpoint | Implemented | ImplementedTODO |
Recursive expansion and same-module fixed points are distinct. Recursive processing expands invocations emitted directly by another invocation. Salsa fixed-point recovery is used only when resolving a macro requires the provisional expanded members of that same module; convergence does not imply completeness. | ||
| crates.sage_ir.modules.parse (4) | 3 Implemented1 TODO | 2 Implemented4 TODO |
dependencies | Implemented | TODO |
The parse query depends only on parse inputs. Parsing one module may read its source, scope, edition, compilation configuration, and generated parse source, but never resolved names, checked interfaces, bodies of other items, or trait results. | ||
detail_firewall | Implemented | ImplementedTODO |
Item identity is separate from tracked syntax detail. Rebuilding a module may update an item’s CST or absolute location without minting a new symbol when its semantic identity is unchanged. Every represented definition owns a separate CST stash so an equal sibling can be backdated independently. This applies Symbols form the uniform semantic identity family and Stash for type-level interning at the parse boundary. | ||
recovery_completeness | TODO | TODO |
Parse recovery never makes absence conclusive. An error item or error CST node is terminal for the current parse, but any consumer asking an exhaustive question must treat the surrounding represented set as incomplete unless it can prove the error irrelevant to that question. This is the parsing consequence of Incompleteness is an explicit terminal outcome. | ||
syntax_identities | Implemented | ImplementedTODO |
Parsing publishes syntax-backed identities, not semantic conclusions. A represented item has stable local identity, self-contained CST, ordering, ownership, and provenance. Resolution and checking remain downstream operations, and malformed or unsupported top-level syntax is represented explicitly rather than accepted as a definition. Tree-sitter is temporary parser machinery under Tree-sitter for parsing, not the published identity or syntax representation. | ||