060 reject state mismatch on input

✓ Passing This code compiles and runs correctly.

Code

// TEST: Reject state mismatch - passing wrong state to event
//
// If an event requires [connected] state on input, passing a connection
// without that state (or in a different state) must be rejected.
//
// This is a type error: *Connection[connected] != *Connection
//
// EXPECTED: Compiler error KORU030 - phantom state mismatch

const Connection = struct { id: i32 };

// Event that requires connection in [connected] state
~pub event query { conn: *Connection[connected], sql: []const u8 }
| done

~proc query {
    return .{ .done = .{} };
}

// Event that produces a connection WITHOUT any state annotation
~pub event get_raw_connection {}
| ok *Connection

~proc get_raw_connection {
    return .{ .ok = undefined };
}

// Try to pass unqualified *Connection to event expecting *Connection[connected]
~get_raw_connection()
| ok c |>
    query(conn: c.conn, sql: "SELECT 1")
    | done |> _

pub fn main() void {}
input.kz

Error Verification

Expected Error Pattern

Phantom state mismatch

Actual Compiler Output ✓ Pattern matched

error[KORU030]: Phantom state mismatch: argument 'conn' has no tracked phantom state, but event requires '[connected]'. The value must be in state 'input:connected'.
  --> phantom_semantic_check:30:0

❌ Compiler coordination error: Phantom semantic validation failed
error: CompilerCoordinationFailed
/Users/larsde/src/koru/tests/regression/300_ADVANCED_FEATURES/330_PHANTOM_TYPES/330_060_reject_state_mismatch_on_input/backend.zig:9407:17: 0x104e6e4af in emit (backend)
                return error.CompilerCoordinationFailed;
                ^
/Users/larsde/src/koru/tests/regression/300_ADVANCED_FEATURES/330_PHANTOM_TYPES/330_060_reject_state_mismatch_on_input/backend.zig:9491:28: 0x104e6f2b7 in main (backend)
    const generated_code = try RuntimeEmitter.emit(compile_allocator, final_ast);
                           ^

Test Configuration

MUST_FAIL