Repository navigation
Compiled analyzers run zone mode; zone lines take no pass number (4.2.49) - #807
Merged
Merged
Conversation
….49)
A compiled analyzer ignored zone and endzone lines and ran every pass on
the whole document. The generated run_analyzer() now puts the zone passes
in zonepasses() and the passes after endzone in endzonepasses(), and hands
them to Arun::zones, which runs the same zone loop as an interpreted run
(Parse::zoneLoop, now shared). Compiled passes name their -DEV trees
z001-ana###.tree like interpreted ones (Parse::zonePrefix).
Zone and endzone lines no longer take a pass number when the sequence is
loaded either (Seqn::isZoneMarker). 4.2.48 stopped numbering them only in
the run, so after a zone line an NLP++ error named the pass before the
one that failed ("pass 4 (words)" for an error in report).
Parse::iniPass is no longer inline: Arun.cpp calls it, and it only linked
while parse.cpp happened to keep an out-of-line copy.
CI: the Windows job builds the zone-mode fixture as a compiled analyzer
and compares its output and -DEV trees with the interpreted run.
Co-Authored-By: Claude Opus 5.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.
Compiled analyzers used to ignore
zoneandendzonelines and run every pass on the whole document. They now zone the same way an interpreted run does.Compiled zone mode
run_analyzer()runs the passes before thezoneline, then hands two generated functions toArun::zones:zonepasses(): the passes betweenzoneandendzone;endzonepasses(): the passes afterendzone, or 0 if there is noendzoneline.Parse::zoneLoopis the zone loop (find zones, hide the path, run, check, restore, stub). Interpreted and compiled runs now share it;executeZonesandrunZonesare thin wrappers.Parse::zonePrefixgives compiled passes the samez001-ana###.treenames and the same three-zone-DEVcap as interpreted ones.Pass numbers
zone/endzonelines in the run, but the sequence loader still numbered them. After a zone line, an NLP++ error therefore named the pass before the one that failed: "pass 4 (words)" for an error inreport.Seqn::isZoneMarkernow keeps zone lines unnumbered everywhere passes are numbered (Ana,Aseqintern andnumberSeq,Seqn::gen), so generated pass names match too.Build
Parse::iniPassis no longerinlineon Windows.Arun.cppcalls it, and it only linked whileparse.cpphappened to keep an out-of-line copy. With this change it didn't, and the link failed.Tests
zone-modefixture as a compiled analyzer and diffs its stdout and-DEVtree list against the interpreted run.final.treeand thez00N-ana00M.treefiles;-DEVoutput on its three inputs is byte-identical to 4.2.48 (454 files);pass 4 (report).🤖 Generated with Claude Code