○
Planned This feature is planned but not yet implemented.
ECOLOGY: User-defined transforms should work like stdlib
Failure Output
Showing last 10 of 23 lines
error: the following command failed with 1 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/320_STDLIB/320_082_ecology_custom_transform/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 1 errors
error: the following build command failed with exit code 1:
.zig-cache/o/b6dcac58e8c7744ebcf74ee51ed3ceab/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/320_STDLIB/320_082_ecology_custom_transform .zig-cache /var/folders/9k/sprb5df11_79lbnlyttj6sfm0000gn/T/koru-regression-cache --seed 0xbf538218 -Zed7e574d844b541e Code
// ECOLOGY TEST: User-defined [transform] events should work like stdlib ones
//
// ISSUE: The transform mechanism shouldn't require magic. A user should be
// able to define their own [transform] event and have it work exactly like
// ~for, ~if, ~capture from $std/control.
//
// This test captures the intention that transforms are NOT special-cased
// for stdlib - they're a general mechanism.
~import "$std/io"
// User-defined transform event - should work just like stdlib transforms
~[keyword|comptime|transform]
pub event repeat {
times: i32,
invocation: *const Invocation,
item: *const Item,
program: *const Program,
}
| done { * }
// The transform proc - generates a simple loop
~proc repeat {
// For now, just return unchanged - the INTENTION is that this should
// be able to generate code like ~for does
return .{ .done = .{ .program = program } };
}
// Use our custom transform
~repeat(3)
| done |> std.io:println(text: "Custom transform executed")