fix(parser): silent statement drop is dead -- malformed input hard-errors - #1941
Merged
Conversation
…rors Closes #1940 Statement-level and module-level error "recovery" silently DROPPED malformed statements and whole declarations: fn bodies became unimplemented stubs and generated code shipped WRONG with no diagnostic (three tri-net specs + t27's own bridge.t27, whose packet dispatch -- a match STATEMENT the parser never supported -- was entirely missing from the generated Verilog). - every drop site now returns a hard parse error with fn name + line - array-literal element capture depth-counts nested brackets - negative-test contract flipped: malformed input must FAIL to compile - bridge.t27 dispatch rewritten as an if-chain; bridge.v regenerated (the dispatch now EXISTS in the Verilog) - SVA fixture spec rewritten in legal t27 Unit suite: only red is the pre-existing bitnet_layer iverilog test. FROZEN_HASH resealed; NOW.md entries added. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
gHashTag
enabled auto-merge (squash)
August 8, 2026 13:56
Contributor
Contributor
|
📓 NotebookLM Notebook linked to this PR
This notebook contains session context, decisions, and artifacts for this work. |
gHashTag
added a commit
that referenced
this pull request
Aug 8, 2026
…t types; fpga specs repaired (#1964) Refs #1960 The #1941 hardening surfaced a layer of constructs the parser never supported but silently swallowed. This lands the top classes: - if-EXPRESSIONS accept braced arms: `if (c) { 2 } else { 0 }` - if/while STATEMENTS accept paren-less Rust-style conditions, with the struct-literal-in-condition rule (a `{` after the condition opens the body, never a struct literal) - reference types are transparent at the spec level (&str/&T parse as the referent) - spec repairs: mac.t27 pack_trit; spi.t27 (THREE match constructs -- the FSM tick, prescaler and SCK dispatch had been silently dropped forever); fifo.t27 (four literal missing-paren typos) fpga-build --smoke: 2 -> 21 of 35 modules generate. Remaining tails begin at the given/then BDD fn form (linker). tri-net's 77-spec icarus gate is green; unit suite at the single pre-existing red (bitnet_layer). FROZEN_HASH resealed. Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
gHashTag
added a commit
that referenced
this pull request
Aug 8, 2026
Closes #1960 The #1941 hardening surfaced constructs the parser silently dropped; this closes the fpga-smoke tail: - `fn name() given ... then ...` (a keyword-style test spelled as a fn, linker.t27) is recognized right after the parameter list, BEFORE return-type parsing -- otherwise `given` was consumed as an identifier return type and the body-brace check failed - partition.t27: a parameter named `module` (a keyword) renamed to mod_name fpga-build --smoke now generates all 31 modules + the wrapper and is GREEN again (it had been red since #1941 exposed the silently-dropped match statements, paren-less conditions and BDD forms). tri-net's 77-spec icarus gate is green; unit suite at the single pre-existing red. FROZEN_HASH resealed. Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #1940
The statement-level and module-level error "recovery" silently DROPPED malformed statements and whole declarations — generated code shipped wrong with no diagnostic. Found via tri-net wave 25/26: three specs' fn bodies were unimplemented stubs, and t27's own bridge.t27 packet dispatch (a
matchstatement the parser never supported) was entirely missing from the generated Verilog.[value, array[1], ...]no longer truncates)Unit suite: only red is pre-existing bitnet_layer (iverilog). FROZEN_HASH resealed; NOW.md entries added.
🤖 Generated with Claude Code