Skip to content

Commit

Permalink
Revert invalid fn return type parsing change
Browse files Browse the repository at this point in the history
Fix #78507.
  • Loading branch information
estebank committed Oct 29, 2020
1 parent 31ee872 commit f9a2664
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 17 deletions.
17 changes: 4 additions & 13 deletions compiler/rustc_parse/src/parser/item.rs
Expand Up @@ -1666,19 +1666,10 @@ impl<'a> Parser<'a> {
req_name: ReqName,
ret_allow_plus: AllowPlus,
) -> PResult<'a, P<FnDecl>> {
let inputs = self.parse_fn_params(req_name)?;
let output = self.parse_ret_ty(ret_allow_plus, RecoverQPath::Yes)?;

if let ast::FnRetTy::Ty(ty) = &output {
if let TyKind::Path(_, Path { segments, .. }) = &ty.kind {
if let [.., last] = &segments[..] {
// Detect and recover `fn foo() -> Vec<i32>> {}`
self.check_trailing_angle_brackets(last, &[&token::OpenDelim(token::Brace)]);
}
}
}

Ok(P(FnDecl { inputs, output }))
Ok(P(FnDecl {
inputs: self.parse_fn_params(req_name)?,
output: self.parse_ret_ty(ret_allow_plus, RecoverQPath::Yes)?,
}))
}

/// Parses the parameter list of a function, including the `(` and `)` delimiters.
Expand Down
4 changes: 2 additions & 2 deletions src/test/ui/parser/issue-24780.rs
@@ -1,8 +1,8 @@
// Verify that '>' is not both expected and found at the same time, as it used
// to happen in #24780. For example, following should be an error:
// expected one of ..., `>`, ... found `>`. No longer exactly this, but keeping for posterity.
// expected one of ..., `>`, ... found `>`.

fn foo() -> Vec<usize>> { //~ ERROR unmatched angle bracket
fn foo() -> Vec<usize>> { //~ ERROR expected one of `!`, `+`, `::`, `;`, `where`, or `{`, found `>`
Vec::new()
}

Expand Down
4 changes: 2 additions & 2 deletions src/test/ui/parser/issue-24780.stderr
@@ -1,8 +1,8 @@
error: unmatched angle bracket
error: expected one of `!`, `+`, `::`, `;`, `where`, or `{`, found `>`
--> $DIR/issue-24780.rs:5:23
|
LL | fn foo() -> Vec<usize>> {
| ^^ help: remove extra angle bracket
| ^ expected one of `!`, `+`, `::`, `;`, `where`, or `{`

error: aborting due to previous error

0 comments on commit f9a2664

Please sign in to comment.