Auto merge of #95968 - davidtwco:translation-lazy-fallback, r=oli-obk
errors: lazily load fallback fluent bundle Addresses (hopefully) https://github.com/rust-lang/rust/pull/95667#issuecomment-1094794087. Loading the fallback bundle in compilation sessions that won't go on to emit any errors unnecessarily degrades compile time performance, so lazily create the Fluent bundle when it is first required. r? `@ghost` (just for perf initially)
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
//! Validates syntax inside Rust code blocks (\`\`\`rust).
|
||||
use rustc_data_structures::sync::{Lock, Lrc};
|
||||
use rustc_errors::{emitter::Emitter, Applicability, Diagnostic, Handler};
|
||||
use rustc_errors::{emitter::Emitter, Applicability, Diagnostic, Handler, LazyFallbackBundle};
|
||||
use rustc_middle::lint::LintDiagnosticBuilder;
|
||||
use rustc_parse::parse_stream_from_source_str;
|
||||
use rustc_session::parse::ParseSess;
|
||||
@@ -32,8 +32,8 @@ struct SyntaxChecker<'a, 'tcx> {
|
||||
impl<'a, 'tcx> SyntaxChecker<'a, 'tcx> {
|
||||
fn check_rust_syntax(&self, item: &clean::Item, dox: &str, code_block: RustCodeBlock) {
|
||||
let buffer = Lrc::new(Lock::new(Buffer::default()));
|
||||
let fallback_bundle = rustc_errors::fallback_fluent_bundle(false)
|
||||
.expect("failed to load fallback fluent bundle");
|
||||
let fallback_bundle =
|
||||
rustc_errors::fallback_fluent_bundle(rustc_errors::DEFAULT_LOCALE_RESOURCES, false);
|
||||
let emitter = BufferEmitter { buffer: Lrc::clone(&buffer), fallback_bundle };
|
||||
|
||||
let sm = Lrc::new(SourceMap::new(FilePathMapping::empty()));
|
||||
@@ -173,7 +173,7 @@ struct Buffer {
|
||||
|
||||
struct BufferEmitter {
|
||||
buffer: Lrc<Lock<Buffer>>,
|
||||
fallback_bundle: Lrc<rustc_errors::FluentBundle>,
|
||||
fallback_bundle: LazyFallbackBundle,
|
||||
}
|
||||
|
||||
impl Emitter for BufferEmitter {
|
||||
@@ -194,7 +194,7 @@ impl Emitter for BufferEmitter {
|
||||
None
|
||||
}
|
||||
|
||||
fn fallback_fluent_bundle(&self) -> &Lrc<rustc_errors::FluentBundle> {
|
||||
&self.fallback_bundle
|
||||
fn fallback_fluent_bundle(&self) -> &rustc_errors::FluentBundle {
|
||||
&**self.fallback_bundle
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user