forked from rust-lang/rust
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Rollup merge of rust-lang#62887 - estebank:issue-62881, r=petrochenkov
Make the parser TokenStream more resilient after mismatched delimiter recovery Fix rust-lang#62881, fix rust-lang#62895.
- Loading branch information
Showing
5 changed files
with
109 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
fn main() {} | ||
|
||
fn f() -> isize { fn f() -> isize {} pub f< | ||
//~^ ERROR missing `fn` or `struct` for function or struct definition | ||
//~| ERROR mismatched types | ||
//~ ERROR this file contains an un-closed delimiter |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
error: this file contains an un-closed delimiter | ||
--> $DIR/issue-62881.rs:6:53 | ||
| | ||
LL | fn f() -> isize { fn f() -> isize {} pub f< | ||
| - un-closed delimiter | ||
... | ||
LL | | ||
| ^ | ||
|
||
error: missing `fn` or `struct` for function or struct definition | ||
--> $DIR/issue-62881.rs:3:41 | ||
| | ||
LL | fn f() -> isize { fn f() -> isize {} pub f< | ||
| ^ | ||
|
||
error[E0308]: mismatched types | ||
--> $DIR/issue-62881.rs:3:29 | ||
| | ||
LL | fn f() -> isize { fn f() -> isize {} pub f< | ||
| - ^^^^^ expected isize, found () | ||
| | | ||
| this function's body doesn't return | ||
| | ||
= note: expected type `isize` | ||
found type `()` | ||
|
||
error: aborting due to 3 previous errors | ||
|
||
For more information about this error, try `rustc --explain E0308`. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
fn main() {} | ||
|
||
fn v() -> isize { //~ ERROR mismatched types | ||
mod _ { //~ ERROR expected identifier | ||
pub fn g() -> isizee { //~ ERROR cannot find type `isizee` in this scope | ||
mod _ { //~ ERROR expected identifier | ||
pub g() -> is //~ ERROR missing `fn` for function definition | ||
(), w20); | ||
} | ||
(), w20); //~ ERROR expected item, found `;` | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
error: expected identifier, found reserved identifier `_` | ||
--> $DIR/issue-62895.rs:4:5 | ||
| | ||
LL | mod _ { | ||
| ^ expected identifier, found reserved identifier | ||
|
||
error: expected identifier, found reserved identifier `_` | ||
--> $DIR/issue-62895.rs:6:5 | ||
| | ||
LL | mod _ { | ||
| ^ expected identifier, found reserved identifier | ||
|
||
error: missing `fn` for function definition | ||
--> $DIR/issue-62895.rs:7:4 | ||
| | ||
LL | pub g() -> is | ||
| ^^^^ | ||
help: add `fn` here to parse `g` as a public function | ||
| | ||
LL | pub fn g() -> is | ||
| ^^ | ||
|
||
error: expected item, found `;` | ||
--> $DIR/issue-62895.rs:10:9 | ||
| | ||
LL | (), w20); | ||
| ^ help: remove this semicolon | ||
|
||
error[E0412]: cannot find type `isizee` in this scope | ||
--> $DIR/issue-62895.rs:5:15 | ||
| | ||
LL | pub fn g() -> isizee { | ||
| ^^^^^^ help: a builtin type with a similar name exists: `isize` | ||
|
||
error[E0308]: mismatched types | ||
--> $DIR/issue-62895.rs:3:11 | ||
| | ||
LL | fn v() -> isize { | ||
| - ^^^^^ expected isize, found () | ||
| | | ||
| this function's body doesn't return | ||
| | ||
= note: expected type `isize` | ||
found type `()` | ||
|
||
error: aborting due to 6 previous errors | ||
|
||
Some errors have detailed explanations: E0308, E0412. | ||
For more information about an error, try `rustc --explain E0308`. |