]> git.lizzy.rs Git - rust.git/blobdiff - compiler/rustc_parse/src/parser/diagnostics.rs
Rollup merge of #104067 - jeremyd2019:patch-1, r=davidtwco
[rust.git] / compiler / rustc_parse / src / parser / diagnostics.rs
index 7dc4fd0044f1ff5d3487fd8d2648e932b8e0df8c..c609aa93da3a75b0d9cb50637ef85e18dce8bfe5 100644 (file)
@@ -2468,11 +2468,15 @@ pub(crate) fn maybe_recover_colon_colon_in_pat_typo(
     }
 
     pub(crate) fn maybe_recover_unexpected_block_label(&mut self) -> bool {
-        let Some(label) = self.eat_label().filter(|_| {
-            self.eat(&token::Colon) && self.token.kind == token::OpenDelim(Delimiter::Brace)
-        }) else {
+        // Check for `'a : {`
+        if !(self.check_lifetime()
+            && self.look_ahead(1, |tok| tok.kind == token::Colon)
+            && self.look_ahead(2, |tok| tok.kind == token::OpenDelim(Delimiter::Brace)))
+        {
             return false;
-        };
+        }
+        let label = self.eat_label().expect("just checked if a label exists");
+        self.bump(); // eat `:`
         let span = label.ident.span.to(self.prev_token.span);
         let mut err = self.struct_span_err(span, "block label not supported here");
         err.span_label(span, "not supported here");