rust/compiler
Matthias Krüger 71b73e529a
Rollup merge of #143416 - joshtriplett:mbe-simplifications, r=nnethercote
mbe: Defer checks for `compile_error!` until reporting an unused macro rule

The current MBE parser checks rules at initial parse time to see if their RHS has `compile_error!` in it, and returns a list of rule indexes and LHS spans that don't map to `compile_error!`, for use in unused macro rule checking.

Instead, have the unused macro rule reporting ask the macro for the rule to report, and let the macro check at that time. That avoids checking rules unless they're unused.

In the process, refactor the data structure used to store macro rules, to group the LHS and RHS (and LHS span) of each rule together, and refactor the unused rule tracking to only track rule indexes.

This builds atop a couple of minor MBE refactors. I would suggest reviewing commit-by-commit.

The overall result is a further simplification of the macro code.
2025-07-06 10:03:22 +02:00
..
rustc Revert "Use workspace lints for crates in compiler/ #138084" 2025-03-10 18:12:47 +08:00
rustc_abi Remove PointerLike trait 2025-07-03 20:03:49 +00:00
rustc_arena Introduce Arena::try_alloc_from_iter. 2025-04-19 01:13:18 +00:00
rustc_ast Complete mut_visit. 2025-07-05 12:37:17 +00:00
rustc_ast_ir Use -Wunused_crate_dependencies for compiler crates. 2025-03-20 08:59:43 +11:00
rustc_ast_lowering Rollup merge of #143380 - cjgillot:kw_span, r=compiler-errors 2025-07-04 05:47:27 +02:00
rustc_ast_passes Rollup merge of #143380 - cjgillot:kw_span, r=compiler-errors 2025-07-04 05:47:27 +02:00
rustc_ast_pretty Remove support for dyn* 2025-07-01 19:00:21 +00:00
rustc_attr_data_structures Port #[ignore] to the new attribute parsing infrastructure 2025-07-05 21:23:09 +02:00
rustc_attr_parsing Port #[ignore] to the new attribute parsing infrastructure 2025-07-05 21:23:09 +02:00
rustc_baked_icu_data Add unreachable_pub to RUSTC_LINT_FLAGS for compiler/ crates. 2025-03-11 13:14:21 +11:00
rustc_borrowck Nits 2025-07-04 18:26:09 +00:00
rustc_builtin_macros Rollup merge of #143380 - cjgillot:kw_span, r=compiler-errors 2025-07-04 05:47:27 +02:00
rustc_codegen_cranelift Make __rust_alloc_error_handler_should_panic a function 2025-07-03 10:52:21 -07:00
rustc_codegen_gcc Make __rust_alloc_error_handler_should_panic a function 2025-07-03 10:52:21 -07:00
rustc_codegen_llvm Rollup merge of #143387 - dpaoliello:shouldpanicfn, r=bjorn3 2025-07-04 16:22:36 +02:00
rustc_codegen_ssa codegen_ssa: replace a Result by an Either 2025-07-05 15:53:56 +02:00
rustc_const_eval Stop using Key trait randomly 2025-07-05 18:37:11 +00:00
rustc_data_structures Rollup merge of #143406 - scottmcm:did-we-need-that-unsafe, r=compiler-errors 2025-07-05 00:12:10 +02:00
rustc_driver Remove recursion_limit increases. 2025-04-02 16:25:27 +11:00
rustc_driver_impl Rollup merge of #143019 - danielframpton:codegen-backend-parse, r=bjorn3 2025-06-30 20:49:40 +02:00
rustc_error_codes compiler: Trim the misleading C of C-cmse from errors 2025-06-25 00:52:10 -07:00
rustc_error_messages Remove unused feature gates 2025-06-28 23:36:46 +00:00
rustc_errors Rollup merge of #143417 - klensy:termize, r=jieyouxu 2025-07-04 16:22:37 +02:00
rustc_expand mbe: Defer checks for compile_error! until reporting an unused macro rule 2025-07-05 16:23:13 -07:00
rustc_feature Auto merge of #143214 - camsteffen:remove-let-chains-feature, r=est31 2025-07-02 17:18:47 +00:00
rustc_fluent_macro Remove all unused feature gates from the compiler 2025-06-08 14:50:42 +00:00
rustc_fs_util Retry if creating temp fails with access denied 2025-04-25 11:28:36 +00:00
rustc_graphviz Remove #![warn(unreachable_pub)] from all compiler/ crates. 2025-03-11 13:14:21 +11:00
rustc_hashes Revert "Use workspace lints for crates in compiler/ #138084" 2025-03-10 18:12:47 +08:00
rustc_hir Port #[ignore] to the new attribute parsing infrastructure 2025-07-05 21:23:09 +02:00
rustc_hir_analysis Remove yields_in_scope from the scope tree. 2025-07-05 15:24:15 +00:00
rustc_hir_pretty Remove support for dyn* 2025-07-01 19:00:21 +00:00
rustc_hir_typeck Rollup merge of #143394 - workingjubilee:reorganize-hir-analysis-provide-fn, r=compiler-errors 2025-07-04 05:47:28 +02:00
rustc_incremental Auto merge of #139758 - Zoxc:thread-local-graph, r=oli-obk 2025-05-07 12:39:54 +00:00
rustc_index index: add method for checking range on DenseBitSet 2025-06-04 00:47:12 +02:00
rustc_index_macros In rustc_mir_tranform, iterate over index newtypes instead of ints 2025-04-12 11:53:07 +00:00
rustc_infer Fix pretty printing of placeholder types 2025-07-04 18:26:09 +00:00
rustc_interface Save metadata among work products. 2025-07-04 14:02:17 +00:00
rustc_lexer setup CI and tidy to use typos for spellchecking and fix few typos 2025-07-03 10:51:06 +03:00
rustc_lint Stop using Key trait randomly 2025-07-05 18:37:11 +00:00
rustc_lint_defs setup CI and tidy to use typos for spellchecking and fix few typos 2025-07-03 10:51:06 +03:00
rustc_llvm rustc_llvm: add Windows system libs only when cross-compiling from Windows 2025-05-31 15:47:14 +02:00
rustc_log Add documentation for init_logger_with_additional_layer 2025-06-12 12:11:15 +02:00
rustc_macros Rollup merge of #134006 - klensy:typos, r=nnethercote 2025-07-03 13:29:35 +02:00
rustc_metadata Add comment and move assertion. 2025-07-04 14:02:18 +00:00
rustc_middle Remove yields_in_scope from the scope tree. 2025-07-05 15:24:15 +00:00
rustc_mir_build Remove yields_in_scope from the scope tree. 2025-07-05 15:24:15 +00:00
rustc_mir_dataflow mir: Use the new method for BasicBlockData 2025-06-29 20:39:13 +08:00
rustc_mir_transform Auto merge of #142890 - kornelski:unused-var-debug, r=saethlin 2025-07-03 23:17:03 +00:00
rustc_monomorphize setup CI and tidy to use typos for spellchecking and fix few typos 2025-07-03 10:51:06 +03:00
rustc_next_trait_solver Don't compress input universes 2025-07-05 18:41:59 +00:00
rustc_parse Port #[ignore] to the new attribute parsing infrastructure 2025-07-05 21:23:09 +02:00
rustc_parse_format update to literal-escaper 0.0.4 for better API without unreachable and faster string parsing 2025-06-23 06:36:22 +00:00
rustc_passes Port #[ignore] to the new attribute parsing infrastructure 2025-07-05 21:23:09 +02:00
rustc_pattern_analysis treat box patterns as deref patterns in THIR and usefulness analysis 2025-07-04 01:28:35 -07:00
rustc_privacy Reorder fields in hir::ItemKind variants. 2025-05-30 02:23:20 +10:00
rustc_proc_macro update to literal-escaper 0.0.4 for better API without unreachable and faster string parsing 2025-06-23 06:36:22 +00:00
rustc_query_impl Reuse metadata file from work products. 2025-07-04 14:02:17 +00:00
rustc_query_system setup CI and tidy to use typos for spellchecking and fix few typos 2025-07-03 10:51:06 +03:00
rustc_resolve mbe: Defer checks for compile_error! until reporting an unused macro rule 2025-07-05 16:23:13 -07:00
rustc_sanitizers Remove support for dyn* 2025-07-01 19:00:21 +00:00
rustc_serialize setup CI and tidy to use typos for spellchecking and fix few typos 2025-07-03 10:51:06 +03:00
rustc_session Rollup merge of #143417 - klensy:termize, r=jieyouxu 2025-07-04 16:22:37 +02:00
rustc_smir Same for types 2025-07-04 18:26:09 +00:00
rustc_span Remove PointerLike trait 2025-07-03 20:03:49 +00:00
rustc_symbol_mangling Remove support for dyn* 2025-07-01 19:00:21 +00:00
rustc_target Rollup merge of #134006 - klensy:typos, r=nnethercote 2025-07-03 13:29:35 +02:00
rustc_thread_pool Apply suggestions from code review 2025-06-16 12:27:47 -07:00
rustc_trait_selection Nits 2025-07-04 18:26:09 +00:00
rustc_traits Remove fast path from codegen_select, since Sized has no methods 2025-07-02 00:33:06 +00:00
rustc_transmute tag_for_variant: properly pass TypingEnv 2025-06-27 17:04:33 +02:00
rustc_ty_utils Rollup merge of #134006 - klensy:typos, r=nnethercote 2025-07-03 13:29:35 +02:00
rustc_type_ir setup CI and tidy to use typos for spellchecking and fix few typos 2025-07-03 10:51:06 +03:00
rustc_type_ir_macros Split TypeFolder and FallibleTypeFolder 2025-04-15 18:30:35 +00:00
stable_mir Change rustc_driver dependency on stable_mir crate 2025-04-30 15:39:52 -07:00