0%

eval-codegen

Goal

Value-carrying labeled-block exit lowered identically in eval + LLVM, leak-clean.

Implementation Sketch

Lower via desugar-to-loop or first-class block node (whichever canon/IR models cleanly); enforce backend parity + ARC correctness.

Spec References

labeled-block-early-exit-proposal.md Desugaring; CLAUDE.md Fix Completeness (dual-execution parity).

Work Items

  • Lower the value-carrying labeled-block exit in BOTH backends (eval + LLVM) so break:label value yields the block’s value. Conceptual desugar loop:name { break:name { body } } (proposal) OR first-class block node — whichever the canon/IR already models cleanly; the two backends MUST agree (parity).
  • ORI_CHECK_LEAKS=1 zero leaks for block bodies that allocate; verify break-from-nested-block drops intermediate values correctly (ARC/AIMS).