Skip to content

Commit

Permalink
Auto merge of #46381 - estebank:expected-span, r=nikomatsakis
Browse files Browse the repository at this point in the history
Point to next token when it is in the expected line

r? @nikomatsakis
  • Loading branch information
bors committed Dec 2, 2017
2 parents 377decc + fe89740 commit f9b0897
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 15 deletions.
2 changes: 1 addition & 1 deletion src/libsyntax/codemap.rs
Original file line number Diff line number Diff line change
Expand Up @@ -358,7 +358,7 @@ impl CodeMap {
}

// If the relevant filemap is empty, we don't return a line number.
fn lookup_line(&self, pos: BytePos) -> Result<FileMapAndLine, Rc<FileMap>> {
pub fn lookup_line(&self, pos: BytePos) -> Result<FileMapAndLine, Rc<FileMap>> {
let idx = self.lookup_filemap_idx(pos);

let files = self.files.borrow();
Expand Down
27 changes: 22 additions & 5 deletions src/libsyntax/parse/parser.rs
Original file line number Diff line number Diff line change
Expand Up @@ -660,11 +660,28 @@ impl<'a> Parser<'a> {
} else {
label_sp
};
if self.span.contains(sp) {
err.span_label(self.span, label_exp);
} else {
err.span_label(sp, label_exp);
err.span_label(self.span, "unexpected token");

let cm = self.sess.codemap();
match (cm.lookup_line(self.span.lo()), cm.lookup_line(sp.lo())) {
(Ok(ref a), Ok(ref b)) if a.line == b.line => {
// When the spans are in the same line, it means that the only content between
// them is whitespace, point at the found token in that case:
//
// X | () => { syntax error };
// | ^^^^^ expected one of 8 possible tokens here
//
// instead of having:
//
// X | () => { syntax error };
// | -^^^^^ unexpected token
// | |
// | expected one of 8 possible tokens here
err.span_label(self.span, label_exp);
}
_ => {
err.span_label(sp, label_exp);
err.span_label(self.span, "unexpected token");
}
}
Err(err)
}
Expand Down
4 changes: 1 addition & 3 deletions src/test/ui/did_you_mean/issue-40006.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,7 @@ error: expected one of `!` or `::`, found `(`
--> $DIR/issue-40006.rs:24:9
|
24 | ::Y (); //~ ERROR expected one of
| -^ unexpected token
| |
| expected one of `!` or `::` here
| ^ expected one of `!` or `::` here

error: missing `fn`, `type`, or `const` for impl-item declaration
--> $DIR/issue-40006.rs:28:8
Expand Down
8 changes: 2 additions & 6 deletions src/test/ui/macro_backtrace/main.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,14 @@ error: expected one of `!`, `.`, `::`, `;`, `?`, `{`, `}`, or an operator, found
--> $DIR/main.rs:19:20
|
19 | () => { syntax error }; //~ ERROR expected one of
| -^^^^^ unexpected token
| |
| expected one of 8 possible tokens here
| ^^^^^ expected one of 8 possible tokens here
$DIR/main.rs:24:5: 24:13 note: in this expansion of pong! (defined in $DIR/main.rs)

error: expected one of `!`, `.`, `::`, `;`, `?`, `{`, `}`, or an operator, found `error`
--> $DIR/main.rs:19:20
|
19 | () => { syntax error }; //~ ERROR expected one of
| -^^^^^ unexpected token
| |
| expected one of 8 possible tokens here
| ^^^^^ expected one of 8 possible tokens here
$DIR/main.rs:25:5: 25:13 note: in this expansion of ping! (defined in <ping macros>)
<ping macros>:1:11: 1:24 note: in this expansion of pong! (defined in $DIR/main.rs)

Expand Down

0 comments on commit f9b0897

Please sign in to comment.