lexer: show correct span on lexical errors #9298
Closed
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.
Previously, the lexer calling
rdr.fatal(...)
would report the span ofthe last complete token, instead of a span within the erroneous token
(besides one span fixed in 1ac90bb).
This commit adds a few wrappers around
rdr.fatal(...)
that set thespan based on the
StringReader
's state, give or take, so that allfatal errors in
libsyntax/parse/lexer.rs
can now report the offendingcode more precisely. A number of tests try to verify that, though the
compile-fail
testing setup can only check that the spans are on theright lines, and the "unterminated string/block comment" errors can't
have the line marked at all, so that's incomplete.
Closes #9149.