✓
Passing Passing: the compiler rejects this program as expected.
Code
// std/channel — `|` arms don't parse on the join: consumers are `!` arms;
// the `|` status branches live on the send/recv/close chain steps.
import std/io
import std/proto
import std/channel
std/proto(Reading) {
id: u64
}
std/channel:new(inbox, capacity: 8) { reading: Reading }
std/channel(inbox)
| done |> std/io:print.ln("done")
Actual compiler output
error[KORU161]: std/channel(inbox): `| done` doesn't parse on the join — consumers are `! <kind> <bind> |> ...` arms; the chain steps (`std/channel:send/recv/close`) carry the `|` branches
--> tests/regression/600_STDLIB/699_CHANNEL/699_017_pipe_arm_on_join_refused/input.k:13: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)
flow ~std/channel click a branch to expand · @labels scroll to their anchor
std/channel (inbox)
Test Configuration
MUST_ERROR