Skip to content

Commit d5ead47

Browse files
committed
Auto merge of #103042 - davidtwco:translation-distributed-ftl, r=oli-obk
errors: generate typed identifiers in each crate Instead of loading the Fluent resources for every crate in `rustc_error_messages`, each crate generates typed identifiers for its own diagnostics and creates a static which are pulled together in the `rustc_driver` crate and provided to the diagnostic emitter. There are advantages and disadvantages to this change.. #### Advantages - Changing a diagnostic now only recompiles the crate for that diagnostic and those crates that depend on it, rather than `rustc_error_messages` and all crates thereafter. - This approach can be used to support first-party crates that want to supply translatable diagnostics (e.g. `rust-lang/thorin` in rust-lang/rust#102612 (comment), cc `@JhonnyBillM)` - We can extend this a little so that tools built using rustc internals (like clippy or rustdoc) can add their own diagnostic resources (much more easily than those resources needing to be available to `rustc_error_messages`) #### Disadvantages - Crates can only refer to the diagnostic messages defined in the current crate (or those from dependencies), rather than all diagnostic messages. - `rustc_driver` (or some other crate we create for this purpose) has to directly depend on *everything* that has error messages. - It already transitively depended on all these crates. #### Pending work - [x] I don't know how to make `rustc_codegen_gcc`'s translated diagnostics work with this approach - because `rustc_driver` can't depend on that crate and so can't get its resources to provide to the diagnostic emission. I don't really know how the alternative codegen backends are actually wired up to the compiler at all. - [x] Update `triagebot.toml` to track the moved FTL files. r? `@compiler-errors` cc #100717
2 parents 8e7f805 + 596d6b5 commit d5ead47

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

clippy_lints/src/doc.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -704,8 +704,10 @@ fn check_code(cx: &LateContext<'_>, text: &str, edition: Edition, span: Span) {
704704
let filename = FileName::anon_source_code(&code);
705705

706706
let sm = Lrc::new(SourceMap::new(FilePathMapping::empty()));
707-
let fallback_bundle =
708-
rustc_errors::fallback_fluent_bundle(rustc_errors::DEFAULT_LOCALE_RESOURCES, false);
707+
let fallback_bundle = rustc_errors::fallback_fluent_bundle(
708+
rustc_driver::DEFAULT_LOCALE_RESOURCES.to_vec(),
709+
false
710+
);
709711
let emitter = EmitterWriter::new(
710712
Box::new(io::sink()),
711713
None,

src/driver.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,10 @@ fn report_clippy_ice(info: &panic::PanicInfo<'_>, bug_report_url: &str) {
209209
// Separate the output with an empty line
210210
eprintln!();
211211

212-
let fallback_bundle = rustc_errors::fallback_fluent_bundle(rustc_errors::DEFAULT_LOCALE_RESOURCES, false);
212+
let fallback_bundle = rustc_errors::fallback_fluent_bundle(
213+
rustc_driver::DEFAULT_LOCALE_RESOURCES.to_vec(),
214+
false
215+
);
213216
let emitter = Box::new(rustc_errors::emitter::EmitterWriter::stderr(
214217
rustc_errors::ColorConfig::Auto,
215218
None,

0 commit comments

Comments
 (0)