-
Notifications
You must be signed in to change notification settings - Fork 13.3k
Avoid ICE in macro's diagnostics #68633
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
"change the delimiters to curly braces", | ||
vec![ | ||
(self.prev_span.with_hi(self.prev_span.lo() + BytePos(1)), '{'.to_string()), | ||
(self.prev_span.with_lo(self.prev_span.hi() - BytePos(1)), '}'.to_string()), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Feels like there's a missing Span
method here (self.prev_span.shift_left(...)
)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I couldn't find the shift_left
method: https://doc.rust-lang.org/nightly/nightly-rustc/rustc_span/struct.Span.html
Am I still missing something?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm saying that we could add a higher level operation to avoid dealing with primitives like this. :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah, so we can add this tweak as a pub method of Span
, right?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah that would be the idea, if we think it's a good one. cc also @petrochenkov
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I feel it'd be nice that we'll do it as follow-up work, how about?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Works for me.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
SourceMap::next_point
let's you advance 1 char at a time (and is now unicode aware). We don't have a method to move left. It is in SourceMap
instead of Span
because you need to look at the underlying code for the span to be validated as not falling in the middle of a character.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also, this might work better with shrink_to_hi
and shrink_to_lo
instead of with_*
.
I think it's ready to review, could you confirm the diagnostics are valid? @estebank |
@JohnTitor The output is fine 👍 |
@bors r+ |
📌 Commit b1c91ee has been approved by |
☀️ Test successful - checks-azure |
📣 Toolstate changed by #68633! Tested on commit cdd41ea. 💔 rustc-guide on linux: test-pass → test-fail (cc @JohnTitor @amanjeev @spastorino @mark-i-m, @rust-lang/infra). |
Tested on commit rust-lang/rust@cdd41ea. Direct link to PR: <rust-lang/rust#68633> 💔 rustc-guide on linux: test-pass → test-fail (cc @JohnTitor @amanjeev @spastorino @mark-i-m, @rust-lang/infra).
Fixes #68629
r? @estebank