✓
Passing Passing: the compiler rejects this program as expected.
Code
// The void half of the linear bind-or-discard rule (KORU101):
// a branch that carries NO payload must be handled bindingless — there is
// nothing to bind, so there is nothing to discard either. `| done _ |>` is
// a lie about the data flowing through the program.
//
// Mirror of KORU030 ("branch has payload but no binding"). Together they are
// the full linear discipline: payload => bind or discard; void => bindingless.
const std = @import("std");
~tor check {}
| ok i32
| done
~proc check|zig {
return .done;
}
~check()
| ok _ |> _
| done _ |> _
Actual compiler output
error[KORU101]: branch 'done' carries no payload — remove the binding '_'
--> tests/regression/000_CORE_LANGUAGE/020_EVENTS_FLOWS/020_015_reject_binding_on_void_branch/input.kz:20:0
❌ Compiler coordination error: Incomplete branch coverage
(set KORU_BACKEND_TRACE=1 for the backend return trace)Must fail at runtime with:
CONTAINS KORU101
CONTAINS carries no payloadFlows
flow ~check click a branch to expand · @labels scroll to their anchor
check
Test Configuration
MUST_ERROR