Files
ww/test/wcc/data/forhdr_emptymid/case.ww
Hojun-Cho 241f28c96b syntax: align for-header grammar to cstage (Go's three forms)
The bbdd8bed residue, ruled by the Go derivation (ww's for IS the Go
for; the cstage grammar is the language definition and already the
Go-shaped one):
- bare `for { }` accepted (align UP to parse.c:1023, incl. for-else);
- 3-clause cond and post each omissible — `for (init;; post)`,
  `for (init; cond)`, `for (init;)` (align UP, parse.c:1092-1097);
- 2-clause `for (cond; post)` REJECTED (align DOWN): the form exists
  in neither Go nor cstage (parse.c:1101 eats a stray ';' then
  requires ')'), so the old wwstage accept was a parser bug. The
  reject wording mirrors cstage's failure mode per stage.

forhdr_{brace,emptymid,partial} run fixtures pin the accepted forms
byte-identically; forhdr_twoclause_reject pins both reject fragments.
Corpus pin 1745/346/21/209/1169/3490.
2026-08-08 19:19:42 +09:00

11 lines
164 B
Plaintext

//ww:run-exit 10
package main;
export fn main() i32 = {
let s: i32 = 0;
for (let i: i32 = 0;; i += 1) {
if (i >= 4) { break; };
s += i;
};
return s + 4;
};