From 8259a2dd425a94dbce00999027794f65806de831 Mon Sep 17 00:00:00 2001 From: Esteban Küber Date: Fri, 12 Jul 2019 18:37:57 -0700 Subject: Do not emit type errors after parse error in last statement of block When recovering from a parse error inside a block, do not emit type errors generating on that block's recovered return expression. Fix #57383. --- src/libsyntax/parse/parser.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/libsyntax/parse') diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 83dbff6b2d5..6864bd0efc2 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -4678,6 +4678,9 @@ impl<'a> Parser<'a> { { e.emit(); self.recover_stmt(); + // Don't complain about type errors in body tail after parse error (#57383). + let sp = expr.span.to(self.prev_span); + stmt.node = StmtKind::Expr(DummyResult::raw_expr(sp, true)); } } } @@ -4695,8 +4698,7 @@ impl<'a> Parser<'a> { if self.eat(&token::Semi) { stmt = stmt.add_trailing_semicolon(); } - - stmt.span = stmt.span.with_hi(self.prev_span.hi()); + stmt.span = stmt.span.to(self.prev_span); Ok(Some(stmt)) } -- cgit 1.4.1-3-g733a5