✓
Passing Passing: the compiler rejects this program as expected.
Code
// std/channel — `!` arms don't attach to the declaration. Consumers join at
// the bare reference `std/channel(inbox)`, program-wide, so the consumer set
// has exactly one place to be read.
import std/io
import std/proto
import std/channel
std/proto(Reading) {
id: u64
}
std/channel:new(inbox, capacity: 8) { reading: Reading }
! reading v |> std/io:print.ln("{{ v.id:d }}")
Actual compiler output
error[KORU161]: std/channel:new(inbox): `! reading` attaches at the join, not the declaration — `std/channel(inbox) ! reading v |> ...` collects consumers program-wide
--> tests/regression/600_STDLIB/699_CHANNEL/699_011_arm_under_decl_refused/input.k:12:0Compiler must reject:
Compilation must fail with a diagnostic.
Flows
flow ~std/proto click a branch to expand · @labels scroll to their anchor
std/proto (Reading, source: id: u64)
flow ~new click a branch to expand · @labels scroll to their anchor
new (expr: inbox, capacity: 8, source: reading: Reading)
Test Configuration
MUST_ERROR