Rollup merge of #112518 - chenyukang:yukang-fix-112458, r=davidtwco
Detect actual span for getting unexpected token from parsing macros Fixes #112458
This commit is contained in:
commit
9f2c21c11f
@ -1013,9 +1013,15 @@ impl<'a> Parser<'a> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn error_unexpected_after_dot(&self) {
|
fn error_unexpected_after_dot(&self) {
|
||||||
// FIXME Could factor this out into non_fatal_unexpected or something.
|
|
||||||
let actual = pprust::token_to_string(&self.token);
|
let actual = pprust::token_to_string(&self.token);
|
||||||
self.sess.emit_err(errors::UnexpectedTokenAfterDot { span: self.token.span, actual });
|
let span = self.token.span;
|
||||||
|
let sm = self.sess.source_map();
|
||||||
|
let (span, actual) = match (&self.token.kind, self.subparser_name) {
|
||||||
|
(token::Eof, Some(_)) if let Ok(actual) = sm.span_to_snippet(sm.next_point(span)) =>
|
||||||
|
(span.shrink_to_hi(), actual.into()),
|
||||||
|
_ => (span, actual),
|
||||||
|
};
|
||||||
|
self.sess.emit_err(errors::UnexpectedTokenAfterDot { span, actual });
|
||||||
}
|
}
|
||||||
|
|
||||||
// We need an identifier or integer, but the next token is a float.
|
// We need an identifier or integer, but the next token is a float.
|
||||||
|
4
tests/ui/parser/issues/issue-112458.rs
Normal file
4
tests/ui/parser/issues/issue-112458.rs
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
fn main() {
|
||||||
|
println!("{}", x.); //~ ERROR unexpected token: `)`
|
||||||
|
//~^ ERROR cannot find value `x` in this scope
|
||||||
|
}
|
15
tests/ui/parser/issues/issue-112458.stderr
Normal file
15
tests/ui/parser/issues/issue-112458.stderr
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
error: unexpected token: `)`
|
||||||
|
--> $DIR/issue-112458.rs:2:22
|
||||||
|
|
|
||||||
|
LL | println!("{}", x.);
|
||||||
|
| ^
|
||||||
|
|
||||||
|
error[E0425]: cannot find value `x` in this scope
|
||||||
|
--> $DIR/issue-112458.rs:2:20
|
||||||
|
|
|
||||||
|
LL | println!("{}", x.);
|
||||||
|
| ^ not found in this scope
|
||||||
|
|
||||||
|
error: aborting due to 2 previous errors
|
||||||
|
|
||||||
|
For more information about this error, try `rustc --explain E0425`.
|
Loading…
x
Reference in New Issue
Block a user