✓
Passing Passing: the compiler rejects this program as expected.
Code
// The void half of the linear rule applies to destructures too: a branch
// that carries no payload has nothing to destructure — KORU101.
~import std/io
~pub tor check {}
| ok { code: i64, note: string }
| empty
~proc check|zig { return .{ .empty = .{} }; }
~check()
| ok { code } |> std/io:print.ln("{{ code:d }}")
| empty { x } |> std/io:print.ln("bad")
Actual compiler output
error[KORU101]: branch 'empty' carries no payload — remove the binding '{...}'
--> tests/regression/000_CORE_LANGUAGE/020_EVENTS_FLOWS/020_020_reject_destructure_void_branch/input.kz:13:0
error[KORU036]: destructure field 'x' is not a field of branch 'empty' (payload fields: )
--> tests/regression/000_CORE_LANGUAGE/020_EVENTS_FLOWS/020_020_reject_destructure_void_branch/input.kz:13:0
❌ Compiler coordination error: Incomplete branch coverage
(set KORU_BACKEND_TRACE=1 for the backend return trace)Must contain:
carries no payloadFlows
flow ~check click a branch to expand · @labels scroll to their anchor
check
Test Configuration
MUST_ERROR