✗
Failing This test is currently failing.
Failed: backend
Failure Output
Showing last 10 of 18 lines
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/217926cbde0eb3d028a0405bc85c75c9/build /opt/homebrew/Cellar/zig/0.15.2_1/bin/zig /opt/homebrew/Cellar/zig/0.15.2_1/lib/zig /Users/larsde/src/koru/tests/regression/200_COMPILER_FEATURES/210_PARSER/210_046_implicit_expression_with_semicolon .zig-cache /var/folders/9k/sprb5df11_79lbnlyttj6sfm0000gn/T/koru-regression-cache --seed 0x25280db5 -Z6339c2e9a
... [truncated - 8KB total] Code
// Test 210_046: Implicit Expression with Semicolon
// Validates that semicolons inside an Expression parameter are captured as
// part of the opaque text — NOT treated as parser-level separators.
//
// Background: when a DSL author wants multi-part call-site syntax for a
// keyword-like Expression, the convention is to use ';' inside the Expression
// (which the parser captures verbatim), letting ',' remain available as the
// parser-level argument separator. The parser is hypothesised to treat
// implicit Expression as opaque text, splitting only on top-level commas with
// brace/paren counting. This test confirms that hypothesis.
const std = @import("std");
~[comptime|transform]tor make-kiss { expr: Expression, program: *const Program, allocator: std.mem.Allocator } -> *const Program
~proc make-kiss|zig {
std.debug.print("Captured: '{s}'\n", .{expr});
return program;
}
// Case 1: single positional Expression containing a semicolon.
// No top-level comma => one arg => entire text captured verbatim.
~make-kiss(Claude -> Codex; because why not)
// Case 2: multi-part DSL using ';' as the in-Expression separator.
~make-kiss(a -> b; c -> d; e -> f)
// Case 3: nested parens with commas inside, semicolons at the top of the
// Expression. Inner commas must be ignored (brace-counting); outer semicolons
// are captured verbatim.
~make-kiss(foo(x, y); bar(p, q))
Flows
flow ~make-kiss click a branch to expand · @labels scroll to their anchor
make-kiss (expr: Claude -> Codex; because why not)
flow ~make-kiss click a branch to expand · @labels scroll to their anchor
make-kiss (expr: a -> b; c -> d; e -> f)
flow ~make-kiss click a branch to expand · @labels scroll to their anchor
make-kiss (expr: foo(x, y); bar(p, q))
Test Configuration
MUST_RUN