✓
Passing This code compiles and runs correctly.
Code
// Minimal repro for nested recursive event with labels codegen bug
// Issue: Complex nested recursion with multiple labels generates invalid Zig
// Pattern: .continue-outer => , (missing expression)
~event outer-step { i: u32 }
| continue-outer u32
| done-outer u32
~proc outer-step|zig {
if (i < 2) {
return .{ .continue_outer = i };
} else {
return .{ .done_outer = i };
}
}
~event inner-step { i: u32, j: u32 }
| continue-inner { i: u32, j: u32 }
| done-inner u32
~proc inner-step|zig {
if (j < 2) {
return .{ .continue_inner = .{ .i = i, .j = j } };
} else {
return .{ .done_inner = i };
}
}
~event process-pair { i: u32, j: u32 }
| processed { i: u32, j: u32 }
~proc process-pair|zig {
return .{ .processed = .{ .i = i, .j = j } };
}
// Nested recursive loop with labels
~event nested-loop { start: u32 }
| done u32
~nested-loop = outer-step(i: start)
| continue-outer outer |> #inner_start inner-step(i: outer, j: 0)
| continue-inner inner |> process-pair(inner.i, inner.j)
| processed p |> @inner_start(p.i, j: p.j + 1)
| done-inner done_i |> outer-step(i: done_i + 1)
| continue-outer co2 |> @inner_start(i: co2, j: 0)
| done-outer done_o => done done_o
| done-outer done_o => done done_o
~nested-loop(start: 0)
| done _ |> _
Test Configuration
MUST_RUN