✓
Passing This code compiles and runs correctly.
Code
// GREEN PIN (was RED; found by AoC day 12): a `<` inside an if condition
// made the parser drop the ENTIRE argument (empty args in the AST → emitter
// wrote `if ()`). `>`/`>=` survived. The original mechanism guess
// (phantom-angle scan) was WRONG — the real culprit was lexer.parseArgs's
// generics angle-depth tracking: `<` unconditionally bumped angle_depth,
// `x < 5` has no closing `>`, so the depth stayed stuck >0 and the
// comma-split (which requires angle_depth == 0) never fired — the arg was
// never appended. Fixed 2026-06-12: `<` only opens an angle group when it
// hugs an identifier on the left AND a string-aware lookahead finds a
// matching `>` (`Option<A, B>`, `32<celsius>` keep working); otherwise it
// is a comparison operator and stays a plain character.
// Expected: "lt".
~import std/io
const x: i64 = 3;
~if(x < 5)
| then |> std/io:print.ln("lt")
| else |> std/io:print.ln("ge")
Actual
lt
Expected output
lt
Test Configuration
MUST_RUN