diff options
| author | yukang <moorekang@gmail.com> | 2025-05-28 09:34:08 +0800 |
|---|---|---|
| committer | yukang <moorekang@gmail.com> | 2025-05-28 09:35:10 +0800 |
| commit | adcd0bf5c36ee49acf390f0d75125da4efda35ac (patch) | |
| tree | dd319a5fce944ec07504cd6538415c891ef80b40 /compiler/rustc_parse | |
| parent | 0fc6f1672bdde8163164f10e46d2d9ffcaeb2161 (diff) | |
| download | rust-adcd0bf5c36ee49acf390f0d75125da4efda35ac.tar.gz rust-adcd0bf5c36ee49acf390f0d75125da4efda35ac.zip | |
Fix ICE in tokenstream with contracts from parser recovery
Diffstat (limited to 'compiler/rustc_parse')
| -rw-r--r-- | compiler/rustc_parse/src/parser/stmt.rs | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/compiler/rustc_parse/src/parser/stmt.rs b/compiler/rustc_parse/src/parser/stmt.rs index 396ded96bde..ccc3410674b 100644 --- a/compiler/rustc_parse/src/parser/stmt.rs +++ b/compiler/rustc_parse/src/parser/stmt.rs @@ -515,8 +515,8 @@ impl<'a> Parser<'a> { fn error_block_no_opening_brace_msg(&mut self, msg: Cow<'static, str>) -> Diag<'a> { let prev = self.prev_token.span; let sp = self.token.span; - let mut e = self.dcx().struct_span_err(sp, msg); - self.label_expected_raw_ref(&mut e); + let mut err = self.dcx().struct_span_err(sp, msg); + self.label_expected_raw_ref(&mut err); let do_not_suggest_help = self.token.is_keyword(kw::In) || self.token == token::Colon @@ -558,20 +558,19 @@ impl<'a> Parser<'a> { stmt.span }; self.suggest_fixes_misparsed_for_loop_head( - &mut e, + &mut err, prev.between(sp), stmt_span, &stmt.kind, ); } Err(e) => { - self.recover_stmt_(SemiColonMode::Break, BlockMode::Ignore); - e.cancel(); + e.delay_as_bug(); } _ => {} } - e.span_label(sp, "expected `{`"); - e + err.span_label(sp, "expected `{`"); + err } fn suggest_fixes_misparsed_for_loop_head( |
