about summary refs log tree commit diff
path: root/Cargo.lock
diff options
context:
space:
mode:
authorJacob Pratt <jacob@jhpratt.dev>2025-08-22 22:00:59 -0400
committerGitHub <noreply@github.com>2025-08-22 22:00:59 -0400
commitd3c9908a8a91e8d732201caac2c809d4e96d0027 (patch)
treec5836250da69e430ad7c61b9aa57c337c87fc16e /Cargo.lock
parent561656db6789caface445d993b015d709ddbb635 (diff)
parent52fadd8f9623589143a4c2e5725c3b3c91e160c4 (diff)
downloadrust-d3c9908a8a91e8d732201caac2c809d4e96d0027.tar.gz
rust-d3c9908a8a91e8d732201caac2c809d4e96d0027.zip
Rollup merge of #145747 - joshtriplett:builtin-diag-dyn, r=jdonszelmann
Refactor lint buffering to avoid requiring a giant enum

Lint buffering currently relies on a giant enum `BuiltinLintDiag` containing all the lints that might potentially get buffered. In addition to being an unwieldy enum in a central crate, this also makes `rustc_lint_defs` a build bottleneck: it depends on various types from various crates (with a steady pressure to add more), and many crates depend on it.

Having all of these variants in a separate crate also prevents detecting when a variant becomes unused, which we can do with a dedicated type defined and used in the same crate.

Refactor this to use a dyn trait, to allow using `LintDiagnostic` types directly.

Because the existing `BuiltinLintDiag` requires some additional types in order to decorate some variants, which are only available later in `rustc_lint`, use an enum `DecorateDiagCompat` to handle both the `dyn LintDiagnostic` case and the `BuiltinLintDiag` case.

---

With the infrastructure in place, use it to migrate three of the enum variants to use `LintDiagnostic` directly, as a proof of concept and to demonstrate that the net result is a reduction in code size and a removal of a boilerplate-heavy layer of indirection.

Also remove an unused `BuiltinLintDiag` variant.
Diffstat (limited to 'Cargo.lock')
-rw-r--r--Cargo.lock2
1 files changed, 1 insertions, 1 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 8eb77165cf2..1d36ba471f3 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -3797,6 +3797,7 @@ dependencies = [
  "annotate-snippets 0.11.5",
  "derive_setters",
  "rustc_abi",
+ "rustc_ast",
  "rustc_data_structures",
  "rustc_error_codes",
  "rustc_error_messages",
@@ -4134,7 +4135,6 @@ dependencies = [
 name = "rustc_lint_defs"
 version = "0.0.0"
 dependencies = [
- "rustc_abi",
  "rustc_ast",
  "rustc_data_structures",
  "rustc_error_messages",