✓
Passing Passing: the compiler rejects this program as expected.
Code
// Pins that the KORU140 pick-wall names EVERY colliding vocabulary, not the
// first two it happens to find. 641_013 pins the two-owner case; this is the
// same wall with a third owner, which is where a fixed-arity outcome starts
// lying: it reports a pair, you qualify to escape it, and the one it never
// mentioned ambushes you as a fresh error on the next build.
//
// The guarded shape is the diagnostic's COMPLETENESS. A pick-wall exists to
// hand the author the whole set to choose from, so naming a subset defeats the
// wall's only purpose while still looking like it fired correctly.
import std/io
import app/alpha
import app/beta
import app/gamma
[with]app/alpha:ping(msg: "seed"): s |> [with]app/beta:ping(msg: s): t |> [with]app/gamma:ping(msg: t): u |> ping(msg: u): v |> std/io:print.ln("picked={{ v:s }}")
Supporting Files
// Local vocabulary A — defines `ping`.
pub tor ping { msg: string } -> string
ping -> msg
// Local vocabulary B — ALSO defines `ping`.
pub tor ping { msg: string } -> string
ping -> msg
// Local vocabulary C — the THIRD owner of `ping`, and the one this pin exists
// for: a wall that names only a pair cannot mention it.
pub tor ping { msg: string } -> string
ping -> msg
Actual compiler output
error[KORU140]: bare name 'ping' resolves against more than one opened vocabulary ('app.alpha', 'app.beta' and 'app.gamma') — qualify the call explicitly to pick one
--> tests/regression/600_STDLIB/641_PARSER/641_014_with_collision_names_every_owner/input.k:16:0
❌ Compiler coordination error: error[KORU140]: bare name 'ping' resolves against more than one opened vocabulary ('app.alpha', 'app.beta' and 'app.gamma') — qualify the call explicitly to pick one
(set KORU_BACKEND_TRACE=1 for the backend return trace)Must fail at runtime with:
CONTAINS KORU140
CONTAINS app.alpha
CONTAINS app.beta
CONTAINS app.gammaFlows
flow ~ping click a branch to expand · @labels scroll to their anchor
ping (msg: "seed")
Test Configuration
MUST_ERROR
koru.json:
{
"paths": {
"std": "../../../../../koru_std",
"app": "."
}
}