about summary refs log tree commit diff
path: root/src/libsyntax/parse
diff options
context:
space:
mode:
authorMazdak Farrokhzad <twingoow@gmail.com>2019-07-12 22:46:52 +0200
committerGitHub <noreply@github.com>2019-07-12 22:46:52 +0200
commita7f1649fbbcdc2b9904a2614c36b44e917747898 (patch)
tree8da66e7a281a969badf84cb6faf8e0a6bdfdc065 /src/libsyntax/parse
parentd709e8d9d0c0629eb8727f4feaadb387bfde07c2 (diff)
parent8c5f6907a1ddb1dc19a4163775f087a46ca77c40 (diff)
downloadrust-a7f1649fbbcdc2b9904a2614c36b44e917747898.tar.gz
rust-a7f1649fbbcdc2b9904a2614c36b44e917747898.zip
Rollup merge of #62607 - estebank:this-mem-is-out-of-control, r=petrochenkov
Correctly break out of recovery loop

Fix #61858.
Diffstat (limited to 'src/libsyntax/parse')
-rw-r--r--src/libsyntax/parse/parser.rs5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs
index 871fc0e7062..e0633f73ac4 100644
--- a/src/libsyntax/parse/parser.rs
+++ b/src/libsyntax/parse/parser.rs
@@ -4629,6 +4629,9 @@ impl<'a> Parser<'a> {
     fn parse_block_tail(&mut self, lo: Span, s: BlockCheckMode) -> PResult<'a, P<Block>> {
         let mut stmts = vec![];
         while !self.eat(&token::CloseDelim(token::Brace)) {
+            if self.token == token::Eof {
+                break;
+            }
             let stmt = match self.parse_full_stmt(false) {
                 Err(mut err) => {
                     err.emit();
@@ -4643,8 +4646,6 @@ impl<'a> Parser<'a> {
             };
             if let Some(stmt) = stmt {
                 stmts.push(stmt);
-            } else if self.token == token::Eof {
-                break;
             } else {
                 // Found only `;` or `}`.
                 continue;