✓
Passing This code compiles and runs correctly.
Code
// TEST: Array literal must target a slice type
//
// Koru array literal syntax ([a, b, c]) is only valid when the target
// parameter is a slice (e.g. []const i32). Using it for a non-slice
// parameter must fail.
~event take { numbers: i32 }
| done
~proc take {
return .{ .done = {} };
}
~take(numbers: [1, 2, 3])
| done |> _
Error Verification
Expected Error Pattern
Array literal must target a slice type
This test MUST FAIL to ensure array literals only apply to slice parameters.
Expected error: array literal used for non-slice field (numbers: i32).
If this test passes, the compiler is accepting untyped/invalid array literals.Actual Compiler Output
thread 22595195 panic: attempt to unwrap error: ArrayLiteralInvalidTarget
/Users/larsde/src/koru/src/emitter_helpers.zig:7054:9: 0x1022cd11f in emitArrayLiteralForField (backend)
return error.ArrayLiteralInvalidTarget;
^
/Users/larsde/src/koru/src/emitter_helpers.zig:4206:21: 0x1022ca2eb in emitArgs (backend)
try emitArrayLiteralForField(emitter, ctx, field_info, arg.value);
^
/Users/larsde/src/koru/src/emitter_helpers.zig:3821:5: 0x1022d162f in emitInvocation (backend)
try emitArgs(emitter, ctx, invocation.args, &invocation.path);
^
/Users/larsde/src/koru/src/emitter_helpers.zig:3314:13: 0x1022f4977 in emitFlow (backend)
try emitInvocation(emitter, ctx, &flow.invocation, first_result);
^
/Users/larsde/src/koru/src/visitor_emitter.zig:1225:17: 0x10232c553 in visitItem (backend)
try emitter.emitFlow(self.code_emitter, &ctx, &flow);
^
/Users/larsde/src/koru/src/visitor_emitter.zig:593:13: 0x102345a73 in emit (backend)
try self.visitItem(item, source_file.module_annotations, source_file.items);
^
/Users/larsde/src/koru/tests/regression/000_CORE_LANGUAGE/030_TYPES_VALUES/030_014_array_literal_invalid_target/backend_output_emitted.zig:1187:57: 0x1022096e7 in handler (backend)
visitor_emitter.emit(ctx.ast) catch unreachable;
^
/Users/larsde/src/koru/tests/regression/000_CORE_LANGUAGE/030_TYPES_VALUES/030_014_array_literal_invalid_target/backend_output_emitted.zig:1045:97: 0x1021f3a4f in handler (backend)
const nested_result_1 = koru_std.compiler.emit_zig_event.handler(.{ .ctx = c2 });
^
/Users/larsde/src/koru/tests/regression/000_CORE_LANGUAGE/030_TYPES_VALUES/030_014_array_literal_invalid_target/backend_output_emitted.zig:678:121: 0x1021e27ab in handler (backend)
const nested_result_4 = koru_std.compiler.emission_event.handler(.{ .ctx = c4 });
^
/Users/larsde/src/koru/tests/regression/000_CORE_LANGUAGE/030_TYPES_VALUES/030_014_array_literal_invalid_target/backend.zig:9324:81: 0x1021e23d7 in emit (backend)
const result = backend_output.koru_std.compiler.coordinate_event.handler(.{ .program_ast = source_ast, .allocator = allocator });
^
/Users/larsde/src/koru/tests/regression/000_CORE_LANGUAGE/030_TYPES_VALUES/030_014_array_literal_invalid_target/backend.zig:9418:51: 0x1021e3077 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: 0x1021ea64b in main (backend)
const result = root.main() catch |err| {
^
???:?:?: 0x19815dd53 in ??? (???)
???:?:?: 0x0 in ??? (???)
/Users/larsde/src/koru/scripts/regression_lib.sh: line 33: 57481 Abort trap: 6 ./backend outputTest Configuration
MUST_FAIL