Fix CRLF behavior mismatch during error recovery #189
Merged
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.
This is a bit more subtle than the previous fixes in #188
The ruby error_corpus test was failing in the main repo on Windows, generating a slightly different error-corrected parse tree. I suspect this is because of the additional
\r
characters consumed by the external scanner which led the parser to prefer one GLR branch over another. I changed the external scanner so its behavior matches as closely as possible in both cases by doing a line-by-line diff of the debug parse output. If I had to summarize the changes, they would be "treat a standalone\r
as a newline, unless it's directly followed by a\n
, in which case consume\r\n
one right after the other". The same error-corrected parse tree is now output on all platforms. I've also added the test itself to this repo since it seems a bit fragile.