036 capture nested qualified

✓ Passing This code compiles and runs correctly.

Code

// Test: Nested captures with binding-qualified field assignment
//
// When captures are nested, field names may conflict.
// Use the binding name to qualify which capture to update:
//   captured { outer.count: outer.count + inner.count }
//
// This makes data flow EXPLICIT at the syntax level!

~import "$std/io"
~import "$std/control"

const std = @import("std");

~event print_results { outer_val: i32, inner_val: i32 }

~proc print_results {
    std.debug.print("outer={d}, inner={d}\n", .{outer_val, inner_val});
}

// Outer capture owns `outer_val`, inner capture owns `inner_val`
// First test: just nested captures WITHOUT binding qualification
// Each captured block only updates its OWN capture's field
~capture(init: { outer_val: @as(i32, 0) })
| as outer |> capture(init: { inner_val: @as(i32, 0) })
    | as inner |> captured { inner_val: inner.inner_val + 10 }
    | captured inner_result |> captured { outer_val: outer.outer_val + inner_result.inner_val }
| captured final |> print_results(outer_val: final.outer_val, inner_val: 10)
input.kz

Expected Output

outer=10, inner=10

Test Configuration

MUST_RUN