branching flow

✓ Passing This code compiles and runs correctly.

Code

// ============================================================================
// VERIFIED REGRESSION TEST - DO NOT MODIFY WITHOUT DISCUSSION
// ============================================================================
// Test 209: Flow with multiple continuation branches
// A synthetic example for visualizing flows where multiple branches continue
// ============================================================================

const std = @import("std");

// Validation events
~event validate { value: i32 }
| valid i32
| invalid []const u8

~proc validate {
    if (value > 0) {
        return .{ .valid = value };
    }
    return .{ .invalid = "Value must be positive" };
}

~event double { value: i32 }
| ok i32

~proc double {
    return .{ .ok = value * 2 };
}

~event triple { value: i32 }
| ok i32

~proc triple {
    return .{ .ok = value * 3 };
}

~event success { result: i32 }
| done

~proc success {
    std.debug.print("Success: {}\n", .{result});
    return .{ .done = .{} };
}

~event failure { msg: []const u8 }
| done

~proc failure {
    std.debug.print("Failure: {s}\n", .{msg});
    return .{ .done = .{} };
}

// Flow with multiple branching paths
~validate(value: 42)
| valid v |> double(value: v)
    | ok doubled |> success(result: doubled)
        | done |> _
| invalid e |> triple(value: -1)
    | ok _ |> failure(msg: e)
        | done |> _
input.kz