Skip to content

Commit

Permalink
Detect actual span for getting unexpected token from parsing macros
Browse files Browse the repository at this point in the history
  • Loading branch information
chenyukang committed Jun 11, 2023
1 parent b8a5001 commit 0220c0b
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 2 deletions.
10 changes: 8 additions & 2 deletions compiler/rustc_parse/src/parser/expr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1013,9 +1013,15 @@ impl<'a> Parser<'a> {
}

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);
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.
Expand Down
4 changes: 4 additions & 0 deletions tests/ui/parser/issues/issue-112458.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
fn main() {
println!("{}", x.); //~ ERROR unexpected token: `)`
//~^ ERROR cannot find value `x` in this scope
}
15 changes: 15 additions & 0 deletions tests/ui/parser/issues/issue-112458.stderr
Original file line number Diff line number Diff line change
@@ -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`.

0 comments on commit 0220c0b

Please sign in to comment.