Improve wording and spans for unexpected token

* Point at where the token was expected instead of the last token
  successfuly parsed.
* Only show `unexpected token` if the next char and the unexpected token
  don't have the same span.
* Change some cfail and pfail tests to ui test.
* Don't show all possible tokens in span label if they are more than 6.
This commit is contained in:
Esteban Küber 2017-03-25 15:36:59 -07:00
parent 03eca71381
commit 78ae8feebb
13 changed files with 102 additions and 15 deletions

View file

@ -14,7 +14,7 @@ fn main() {
let foo =
match //~ NOTE did you mean to remove this `match` keyword?
Some(4).unwrap_or_else(5)
//~^ NOTE expected one of `.`, `?`, `{`, or an operator after this
//~^ NOTE expected one of `.`, `?`, `{`, or an operator here
; //~ NOTE unexpected token
//~^ ERROR expected one of `.`, `?`, `{`, or an operator, found `;`

View file

@ -14,15 +14,13 @@ error: expected one of `,`, `.`, `?`, or an operator, found `;`
--> $DIR/token-error-correct-3.rs:23:35
|
23 | callback(path.as_ref(); //~ NOTE: unclosed delimiter
| -^ unexpected token
| |
| expected one of `,`, `.`, `?`, or an operator after this
| ^ expected one of `,`, `.`, `?`, or an operator here
error: expected one of `.`, `;`, `?`, `}`, or an operator, found `)`
--> $DIR/token-error-correct-3.rs:29:9
|
25 | fs::create_dir_all(path.as_ref()).map(|()| true) //~ ERROR: mismatched types
| - expected one of `.`, `;`, `?`, `}`, or an operator after this
| - expected one of `.`, `;`, `?`, `}`, or an operator here
...
29 | } else { //~ ERROR: incorrect close delimiter: `}`
| ^ unexpected token

View file

@ -32,9 +32,7 @@ error: expected one of `)`, `,`, `.`, `<`, `?`, `break`, `continue`, `false`, `f
--> $DIR/token-error-correct.rs:14:13
|
14 | foo(bar(;
| -^ unexpected token
| |
| expected one of `)`, `,`, `.`, `<`, `?`, `break`, `continue`, `false`, `for`, `if`, `loop`, `match`, `move`, `return`, `true`, `unsafe`, `while`, or an operator after this
| ^ expected one of 18 possible tokens here
error: expected expression, found `)`
--> $DIR/token-error-correct.rs:23:1

View file

@ -0,0 +1,7 @@
error: expected one of `!` or `::`, found `<eof>`
--> $DIR/bounds-obj-parens.rs:15:1
|
15 | FAIL
| ^^^^ expected one of `!` or `::` here
error: aborting due to previous error

View file

@ -0,0 +1,27 @@
error: incorrect close delimiter: `}`
--> $DIR/issue-10636-2.rs:19:1
|
19 | } //~ ERROR: incorrect close delimiter
| ^
|
note: unclosed delimiter
--> $DIR/issue-10636-2.rs:15:15
|
15 | option.map(|some| 42; //~ NOTE: unclosed delimiter
| ^
error: expected one of `,`, `.`, `?`, or an operator, found `;`
--> $DIR/issue-10636-2.rs:15:25
|
15 | option.map(|some| 42; //~ NOTE: unclosed delimiter
| ^ expected one of `,`, `.`, `?`, or an operator here
error: expected expression, found `)`
--> $DIR/issue-10636-2.rs:19:1
|
19 | } //~ ERROR: incorrect close delimiter
| ^
error: main function not found
error: aborting due to 4 previous errors

View file

@ -20,7 +20,7 @@ macro_rules! ignored_item {
macro_rules! ignored_expr {
() => ( 1, //~ ERROR expected one of `.`, `;`, `?`, `}`, or an operator, found `,`
//~^ NOTE expected one of `.`, `;`, `?`, `}`, or an operator after this
//~^ NOTE expected one of `.`, `;`, `?`, `}`, or an operator here
//~| NOTE unexpected token
2 )
}

View file

@ -0,0 +1,31 @@
error: macro expansion ignores token `,` and any following
--> $DIR/macro-incomplete-parse.rs:17:9
|
17 | , //~ ERROR macro expansion ignores token `,`
| ^
|
note: caused by the macro expansion here; the usage of `ignored_item!` is likely invalid in item context
--> $DIR/macro-incomplete-parse.rs:32:1
|
32 | ignored_item!(); //~ NOTE caused by the macro expansion here
| ^^^^^^^^^^^^^^^^
error: expected one of `.`, `;`, `?`, `}`, or an operator, found `,`
--> $DIR/macro-incomplete-parse.rs:22:14
|
22 | () => ( 1, //~ ERROR expected one of `.`, `;`, `?`, `}`, or an operator, found `,`
| ^ expected one of `.`, `;`, `?`, `}`, or an operator here
error: macro expansion ignores token `,` and any following
--> $DIR/macro-incomplete-parse.rs:29:14
|
29 | () => ( 1, 2 ) //~ ERROR macro expansion ignores token `,`
| ^
|
note: caused by the macro expansion here; the usage of `ignored_pat!` is likely invalid in pattern context
--> $DIR/macro-incomplete-parse.rs:37:9
|
37 | ignored_pat!() => (), //~ NOTE caused by the macro expansion here
| ^^^^^^^^^^^^^^
error: aborting due to 3 previous errors

View file

@ -0,0 +1,7 @@
error: expected one of `!` or `::`, found `<eof>`
--> ../../src/test/ui/token/trailing-plus-in-bounds.rs:19:1
|
19 | FAIL
| ^^^^ expected one of `!` or `::` here
error: aborting due to previous error