about summary refs log tree commit diff
path: root/src/libsyntax/parse/parser.rs
diff options
context:
space:
mode:
authorEsteban Küber <esteban@kuber.com.ar>2019-07-22 18:29:49 -0700
committerEsteban Küber <esteban@kuber.com.ar>2019-07-22 18:29:49 -0700
commit5b3b6b8d00df27c46d6254c737b40e79bebcced2 (patch)
tree84338ba1b682290252c5b3bdfa8ba667be55b414 /src/libsyntax/parse/parser.rs
parent4bc1ce7bdb7f5dc9ea07c0b630c087d8e11140e4 (diff)
downloadrust-5b3b6b8d00df27c46d6254c737b40e79bebcced2.tar.gz
rust-5b3b6b8d00df27c46d6254c737b40e79bebcced2.zip
Make the parser TokenStream more resilient after mismatched delimiter recovery
Diffstat (limited to 'src/libsyntax/parse/parser.rs')
-rw-r--r--src/libsyntax/parse/parser.rs3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs
index 1d4d02c7325..197a9078b18 100644
--- a/src/libsyntax/parse/parser.rs
+++ b/src/libsyntax/parse/parser.rs
@@ -7670,6 +7670,9 @@ impl<'a> Parser<'a> {
         let ret = f(self);
         let last_token = if self.token_cursor.stack.len() == prev {
             &mut self.token_cursor.frame.last_token
+        } else if self.token_cursor.stack.is_empty() {//&& !self.unclosed_delims.is_empty() {
+            // This can happen with mismatched delimiters (#62881)
+            return Ok((ret?, TokenStream::new(vec![])));
         } else {
             &mut self.token_cursor.stack[prev].last_token
         };