005 impure event error

✓ Passing This code compiles and runs correctly.

Code

input.kz

Error Verification

Expected Error Pattern

MUST_FAIL

Actual Compiler Output

[TEST] Building mock lookup map
[TEST] Transformed program has 15 items:
[TEST]   [0] flow
[TEST]       invocation: fetch-user
[TEST]   [1] other
[TEST]   [2] other
[TEST]   [3] other
[TEST]   [4] other
[TEST]   [5] other
[TEST]   [6] other
[TEST]   [7] other
[TEST]   [8] other
[TEST]   [9] event_decl
[TEST]   [10] proc_decl
[TEST]   [11] other
[TEST]   [12] event_decl
[TEST]   [13] proc_decl
[TEST]   [14] other
[TEST] Found 1 transformed flows
[TEST] Purity walk complete, 2 impure events
thread 97458611 panic: Test 'Impure events should error' has impure events without mocks:
  - fetch-user
  - save-log

/Users/larsde/src/koru/tests/regression/300_ADVANCED_FEATURES/395_TESTING/395_005_impure_event_error/backend_output_emitted.zig:2935:39: 0x102fde517 in handler (backend_output)
                        @panic(err_msg.items);
                                      ^
/Users/larsde/src/koru/tests/regression/300_ADVANCED_FEATURES/395_TESTING/395_005_impure_event_error/backend_output_emitted.zig:5439:39: 0x102e565e7 in call_handler_testing_test (backend_output)
        const result = handler.handler(input);
                                      ^
/Users/larsde/src/koru/src/transform_pass_runner.zig:870:44: 0x102fe79d3 in applyTransform (backend_output)
    const result = try transform.handler_fn(handler_node, handler_program, allocator);
                                           ^
/Users/larsde/src/koru/src/transform_pass_runner.zig:718:42: 0x102e55043 in walkNode (backend_output)
                return try applyTransform(node, position, program, transform, allocator);
                                         ^
/Users/larsde/src/koru/src/transform_pass_runner.zig:684:36: 0x102e54b27 in walkNode (backend_output)
        const result = try walkNode(child, program, transforms, allocator, childPosition(node, child, position));
                                   ^
/Users/larsde/src/koru/src/transform_pass_runner.zig:684:36: 0x102e54b27 in walkNode (backend_output)
        const result = try walkNode(child, program, transforms, allocator, childPosition(node, child, position));
                                   ^
/Users/larsde/src/koru/src/transform_pass_runner.zig:684:36: 0x102e54b27 in walkNode (backend_output)
        const result = try walkNode(child, program, transforms, allocator, childPosition(node, child, position));
                                   ^
/Users/larsde/src/koru/src/transform_pass_runner.zig:684:36: 0x102e54b27 in walkNode (backend_output)
        const result = try walkNode(child, program, transforms, allocator, childPosition(node, child, position));
                                   ^
/Users/larsde/src/koru/src/transform_pass_runner.zig:684:36: 0x102e54b27 in walkNode (backend_output)
        const result = try walkNode(child, program, transforms, allocator, childPosition(node, child, position));
                                   ^
/Users/larsde/src/koru/src/transform_pass_runner.zig:606:24: 0x102e546c3 in walkOnce (backend_output)
    return try walkNode(root, program, transforms, allocator, .none);
                       ^
/Users/larsde/src/koru/src/transform_pass_runner.zig:580:36: 0x102e55e83 in walkAndTransform (backend_output)
        const result = try walkOnce(current_program, transforms, allocator);
                                   ^
/Users/larsde/src/koru/tests/regression/300_ADVANCED_FEATURES/395_TESTING/395_005_impure_event_error/backend_output_emitted.zig:5543:62: 0x102e5601b in run_pass (backend_output)
    const result = try transform_pass_runner.walkAndTransform(program, transforms, allocator);
                                                             ^
/Users/larsde/src/koru/tests/regression/300_ADVANCED_FEATURES/395_TESTING/395_005_impure_event_error/backend_output_emitted.zig:1438:75: 0x102e2fefb in handler (backend_output)
                        const post_transform_ast = backend_output.run_pass("transform", ctx.ast, ctx.allocator) catch |err| {
                                                                          ^
/Users/larsde/src/koru/tests/regression/300_ADVANCED_FEATURES/395_TESTING/395_005_impure_event_error/backend_output_emitted.zig:859:111: 0x102e2d063 in handler (backend_output)
                                const nested_result_1 = koru_std.koru_compiler.evaluate_comptime_event.handler(.{ .ctx = c2 });
                                                                                                              ^
/Users/larsde/src/koru/tests/regression/300_ADVANCED_FEATURES/395_TESTING/395_005_impure_event_error/backend_output_emitted.zig:675:94: 0x102e2c9af in handler (backend_output)
                        const nested_result_0 = koru_std.koru_compiler.frontend_event.handler(.{ .ctx = c0 });
                                                                                             ^
/Users/larsde/src/koru/tests/regression/300_ADVANCED_FEATURES/395_TESTING/395_005_impure_event_error/backend_output_emitted.zig:5572:67: 0x102e2c7d3 in koru_coordinate (backend_output)
    const result = koru_std.koru_compiler.coordinate_event.handler(.{
                                                                  ^
/Users/larsde/src/koru/tests/regression/300_ADVANCED_FEATURES/395_TESTING/395_005_impure_event_error/backend.zig:90:39: 0x10323f2cb in emit (backend)
        const result = koru_coordinate(source_ast, &allocator);
                                      ^
/Users/larsde/src/koru/tests/regression/300_ADVANCED_FEATURES/395_TESTING/395_005_impure_event_error/backend.zig:190:51: 0x10323fbeb in main (backend)
    const generated_code = try RuntimeEmitter.emit(compile_allocator, final_ast);
                                                  ^
/opt/homebrew/Cellar/zig/0.15.2_1/lib/zig/std/start.zig:627:37: 0x1032458a7 in main (backend)
            const result = root.main() catch |err| {
                                    ^
???:?:?: 0x18da2fdff in ??? (???)
???:?:?: 0x0 in ??? (???)
/Users/larsde/src/koru/scripts/regression_lib.sh: line 256: 97467 Abort trap: 6           ./backend output

Test Configuration

MUST_FAIL

Expected Error:

impure events without mocks