042 named expression params

○ Planned This feature is planned but not yet implemented.

Should use Pattern Branches instead of named Expression parameters. Pattern Branches are the better mechanism for this.

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/300_ADVANCED_FEATURES/310_COMPTIME/310_042_named_expression_params/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/8730e4be1ba5fe0709787cfb4e8e95bd/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/300_ADVANCED_FEATURES/310_COMPTIME/310_042_named_expression_params .zig-cache /var/folders/9k/sprb5df11_79lbnlyttj6sfm0000gn/T/koru-regression-cache --seed 0xedefaac0 -Zfa7204dcbf1fdf49

Code

// Test 310_042: Named Expression Parameters
//
// This test documents that multiple named Expression parameters in transforms
// are not yet fully supported. See README.md for details.

const std = @import("std");

~[comptime]

// Event with implicit Expression + named Expression parameter
~[keyword|comptime|transform]pub event operation {
    expr: Expression,
    guard: Expression,
    program: *const Program,
    allocator: std.mem.Allocator
}
| transformed *const Program

~proc operation {
    // Both expr and guard should be available as []const u8
    std.debug.print("[operation] expr='{s}' guard='{s}'\n", .{ expr, guard });
    return .{ .transformed = program };
}

// Usage: implicit expr + named guard Expression
~operation(1..N, guard: i > 100)

// Scaffold to make it compile
~event dummy {}
| done

~proc dummy {
    std.debug.print("dummy\n", .{});
    return .{ .done = .{} };
}

~dummy()
| done |> _
input.kz