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 valueyields the block’s value. Conceptual desugarloop: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=1zero leaks for block bodies that allocate; verify break-from-nested-block drops intermediate values correctly (ARC/AIMS).