1.4 KiB
1.4 KiB
PR-017 - PBS Const Evaluation and Dependency Rules
Briefing
declare const validation only checks explicit type and initializer presence. This PR implements constant-expression legality, dependency ordering, cycle detection, and initializer type compatibility.
Motivation
Const declarations are part of static semantics and must be deterministic across files.
Target
- Const semantic validation layer.
- Diagnostic coverage for constant expression failures.
Scope
- Enforce allowed constant-expression subset.
- Resolve const dependencies module-wide, independent of source-file order.
- Reject cycles and unresolved const references.
- Validate initializer type compatibility with declared const type.
Method
- Build const dependency graph from top-level declarations.
- Evaluate in topological order.
- Emit stable diagnostics for disallowed forms and graph failures.
Acceptance Criteria
- Non-constant initializer forms are rejected deterministically.
- Cross-file const references resolve independent of source order.
- Cycles are rejected deterministically.
- Incompatible const initializer types are rejected.
Tests
- Add const-expression positive/negative fixtures.
- Add cross-file dependency and cycle tests.
- Add type-compatibility tests.
Non-Goals
- General compile-time function execution.
- Runtime const materialization strategy changes.