✓
Passing Passing: the compiler rejects this program as expected.
Code
// Test: Event call missing a required parameter.
//
// REVERSED 2026-08-02. This test used to read:
//
// // ACCEPTABLE: Backend Zig error "missing struct field: y"
// // (We don't re-implement Zig's type system)
//
// and it pinned Zig's `missing struct field: y` as the expected outcome. So the
// gap was not an oversight — it was seen, reasoned about, and written down as a
// deliberate decision, in the negative-test cluster, ten months ago.
//
// The reasoning does not survive contact with the other three cells. Arity is
// not Zig's type system, it is Koru's calling convention, and delegating it
// meant inheriting the host's blind spot: an omitted argument the impl never
// READS produced no error from anyone. That program compiled and RAN
// (400_183). An omitted `Expression` param was quieter still — captured source
// text is not a struct field, so the host had nothing to miss (400_184).
//
// Zig covered the two cells where the parameter is used, loudly enough that
// nobody counted the two where it is not. KORU080 now covers all four, and this
// test pins the Koru diagnostic instead of the borrowed one.
~tor foo { x: i32, y: i32 }
~foo(x: 1)
Actual compiler output
error[KORU080]: 'foo' requires input 'y' — it is declared with no default and no `?`, and this call does not supply it
--> tests/regression/500_INTEGRATION_TESTING/510_NEGATIVE_TESTS/510_063_missing_event_param/input.kz:24:0
❌ Compiler coordination error: Auto-discharge failed (multiple disposal options or no disposal event)
(set KORU_BACKEND_TRACE=1 for the backend return trace)Must fail at runtime:
Program must error when executed.
Error output must contain
requires input 'y'Flows
flow ~foo click a branch to expand · @labels scroll to their anchor
foo (x: 1)
Test Configuration
MUST_ERROR