rust/compiler
Jacob Pratt d3c9908a8a
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.
2025-08-22 22:00:59 -04:00
..
rustc rename stable_mir to rustc_public, and rustc_smir to rustc_public_bridge 2025-07-14 09:25:54 +00:00
rustc_abi Move IntoDiagArg earlier in the dependency chains 2025-08-20 15:01:13 -07:00
rustc_arena
rustc_ast print raw lifetime idents with r# 2025-08-22 12:58:37 +08:00
rustc_ast_ir Tidy up Cargo.toml files. 2025-07-31 19:58:04 +10:00
rustc_ast_lowering Add an experimental unsafe(force_target_feature) attribute. 2025-08-22 01:26:26 +02:00
rustc_ast_passes Rollup merge of #145747 - joshtriplett:builtin-diag-dyn, r=jdonszelmann 2025-08-22 22:00:59 -04:00
rustc_ast_pretty print raw lifetime idents with r# 2025-08-22 12:58:37 +08:00
rustc_attr_parsing Rollup merge of #145573 - veluca93:unsafe-force-target-feature, r=davidtwco 2025-08-22 22:00:51 -04:00
rustc_baked_icu_data
rustc_borrowck Auto merge of #145701 - jhpratt:rollup-a0kg33p, r=jhpratt 2025-08-21 07:03:07 +00:00
rustc_builtin_macros Rollup merge of #145747 - joshtriplett:builtin-diag-dyn, r=jdonszelmann 2025-08-22 22:00:59 -04:00
rustc_codegen_cranelift Port the #[linkage] attribute to the new attribute system 2025-08-13 21:01:37 +02:00
rustc_codegen_gcc Complete functionality and general cleanup 2025-08-14 16:30:15 +00:00
rustc_codegen_llvm Rollup merge of #145705 - folkertdev:prefetch-remove-as-cast, r=RalfJung 2025-08-21 17:57:58 -04:00
rustc_codegen_ssa Add an experimental unsafe(force_target_feature) attribute. 2025-08-22 01:26:26 +02:00
rustc_const_eval Rollup merge of #145700 - nnethercote:fix-145696, r=lcnr 2025-08-21 17:57:56 -04:00
rustc_data_structures Uplift rustc_mir_transform::coverage::counters::union_find to rustc_data_structures. 2025-08-22 02:22:51 +00:00
rustc_driver
rustc_driver_impl Tidy up Cargo.toml files. 2025-07-31 19:58:04 +10:00
rustc_error_codes Rollup merge of #144944 - He1pa:E0793, r=compiler-errors 2025-08-15 16:16:32 +10:00
rustc_error_messages Move IntoDiagArg earlier in the dependency chains 2025-08-20 15:01:13 -07:00
rustc_errors Refactor lint buffering to avoid requiring a giant enum 2025-08-22 01:59:56 -07:00
rustc_expand Rollup merge of #145747 - joshtriplett:builtin-diag-dyn, r=jdonszelmann 2025-08-22 22:00:59 -04:00
rustc_feature Rollup merge of #145726 - aapoalas:reborrow-lang-experiment, r=petrochenkov 2025-08-22 22:00:55 -04:00
rustc_fluent_macro Remove all unused feature gates from the compiler 2025-06-08 14:50:42 +00:00
rustc_fs_util
rustc_graphviz
rustc_hashes
rustc_hir Rollup merge of #145726 - aapoalas:reborrow-lang-experiment, r=petrochenkov 2025-08-22 22:00:55 -04:00
rustc_hir_analysis make prefetch intrinsics safe 2025-08-20 00:35:42 +02:00
rustc_hir_id rustc_hir_id: Add a comment explaining why the crate exists 2025-08-20 15:04:00 -07:00
rustc_hir_pretty Propagate TraitImplHeader to hir 2025-08-11 17:05:42 -05:00
rustc_hir_typeck Rollup merge of #144804 - WaffleLapkin:reach-for-the-casts, r=compiler-errors 2025-08-19 14:18:20 +10:00
rustc_incremental Auto merge of #139758 - Zoxc:thread-local-graph, r=oli-obk 2025-05-07 12:39:54 +00:00
rustc_index Tidy up Cargo.toml files. 2025-07-31 19:58:04 +10:00
rustc_index_macros Tidy up Cargo.toml files. 2025-07-31 19:58:04 +10:00
rustc_infer nll-relate: improve hr opaque types support 2025-08-18 09:09:42 +02:00
rustc_interface Rollup merge of #145747 - joshtriplett:builtin-diag-dyn, r=jdonszelmann 2025-08-22 22:00:59 -04:00
rustc_lexer test(lexer): Add frontmatter unit test 2025-07-10 10:25:29 -05:00
rustc_lint Rollup merge of #145747 - joshtriplett:builtin-diag-dyn, r=jdonszelmann 2025-08-22 22:00:59 -04:00
rustc_lint_defs Migrate BuiltinLintDiag::HiddenUnicodeCodepoints to use LintDiagnostic directly 2025-08-22 03:01:35 -07:00
rustc_llvm Tell LLVM about read-only captures 2025-08-20 19:08:16 +02:00
rustc_log Add documentation for init_logger_with_additional_layer 2025-06-12 12:11:15 +02:00
rustc_macros remove should_render in PrintAttribute derive 2025-08-16 21:41:39 +08:00
rustc_metadata Auto merge of #145600 - jieyouxu:rollup-jw0bpnt, r=jieyouxu 2025-08-19 19:26:10 +00:00
rustc_middle Rollup merge of #145747 - joshtriplett:builtin-diag-dyn, r=jdonszelmann 2025-08-22 22:00:59 -04:00
rustc_mir_build Rollup merge of #145573 - veluca93:unsafe-force-target-feature, r=davidtwco 2025-08-22 22:00:51 -04:00
rustc_mir_dataflow Rollup merge of #145695 - cjgillot:place-elem-map, r=oli-obk,lcnr 2025-08-22 22:00:54 -04:00
rustc_mir_transform Rollup merge of #145738 - cjgillot:union-find-uplift, r=Zalathar 2025-08-22 22:00:56 -04:00
rustc_monomorphize Rollup merge of #144865 - WaffleLapkin:track-tail, r=lqd 2025-08-15 16:16:31 +10:00
rustc_next_trait_solver Auto merge of #145600 - jieyouxu:rollup-jw0bpnt, r=jieyouxu 2025-08-19 19:26:10 +00:00
rustc_parse Rollup merge of #145747 - joshtriplett:builtin-diag-dyn, r=jdonszelmann 2025-08-22 22:00:59 -04:00
rustc_parse_format update to literal-escaper-0.0.5 2025-07-08 10:16:44 +00:00
rustc_passes Add an experimental unsafe(force_target_feature) attribute. 2025-08-22 01:26:26 +02:00
rustc_pattern_analysis avoid unnecessary type sanity checks 2025-08-14 09:44:22 +02:00
rustc_privacy Propagate TraitImplHeader to hir 2025-08-11 17:05:42 -05:00
rustc_proc_macro Tidy up Cargo.toml files. 2025-07-31 19:58:04 +10:00
rustc_public fix missing parenthesis in pretty discriminant 2025-08-09 01:35:50 +08:00
rustc_public_bridge Remove useless lifetime parameter. 2025-07-23 23:54:37 +00:00
rustc_query_impl Remove unused allow attrs 2025-07-07 12:58:16 +00:00
rustc_query_system remove rustc_attr_data_structures 2025-07-31 14:19:27 +02:00
rustc_resolve Rollup merge of #145747 - joshtriplett:builtin-diag-dyn, r=jdonszelmann 2025-08-22 22:00:59 -04:00
rustc_sanitizers rename TraitRef::from_method to from_assoc 2025-08-09 14:22:01 +08:00
rustc_serialize use div_ceil instead of manual logic 2025-07-05 10:55:42 +02:00
rustc_session Migrate BuiltinLintDiag::UnexpectedBuiltinCfg to use LintDiagnostic directly 2025-08-22 02:01:01 -07:00
rustc_span Rollup merge of #145726 - aapoalas:reborrow-lang-experiment, r=petrochenkov 2025-08-22 22:00:55 -04:00
rustc_symbol_mangling Rollup merge of #145429 - bjorn3:codegen_fn_attrs_improvements, r=jdonszelmann 2025-08-19 19:45:31 +08:00
rustc_target Rollup merge of #144613 - pantsman0:nintendo_switch_cpu_features, r=wesleywiser 2025-08-21 17:57:49 -04:00
rustc_thread_pool Drop rust-version from rustc_thread_pool 2025-08-04 15:03:49 -07:00
rustc_trait_selection Rollup merge of #145641 - estebank:point-at-type-in-e0277, r=davidtwco 2025-08-22 22:00:52 -04:00
rustc_traits Eliminate unnecessary dependency from rustc_traits to rustc_hir 2025-08-20 15:04:00 -07:00
rustc_transmute Tidy up Cargo.toml files. 2025-07-31 19:58:04 +10:00
rustc_ty_utils Tell LLVM about read-only captures 2025-08-20 19:08:16 +02:00
rustc_type_ir Rollup merge of #145712 - notJoon:fix/outdate-link, r=lqd 2025-08-21 17:57:58 -04:00
rustc_type_ir_macros