You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Executes the decision requested in #555: **back-port the loud failure
now, implement dispatch later.**
- `lib/codegen.ml`: `ExprHandle`/`ExprResume` → `Error
UnsupportedFeature`, mirroring `codegen_gc.ml:896-948`. The ADR-013/016
CPS line covers Async-effect *calls*, not `handle` expressions — async
lowering unaffected (CPS harnesses stay green).
- `lib/js_codegen.ml` + `lib/codegen_deno.ml`: `failwith` at
handle/resume sites → converted to `Error` by each backend's existing
entry wrapper. Declared `/ Async` rows on Deno-ESM still lower via
`async function` (`fd_is_async`).
- New regression suite **E2E Handler Fence (#555)** + fixture
`handle_return_arm.affine` (the execution-proven 41-vs-42 probe):
interpreter must keep evaluating it; all three compile backends must
fail loudly naming the fence.
Gate: 385 tests green (381 + 4 new). The first runtime-behaviour tests
effect handlers have ever had on the compile backends.
Does NOT close#555 — general handler dispatch remains open there; this
removes the silent-wrong-value class only (v1 ledger #563, T0 item 2).
Follow-up (deliberate, after #565 lands to avoid a doc conflict):
one-line CAPABILITY-MATRIX effects-row touch-up from "silently drop
handler arms" to "fail loudly (fence landed)".
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
0 commit comments