diff options
| author | Ralf Jung <post@ralfj.de> | 2024-02-29 19:40:52 +0100 |
|---|---|---|
| committer | Ralf Jung <post@ralfj.de> | 2024-02-29 19:40:52 +0100 |
| commit | 70758a788bec5bbab82c27cb8ab1da8d5fcf3588 (patch) | |
| tree | 27037b398b23531538b5f0bc9e32995f05da981f /compiler/rustc_parse/src/parser | |
| parent | 96edeb898982a24c8e3874bc37241fe26c2cebb6 (diff) | |
| parent | 1a1876c9790f168fb51afa335a7ba3e6fc267d75 (diff) | |
| download | rust-70758a788bec5bbab82c27cb8ab1da8d5fcf3588.tar.gz rust-70758a788bec5bbab82c27cb8ab1da8d5fcf3588.zip | |
Merge from rustc
Diffstat (limited to 'compiler/rustc_parse/src/parser')
| -rw-r--r-- | compiler/rustc_parse/src/parser/expr.rs | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/compiler/rustc_parse/src/parser/expr.rs b/compiler/rustc_parse/src/parser/expr.rs index f5a7bfd42ff..316a9c4f8df 100644 --- a/compiler/rustc_parse/src/parser/expr.rs +++ b/compiler/rustc_parse/src/parser/expr.rs @@ -1762,24 +1762,25 @@ impl<'a> Parser<'a> { err: impl FnOnce(&Self) -> Diag<'a>, ) -> L { assert!(could_be_unclosed_char_literal(ident)); - if let Some(diag) = self.dcx().steal_diagnostic(ident.span, StashKey::LifetimeIsChar) { - diag.with_span_suggestion_verbose( - ident.span.shrink_to_hi(), - "add `'` to close the char literal", - "'", - Applicability::MaybeIncorrect, - ) - .emit(); - } else { - err(self) - .with_span_suggestion_verbose( + self.dcx() + .try_steal_modify_and_emit_err(ident.span, StashKey::LifetimeIsChar, |err| { + err.span_suggestion_verbose( ident.span.shrink_to_hi(), "add `'` to close the char literal", "'", Applicability::MaybeIncorrect, - ) - .emit(); - } + ); + }) + .unwrap_or_else(|| { + err(self) + .with_span_suggestion_verbose( + ident.span.shrink_to_hi(), + "add `'` to close the char literal", + "'", + Applicability::MaybeIncorrect, + ) + .emit() + }); let name = ident.without_first_quote().name; mk_lit_char(name, ident.span) } |
