✓
Passing Passing: the compiler rejects this program as expected.
Code
// ============================================================================
// Pins the non-exhaustiveness wall: a branch handled ONLY behind `when`
// guards (no unguarded else case) is rejected with KORU050 and its teaching
// message. Duplicate-named branches are a comptime expression tool consumed
// by transforms (ruled 2026-07-17), so ambiguity/exhaustiveness is judged
// AFTER transforms — the wall fires post-transform, never in the Stage-A
// frontend.
// ============================================================================
~tor check { x: i32, y: i32 }
| high i32
| low i32
// Invalid: Two when-clauses but NO else case (non-exhaustive).
// The chain below is missing a `| high h |> _` else handler.
~check(x: 10, y: 5)
| high h when h.x > 10 |> _
| high h when h.x > 5 |> _
| low |> _
Actual compiler output
error[KORU050]: branch 'high' has when-guarded handlers but no else case - a fire where every guard is false silently does nothing; add one continuation without 'when'
--> tests/regression/200_COMPILER_FEATURES/210_PARSER/210_007_flow_checker_missing_else/input.kz:16:0
error[KORU030]: branch 'low' has payload but no binding
--> tests/regression/200_COMPILER_FEATURES/210_PARSER/210_007_flow_checker_missing_else/input.kz:19:0
❌ Compiler coordination error: Incomplete branch coverage
(set KORU_BACKEND_TRACE=1 for the backend return trace)Must fail at runtime with:
CONTAINS error[KORU050]
CONTAINS branch 'high' has when-guarded handlers but no else caseFlows
flow ~check click a branch to expand · @labels scroll to their anchor
check (x: 10, y: 5)
Test Configuration
MUST_ERROR