Auto merge of #125410 - fmease:adj-lint-diag-api, r=nnethercote
[perf] Delay the construction of early lint diag structs
Attacks some of the perf regressions from https://github.com/rust-lang/rust/pull/124417#issuecomment-2123700666.
See individual commits for details. The first three commits are not strictly necessary.
However, the 2nd one (06bc4fc671
, *Remove `LintDiagnostic::msg`*) makes the main change way nicer to implement.
It's also pretty sweet on its own if I may say so myself.
This commit is contained in:
commit
b582f807fa
50 changed files with 598 additions and 749 deletions
|
@ -200,8 +200,6 @@ pub trait SubdiagMessageOp<G: EmissionGuarantee> =
|
|||
pub trait LintDiagnostic<'a, G: EmissionGuarantee> {
|
||||
/// Decorate and emit a lint.
|
||||
fn decorate_lint<'b>(self, diag: &'b mut Diag<'a, G>);
|
||||
|
||||
fn msg(&self) -> DiagMessage;
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Encodable, Decodable)]
|
||||
|
|
|
@ -39,7 +39,7 @@ pub use diagnostic_impls::{
|
|||
};
|
||||
pub use emitter::ColorConfig;
|
||||
pub use rustc_error_messages::{
|
||||
fallback_fluent_bundle, fluent_bundle, DelayDm, DiagMessage, FluentBundle, LanguageIdentifier,
|
||||
fallback_fluent_bundle, fluent_bundle, DiagMessage, FluentBundle, LanguageIdentifier,
|
||||
LazyFallbackBundle, MultiSpan, SpanLabel, SubdiagMessage,
|
||||
};
|
||||
pub use rustc_lint_defs::{pluralize, Applicability};
|
||||
|
@ -572,8 +572,8 @@ impl Drop for DiagCtxtInner {
|
|||
if let Some(backtrace) = &self.must_produce_diag {
|
||||
panic!(
|
||||
"must_produce_diag: `trimmed_def_paths` called but no diagnostics emitted; \
|
||||
use `DelayDm` for lints or `with_no_trimmed_paths` for debugging. \
|
||||
called at: {backtrace}"
|
||||
`with_no_trimmed_paths` for debugging. \
|
||||
called at: {backtrace}"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue