You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat!: Rust-like record syntax — bare { = block, records use #{ } (#218; resolves#215 C+D) (#222)
* wip(#218): Rust-like record syntax — grammar + token bridges + 6 fixtures
ATOMIC PR IN PROGRESS — DO NOT MERGE (15/257 still failing).
Contains:
- Grammar: bare { = block, records #{ } (token.ml/lexer.ml/parser.mly,
from stage-c/pc-brace-disambig). Conflicts 72->68 S/R, 10->7 R/R.
- Token-bridge completeness: added HASH_LBRACE arm to BOTH
lib/parse.ml AND lib/parse_driver.ml (same non-exhaustive-match
class as #219 EXTERN — warning-8 demoted, Match_failure at runtime;
these were the ONLY two Token->Parser bridges).
- Migrated 6 regression .affine fixtures (expression-position record
literals {..}->#{..}; type-position records unchanged).
Progress: 21 -> 15 failures. Remaining 15 are inline AffineScript
source embedded as string literals in the OCaml test suite (E2E TEA
counter/titlescreen, LSP Phase B hover, full_pipeline, AOT test 17,
etc.) — those test inputs still use old record syntax and need #{
migration in the test .ml fixtures, not .affine files.
Refs #218
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* feat(#218)!: complete Rust-like record migration — 257/257 green
Migrated the remaining expression-position record literals to #{ }
(compiler-as-oracle, iterated to green):
- test/e2e/fixtures/counter.affine (tea_run arg record)
- test/e2e/fixtures/full_pipeline.affine (fn-return + Rect(#{}) arg)
- test/e2e/fixtures/titlescreen.affine (title_init body + 4 match-arm
records + tea_run arg)
- examples/comprehensive_test.affine (fn-return + Rect(#{}) arg)
- stdlib/testing.affine (benchmark-result record — the ONE stdlib
record literal; earlier survey missed it, parse-gated)
Type-position records, struct/type declarations, blocks, and match-arm
blocks left unchanged (different grammar rules — verified).
Full dune gate now GREEN: 257/257, 0 failures. Conflicts 72->68 S/R,
10->7 R/R (residual families tracked on #215). Breaking syntax change
— review-gated, do not auto-merge.
Refs #218#215
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
0 commit comments