✓
Passing Passing: the compiler rejects this program as expected.
Code
// Glyph discipline, the RULE-ARM case — sibling of 690_357 (`=>` in a
// `! query` sweep arm). A `=>` inside a `! row`/`! preorder` arm of
// std/store:rule can never construct: the arm body grafts into the same
// synthesized VOID per-row unit the query sweep uses, so the enclosing
// tor's branch cannot be produced from in there. Without the wall the
// construct survives checking (the graft is marked is_transformed_subtree,
// which checkers skip) and dies in emitted Zig. The wall lives in the
// store:new transform's qsites collection, pre-graft.
import std/io
import std/store
std/store:new(box, capacity: 4) { n: i64 }
tor work {}
| ran
| rejected
std/store:rule(box)
! row e |> std/io:print.ln("row {{ e.n:d }}") => ran
std/store:insert(box) { n: 1 }
| row _ |> std/io:print.ln("ok")
| full |> std/io:print.ln("full")
Actual compiler output
error[KORU102]: std/store:rule(box): `=>` inside a `! row` arm has nothing to construct — the arm body grafts into a void synthesized unit, so a branch of the enclosing tor cannot be produced from in there. Hand the verdict out through the enclosing surface and branch after it returns.
--> tests/regression/600_STDLIB/690_STORE/690_360_construct_glyph_in_rule_arm/input.k:18:0
error[KORU161]: std/store:rule(box): unknown store - no std/store:new(box) found (or the store is a capacity-1 value - queries need a container, declare `capacity: N` at create)
--> tests/regression/600_STDLIB/690_STORE/690_360_construct_glyph_in_rule_arm/input.k:17:0
error[KORU161]: std/store:insert: unknown store 'box' - no std/store:new(box) found
--> tests/regression/600_STDLIB/690_STORE/690_360_construct_glyph_in_rule_arm/input.k:20:0Compiler must reject:
Compilation must fail with a diagnostic.
Flows
flow ~new click a branch to expand · @labels scroll to their anchor
new (box, capacity: 4, source: n: i64)
flow ~rule click a branch to expand · @labels scroll to their anchor
rule (box)
flow ~insert click a branch to expand · @labels scroll to their anchor
insert (box, source: n: 1)
Test Configuration
MUST_ERROR