syntax: Fix regression in diagnostics for patterns in trait method parameters
This commit is contained in:
parent
cae164753f
commit
3df500db29
3 changed files with 15 additions and 2 deletions
|
@ -1866,7 +1866,8 @@ impl<'a> Parser<'a> {
|
||||||
let parser_snapshot_before_ty = self.clone();
|
let parser_snapshot_before_ty = self.clone();
|
||||||
self.eat_incorrect_doc_comment("a method argument's type");
|
self.eat_incorrect_doc_comment("a method argument's type");
|
||||||
let mut ty = self.parse_ty();
|
let mut ty = self.parse_ty();
|
||||||
if ty.is_ok() && self.token == token::Colon {
|
if ty.is_ok() && self.token != token::Comma &&
|
||||||
|
self.token != token::CloseDelim(token::Paren) {
|
||||||
// This wasn't actually a type, but a pattern looking like a type,
|
// This wasn't actually a type, but a pattern looking like a type,
|
||||||
// so we are going to rollback and re-parse for recovery.
|
// so we are going to rollback and re-parse for recovery.
|
||||||
ty = self.unexpected();
|
ty = self.unexpected();
|
||||||
|
|
|
@ -6,6 +6,8 @@ trait T {
|
||||||
|
|
||||||
fn bar((x, y): (i32, i32)) {} //~ ERROR patterns aren't allowed in methods without bodies
|
fn bar((x, y): (i32, i32)) {} //~ ERROR patterns aren't allowed in methods without bodies
|
||||||
|
|
||||||
|
fn method(S { .. }: S) {} //~ ERROR patterns aren't allowed in methods without bodies
|
||||||
|
|
||||||
fn f(&ident: &S) {} // ok
|
fn f(&ident: &S) {} // ok
|
||||||
fn g(&&ident: &&S) {} // ok
|
fn g(&&ident: &&S) {} // ok
|
||||||
fn h(mut ident: S) {} // ok
|
fn h(mut ident: S) {} // ok
|
||||||
|
|
|
@ -18,6 +18,16 @@ help: give this argument a name or use an underscore to ignore it
|
||||||
LL | fn bar(_: (i32, i32)) {} //~ ERROR patterns aren't allowed in methods without bodies
|
LL | fn bar(_: (i32, i32)) {} //~ ERROR patterns aren't allowed in methods without bodies
|
||||||
| ^
|
| ^
|
||||||
|
|
||||||
error: aborting due to 2 previous errors
|
error[E0642]: patterns aren't allowed in methods without bodies
|
||||||
|
--> $DIR/E0642.rs:9:15
|
||||||
|
|
|
||||||
|
LL | fn method(S { .. }: S) {} //~ ERROR patterns aren't allowed in methods without bodies
|
||||||
|
| ^^^^^^^^
|
||||||
|
help: give this argument a name or use an underscore to ignore it
|
||||||
|
|
|
||||||
|
LL | fn method(_: S) {} //~ ERROR patterns aren't allowed in methods without bodies
|
||||||
|
| ^
|
||||||
|
|
||||||
|
error: aborting due to 3 previous errors
|
||||||
|
|
||||||
For more information about this error, try `rustc --explain E0642`.
|
For more information about this error, try `rustc --explain E0642`.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue