006 inline flow chained

✓ Passing This code compiles and runs correctly.

Code

// Test 106: Chained Inline Flow - Multiple Event Calls
// Tests chained continuations: the EXACT bug we found in 1103!
const std = @import("std");

~event add { x: i32, y: i32 }
| done { result: i32 }

~proc add = done { result: x + y }

~event multiply { x: i32, factor: i32 }
| done { result: i32 }

~proc multiply = done { result: x * factor }

~event calculate { a: i32, b: i32, c: i32 }
| done { result: i32 }

// THIS IS THE CRITICAL TEST: Chained continuations
// First: add(a, b) → done with sum
// Then: multiply(sum.result, c) → done with product
~proc calculate = add(x: a, y: b)
| done sum |> multiply(x: sum.result, factor: c)
    | done product |> done { result: product.result }

~event main {}
~proc main {
    const result = calculate_event.handler(.{ .a = 10, .b = 20, .c = 3 });
    std.debug.print("Result: {}\n", .{result.done.result});
}

~main()
input.kz

Expected Output

Result: 90

Test Configuration

MUST_RUN