✓
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 7103760 panic: attempt to unwrap error: ArrayLiteralInvalidTarget
/Users/larsde/src/koru/src/emitter_helpers.zig:7036:9: 0x102ff7bbb in emitArrayLiteralForField (backend)
return error.ArrayLiteralInvalidTarget;
^
/Users/larsde/src/koru/src/emitter_helpers.zig:4185:21: 0x102ff4d87 in emitArgs (backend)
try emitArrayLiteralForField(emitter, ctx, field_info, arg.value);
^
/Users/larsde/src/koru/src/emitter_helpers.zig:3800:5: 0x102ffc0cb in emitInvocation (backend)
try emitArgs(emitter, ctx, invocation.args, &invocation.path);
^
/Users/larsde/src/koru/src/emitter_helpers.zig:3293:13: 0x10301f413 in emitFlow (backend)
try emitInvocation(emitter, ctx, &flow.invocation, first_result);
^
/Users/larsde/src/koru/src/visitor_emitter.zig:1225:17: 0x103056353 in visitItem (backend)
try emitter.emitFlow(self.code_emitter, &ctx, &flow);
^
/Users/larsde/src/koru/src/visitor_emitter.zig:593:13: 0x10306f873 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:1183:57: 0x102f394bf 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:1037:97: 0x102f23827 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:675:121: 0x102f126df 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: 0x102f12363 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: 0x102f12f7f in main (backend)
const generated_code = try RuntimeEmitter.emit(compile_allocator, final_ast);
^
/opt/homebrew/Cellar/zig/0.15.1/lib/zig/std/start.zig:627:37: 0x102f1a553 in main (backend)
const result = root.main() catch |err| {
^
???:?:?: 0x19b659d53 in ??? (???)
???:?:?: 0x0 in ??? (???)
/Users/larsde/src/koru/scripts/regression_lib.sh: line 33: 8434 Abort trap: 6 ./backend outputTest Configuration
MUST_FAIL