020 generics ring buffer e2e

○ Planned This feature is planned but not yet implemented.

Full end-to-end ring buffer demonstrating generics-as-library pattern

Failure Output

Showing last 10 of 19 lines
error: the following command failed with 2 compilation errors:
/opt/homebrew/Cellar/zig/0.15.1/bin/zig build-exe -ODebug --dep ast --dep ast_functional --dep ast_serializer --dep log --dep emitter_helpers --dep tap_registry --dep runtime_registry --dep tap_transformer --dep visitor_emitter --dep parser --dep emit_build_zig --dep shape_checker --dep flow_checker --dep phantom_semantic_checker --dep auto_discharge_inserter --dep dead_strip --dep purity_analyzer --dep errors --dep type_registry --dep annotation_parser --dep transform_pass_runner --dep codegen_utils --dep continuation_codegen --dep template_utils --dep liquid -Mroot=/Users/larsde/src/koru/tests/regression/700_EVENT_GLOBBING/700_020_generics_ring_buffer_e2e/backend.zig -ODebug --dep errors -Mast=/Users/larsde/src/koru/src/ast.zig -ODebug --dep ast -Mast_functional=/Users/larsde/src/koru/src/ast_functional.zig -ODebug --dep ast -Mast_serializer=/Users/larsde/src/koru/src/ast_serializer.zig -ODebug -Mlog=/Users/larsde/src/koru/src/log.zig -ODebug --dep ast --dep errors --dep log --dep compiler_config --dep type_registry --dep codegen_utils --dep tap_registry --dep compiler_passes/purity_helpers -Memitter_helpers=/Users/larsde/src/koru/src/emitter_helpers.zig -ODebug --dep ast --dep errors --dep log --dep glob_pattern_matcher -Mtap_registry=/Users/larsde/src/koru/src/tap_registry.zig -ODebug -Mruntime_registry=/Users/larsde/src/koru/src/runtime_registry.zig -ODebug --dep ast --dep log --dep tap_registry --dep emitter_helpers --dep compiler_passes/purity_helpers -Mtap_transformer=/Users/larsde/src/koru/src/tap_transformer.zig -ODebug --dep ast --dep log --dep emitter_helpers --dep tap_registry --dep type_registry --dep annotation_parser --dep codegen_utils -Mvisitor_emitter=/Users/larsde/src/koru/src/visitor_emitter.zig -ODebug --dep ast --dep lexer --dep errors --dep log --dep type_registry --dep expression_parser --dep union_collector --dep module_resolver -Mparser=/Users/larsde/src/koru/src/parser.zig -ODebug -Memit_build_zig=/Users/larsde/src/koru/src/emit_build_zig.zig -ODebug --dep ast --dep errors --dep log --dep phantom_parser --dep type_inference --dep branch_checker -Mshape_checker=/Users/larsde/src/koru/src/shape_checker.zig -ODebug --dep ast --dep errors --dep log --dep branch_checker --dep annotation_parser -Mflow_checker=/Users/larsde/src/koru/src/flow_checker.zig -ODebug --dep ast --dep errors --dep log --dep phantom_parser -Mphantom_semantic_checker=/Users/larsde/src/koru/src/phantom_semantic_checker.zig -ODebug --dep ast --dep ast_functional --dep errors --dep log --dep phantom_parser -Mauto_discharge_inserter=/Users/larsde/src/koru/src/auto_discharge_inserter.zig -ODebug --dep ast -Mdead_strip=/Users/larsde/src/koru/src/dead_strip.zig -ODebug --dep ast -Mpurity_analyzer=/Users/larsde/src/koru/src/compiler_passes/purity_analyzer.zig -ODebug -Merrors=/Users/larsde/src/koru/src/errors.zig -ODebug --dep ast --dep log -Mtype_registry=/Users/larsde/src/koru/src/type_registry.zig -ODebug -Mannotation_parser=/Users/larsde/src/koru/src/annotation_parser.zig -ODebug --dep ast --dep log --dep annotation_parser --dep template_utils --dep ast_functional --dep liquid -Mtransform_pass_runner=/Users/larsde/src/koru/src/transform_pass_runner.zig -ODebug -Mcodegen_utils=/Users/larsde/src/koru/src/codegen_utils.zig -ODebug --dep ast --dep codegen_utils -Mcontinuation_codegen=/Users/larsde/src/koru/src/continuation_codegen.zig -ODebug --dep ast -Mtemplate_utils=/Users/larsde/src/koru/src/template_utils.zig -ODebug -Mliquid=/Users/larsde/src/koru/src/liquid.zig -ODebug -Mcompiler_config=/Users/larsde/src/koru/src/compiler_config.zig -ODebug --dep ast --dep lexer -Mcompiler_passes/purity_helpers=/Users/larsde/src/koru/src/compiler_passes/purity_helpers.zig -ODebug -Mglob_pattern_matcher=/Users/larsde/src/koru/src/glob_pattern_matcher.zig -ODebug -Mlexer=/Users/larsde/src/koru/src/lexer.zig -ODebug --dep lexer --dep ast -Mexpression_parser=/Users/larsde/src/koru/src/expression_parser.zig -ODebug --dep ast -Munion_collector=/Users/larsde/src/koru/src/union_collector.zig -ODebug --dep config --dep log -Mmodule_resolver=/Users/larsde/src/koru/src/module_resolver.zig -ODebug -Mphantom_parser=/Users/larsde/src/koru/koru_std/phantom_parser.zig -ODebug --dep ast --dep errors -Mtype_inference=/Users/larsde/src/koru/src/type_inference.zig -ODebug -Mbranch_checker=/Users/larsde/src/koru/src/branch_checker.zig -ODebug --dep log -Mconfig=/Users/larsde/src/koru/src/config.zig --cache-dir .zig-cache --global-cache-dir /var/folders/9k/sprb5df11_79lbnlyttj6sfm0000gn/T/koru-regression-cache --name backend --zig-lib-dir /opt/homebrew/Cellar/zig/0.15.1/lib/zig/ --listen=-

