diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2024-02-17 18:47:40 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-02-17 18:47:40 +0100 |
| commit | 163c3ebf52f2b24f0e8d491375ee3d43af71e6d2 (patch) | |
| tree | 5b02b51cf9326c1f31ba803bd4dc800c1fbd9f3e /src | |
| parent | 6674be96570d63b460c36869d6edd5d590356290 (diff) | |
| parent | aba5f546de28a10f6c374c90200f6142d47a8e38 (diff) | |
| download | rust-163c3ebf52f2b24f0e8d491375ee3d43af71e6d2.tar.gz rust-163c3ebf52f2b24f0e8d491375ee3d43af71e6d2.zip | |
Rollup merge of #121085 - davidtwco:always-eager-diagnostics, r=nnethercote
errors: only eagerly translate subdiagnostics Subdiagnostics don't need to be lazily translated, they can always be eagerly translated. Eager translation is slightly more complex as we need to have a `DiagCtxt` available to perform the translation, which involves slightly more threading of that context. This slight increase in complexity should enable later simplifications - like passing `DiagCtxt` into `AddToDiagnostic` and moving Fluent messages into the diagnostic structs rather than having them in separate files (working on that was what led to this change). r? ```@nnethercote```
Diffstat (limited to 'src')
| -rw-r--r-- | src/parse/session.rs | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/parse/session.rs b/src/parse/session.rs index f0af401d3da..cff025cf2ab 100644 --- a/src/parse/session.rs +++ b/src/parse/session.rs @@ -1,3 +1,4 @@ +use std::borrow::Cow; use std::path::Path; use std::sync::atomic::{AtomicBool, Ordering}; @@ -40,6 +41,16 @@ impl Translate for SilentEmitter { fn fallback_fluent_bundle(&self) -> &rustc_errors::FluentBundle { panic!("silent emitter attempted to translate a diagnostic"); } + + // Override `translate_message` for the silent emitter because eager translation of + // subdiagnostics result in a call to this. + fn translate_message<'a>( + &'a self, + message: &'a rustc_errors::DiagnosticMessage, + _: &'a rustc_errors::translation::FluentArgs<'_>, + ) -> Result<Cow<'_, str>, rustc_errors::error::TranslateError<'_>> { + rustc_errors::emitter::silent_translate(message) + } } impl Emitter for SilentEmitter { |
