prometeu-studio/docs/pbs/pull-requests/PR-017-pbs-const-evaluation-and-dependency-rules.md
2026-03-24 13:42:21 +00:00

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.