Build Summary: 0/3 steps succeeded; 1 failed
install transitive failure
+- install backend transitive failure
   +- compile exe backend Debug native 2 errors

error: the following build command failed with exit code 1:
.zig-cache/o/ff4901a1381308240fa2c3c0af79ea0e/build /opt/homebrew/Cellar/zig/0.15.1/bin/zig /opt/homebrew/Cellar/zig/0.15.1/lib/zig /Users/larsde/src/koru/tests/regression/700_EVENT_GLOBBING/700_020_generics_ring_buffer_e2e .zig-cache /var/folders/9k/sprb5df11_79lbnlyttj6sfm0000gn/T/koru-regression-cache --seed 0x85d2312c -Z3725511ece15975d

Code

// Test: Full end-to-end ring buffer using event globbing
//
// This demonstrates the complete generics-as-library pattern:
// 1. Declare generic type with glob: ~event ring.*
// 2. Instantiate with params: ~ring.new[T:u32;N:64](...)
// 3. Use generated type: ring.enqueue(42)
//
// The ring buffer is fully typed at compile time.
// No runtime overhead, no type erasure, no boxing.

~[comptime|transform]pub event ring.* {
    event_name: []const u8,
    expr: Expression,
    source: Source,
    item: *const Item,
    program: *const Program,
    allocator: std.mem.Allocator,
}
| transformed *const Program

~proc ring.* {
    // Implementation would parse params, generate full ring buffer type
    // with enqueue, dequeue, peek, etc.
    // See 700_011 for param extraction example.

    // For e2e test, verify the full flow works:
    // - Parser accepts ring.new[T:u32;N:64]
    // - Transform runner matches ring.* glob
    // - Transform extracts T, N params
    // - Transform generates typed Zig struct
    // - Generated code compiles and runs

    return .{ .transformed = program };
}

// Full usage example
~ring.new[T:u32;N:64](name: "event_queue")

pub fn main() void {
    // Use the generated ring buffer
    var eq = event_queue{};
    eq.enqueue(42);
    eq.enqueue(123);

    const val = eq.dequeue();
    std.debug.print("Dequeued: {}\n", .{val});
}
input.kz