diff options
| author | bors <bors@rust-lang.org> | 2016-11-09 18:22:47 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-11-09 18:22:47 -0800 |
| commit | b46ce08df51f95e5d9f6dff9156b1d8e38cf4795 (patch) | |
| tree | 605693ae8861f9ce5371e3ad076f6013e2a37fc6 /src/libsyntax/parse/parser.rs | |
| parent | 0b46947d35e9fdc35cd06dd889c3c3a892d7ddf8 (diff) | |
| parent | 3a5b45aae5142635e2b14c139a69c684bf3f1a19 (diff) | |
| download | rust-b46ce08df51f95e5d9f6dff9156b1d8e38cf4795.tar.gz rust-b46ce08df51f95e5d9f6dff9156b1d8e38cf4795.zip | |
Auto merge of #37678 - eddyb:rollup, r=eddyb
Rollup of 5 pull requests - Successful merges: #37402, #37412, #37661, #37664, #37667 - Failed merges:
Diffstat (limited to 'src/libsyntax/parse/parser.rs')
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 19 |
1 files changed, 3 insertions, 16 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index b670a738473..7d15334ff9f 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -3162,25 +3162,12 @@ impl<'a> Parser<'a> { let decl = self.parse_fn_block_decl()?; let decl_hi = self.prev_span.hi; let body = match decl.output { - FunctionRetTy::Default(_) => { - // If no explicit return type is given, parse any - // expr and wrap it up in a dummy block: - let body_expr = self.parse_expr()?; - P(ast::Block { - id: ast::DUMMY_NODE_ID, - span: body_expr.span, - stmts: vec![Stmt { - span: body_expr.span, - node: StmtKind::Expr(body_expr), - id: ast::DUMMY_NODE_ID, - }], - rules: BlockCheckMode::Default, - }) - } + FunctionRetTy::Default(_) => self.parse_expr()?, _ => { // If an explicit return type is given, require a // block to appear (RFC 968). - self.parse_block()? + let body_lo = self.span.lo; + self.parse_block_expr(body_lo, BlockCheckMode::Default, ThinVec::new())? } }; |
