Skip to content

feat(A4): adopt the strict parse — stray identifiers are a parse error - #828

Merged
ronaldtse merged 1 commit into
mainfrom
feat/strict-parse
Oct 26, 2026
Merged

ronaldtse merged 1 commit into
mainfrom
feat/strict-parse

Conversation

@ronaldtse

Copy link
Copy Markdown
Contributor

Closes the A4 batch-4 hazard under its own gate: the corpus is 295/295 strict-clean (after maps#207's stray-s fix), so the grammar now rejects stray identifiers instead of silently consuming them.

The strict parse also EXPOSED that run downcase only ever executed by accident (noop + case-directive) — the vector now pins the bare stage directive as the sanctioned spelling and expects ParseError for run <name>.

22 vectors green; standardrb clean. Cross-runtime note: the ts/py parsers still tolerate strays — their strict adoption is the follow-up, and the corpus gate guarantees no real map is affected in the interim.

The batch-4 hazard (stray identifiers silently no-op — a typo'd map
is silently wrong) is closed: the corpus gate passed (295/295
strict-clean after maps#207's stray-'s' fix), so comment_item no
longer consumes bare identifiers.

The batch-4/5 vectors flip accordingly:
- stray identifiers now raise Isc::ParseError (was: silent no-op)
-  is likewise rejected — the strict parse revealed it
  only ever executed by accident (noop + the case directive). The
  sanctioned spelling is the bare stage directive, which the vector
  now pins.

Also fixes the run_rule documentation gap: stdlib functions are stage
directives, never run targets.
@ronaldtse
ronaldtse merged commit 9302d2e into main Oct 26, 2026
10 checks passed
@ronaldtse
ronaldtse deleted the feat/strict-parse branch October 26, 2026 22:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant