Skip to content
Permalink
Browse files

Do not panic on missing close paren

Fix #58856.
  • Loading branch information...
estebank committed Mar 2, 2019
1 parent f22dca0 commit 2ec7d0b2281e57a456d6122dadd5646804a9d36e
@@ -6332,8 +6332,10 @@ impl<'a> Parser<'a> {
&token::CloseDelim(token::Paren), sep, parse_arg_fn)?;
fn_inputs.append(&mut input);
(fn_inputs, recovered)
} else if let Err(err) = self.expect_one_of(&[], &[]) {
return Err(err);
} else {
return self.unexpected();
(vec![self_arg], true)
}
} else {
self.parse_seq_to_before_end(&token::CloseDelim(token::Paren), sep, parse_arg_fn)?
@@ -0,0 +1,9 @@
impl A {
//~^ ERROR cannot find type `A` in this scope
fn b(self>
//~^ ERROR expected one of `)`, `,`, or `:`, found `>`
//~| ERROR expected one of `->`, `where`, or `{`, found `>`
//~| ERROR expected one of `->`, `async`, `const`, `crate`, `default`, `existential`,
}

fn main() {}
@@ -0,0 +1,30 @@
error: expected one of `)`, `,`, or `:`, found `>`
--> $DIR/issue-58856-1.rs:3:14
|
LL | fn b(self>
| - ^
| | |
| | help: `)` may belong here
| unclosed delimiter

error: expected one of `->`, `where`, or `{`, found `>`
--> $DIR/issue-58856-1.rs:3:14
|
LL | fn b(self>
| ^ expected one of `->`, `where`, or `{` here

error: expected one of `->`, `async`, `const`, `crate`, `default`, `existential`, `extern`, `fn`, `pub`, `type`, `unsafe`, `where`, or `}`, found `>`
--> $DIR/issue-58856-1.rs:3:14
|
LL | fn b(self>
| ^ expected one of 13 possible tokens here

error[E0412]: cannot find type `A` in this scope
--> $DIR/issue-58856-1.rs:1:6
|
LL | impl A {
| ^ not found in this scope

error: aborting due to 4 previous errors

For more information about this error, try `rustc --explain E0412`.
@@ -0,0 +1,13 @@
trait Howness {}
impl Howness for () {
fn how_are_you(&self -> Empty {
//~^ ERROR expected one of `)` or `,`, found `->`
//~| ERROR method `how_are_you` is not a member of trait `Howness`
//~| ERROR cannot find type `Empty` in this scope
Empty
//~^ ERROR cannot find value `Empty` in this scope
}
}
//~^ ERROR expected one of `async`, `const`, `crate`, `default`, `existential`, `extern`, `fn`,

fn main() {}
@@ -0,0 +1,55 @@
error: expected one of `)` or `,`, found `->`
--> $DIR/issue-58856-2.rs:3:26
|
LL | fn how_are_you(&self -> Empty {
| - -^^
| | |
| | help: `)` may belong here
| unclosed delimiter

error: expected one of `async`, `const`, `crate`, `default`, `existential`, `extern`, `fn`, `pub`, `type`, `unsafe`, or `}`, found `)`
--> $DIR/issue-58856-2.rs:10:1
|
LL | }
| - expected one of 11 possible tokens here
LL | }
| ^ unexpected token

error[E0407]: method `how_are_you` is not a member of trait `Howness`
--> $DIR/issue-58856-2.rs:3:5
|
LL | / fn how_are_you(&self -> Empty {
LL | | //~^ ERROR expected one of `)` or `,`, found `->`
LL | | //~| ERROR method `how_are_you` is not a member of trait `Howness`
LL | | //~| ERROR cannot find type `Empty` in this scope
LL | | Empty
LL | | //~^ ERROR cannot find value `Empty` in this scope
LL | | }
| |_____^ not a member of trait `Howness`

error[E0412]: cannot find type `Empty` in this scope
--> $DIR/issue-58856-2.rs:3:29
|
LL | fn how_are_you(&self -> Empty {
| ^^^^^ not found in this scope
help: possible candidates are found in other modules, you can import them into scope
|
LL | use std::io::Empty;
|
LL | use std::iter::Empty;
|

error[E0425]: cannot find value `Empty` in this scope
--> $DIR/issue-58856-2.rs:7:9
|
LL | Empty
| ^^^^^ not found in this scope
help: possible candidate is found in another module, you can import it into scope
|
LL | use std::sync::mpsc::TryRecvError::Empty;
|

error: aborting due to 5 previous errors

Some errors occurred: E0407, E0412, E0425.
For more information about an error, try `rustc --explain E0407`.

0 comments on commit 2ec7d0b

Please sign in to comment.
You can’t perform that action at this time.