nx_probe_lone_operator.nx
buildroot/runtime/nx_probe_lone_operator.nx
about
nx_probe_lone_operator.nx -- MUST-REFUSE WITNESS for spec clause LS-SYN-030 (discarded pure
expressions), and the fixture that clause NEEDS now that LN15 exists.
WHY IT WAS WRITTEN, 2026-08-25. LS-SYN-030 says an expression statement that computes a value
with no side effect and never uses it is REFUSED rather than silently discarded. That clause is
still exactly true. Its old witness was nx_probe_mlneg_live.nx -- `let c = a` then a line opening
with `- b` -- which stopped exercising the clause the moment LN15 shipped, because that line now
JOINS the expression above it and the program is simply correct. The clause did not change; its
fixture stopped reaching the condition, which is the quietest way for a conformance case to go
vacuous: it keeps passing for a while and then keeps failing, and neither state is about the rule.
THIS fixture cannot be joined to anything. The `- a` is the FIRST statement of its block, so there
is no expression above it to continue; it can only reach parse_stmt_expr_fallback, compute a value
and throw it away. That is the discarded-pure-expression class in its irreducible form.
EXPECT: COMPILE-FAIL, exit 2, with 'computes a value and never uses it'. If this ever BUILDS, the
discarded-pure-expression refusal has been lost -- and unlike the two multi-line witnesses, there
is no benign reading of that: nothing here could have become correct instead.
dependencies 0 imports · 0 importers
imports: none
imported by: nobody (leaf or entry point)
structs
| none |
consts
| none |
functions
| 20 | func main(argc: i64, argv: *u8) -> i64 |