rust/compiler
Matthias Krüger 9d70af54e4
Rollup merge of #133153 - maxcabrajac:flat_maps, r=petrochenkov
Add visits to nodes that already have flat_maps in ast::MutVisitor

This PR aims to add `visit_` methods for every node that has a `flat_map_` in MutVisitor, giving implementers free choice over overriding `flat_map` for 1-to-n conversions or `visit` for a 1-to-1.

There is one major problem: `flat_map_stmt`.
While all other default implementations of `flat_map`s are 1-to-1 conversion, as they either only call visits or a internal 1-to-many conversions are natural, `flat_map_stmt` doesn't follow this pattern.

`flat_map_stmt`'s default implementation is a 1-to-n conversion that panics if n > 1 (effectively being a 1-to-[0;1]). This means that it cannot be used as is for a default `visit_stmt`, which would be required to be a 1-to-1.

Implementing `visit_stmt` without runtime checks would require it to reach over a potential `flat_map_item` or `filter_map_expr` overrides and call for their `visit` counterparts directly.
Other than that, if we want to keep the behavior of `flat_map_stmt` it cannot call `visit_stmt` internally.

To me, it seems reasonable to make all default implementations 1-to-1 conversions and let implementers handle `visit_stmt` if they need it, but I don't know if calling `visit` directly when a 1-to-1 is required is ok or not.

related to #128974 & #127615

r? ``@petrochenkov``
2024-11-21 07:56:12 +01:00
..
rustc Auto merge of #132282 - Noratrieb:it-is-the-end-of-serial, r=cjgillot 2024-11-12 15:14:56 +00:00
rustc_abi pointee_info_at: fix logic for recursing into enums 2024-11-08 07:35:29 +01:00
rustc_arena move strict provenance lints to new feature gate, remove old feature gates 2024-10-21 15:22:17 +01:00
rustc_ast Rollup merge of #133153 - maxcabrajac:flat_maps, r=petrochenkov 2024-11-21 07:56:12 +01:00
rustc_ast_ir Add sugar for &pin (const|mut) types 2024-10-07 11:15:04 -07:00
rustc_ast_lowering Introduce min_generic_const_args and directly represent paths 2024-11-19 05:07:43 +00:00
rustc_ast_passes Rollup merge of #133023 - samestep:hir-stats-total-count, r=nnethercote 2024-11-19 09:19:20 +01:00
rustc_ast_pretty fix clippy::clone_on_ref_ptr for compiler 2024-10-28 18:05:08 +03:00
rustc_attr ensure that all publicly reachable const fn have const stability info 2024-11-10 10:16:26 +01:00
rustc_baked_icu_data Delete the cfg(not(parallel)) serial compiler 2024-11-12 13:38:58 +00:00
rustc_borrowck reduce false positives of tail-expr-drop-order from consumed values 2024-11-20 20:53:11 +08:00
rustc_builtin_macros Use visit_item instead of flat_map_item in test_harness.rs 2024-11-20 16:47:00 -03:00
rustc_codegen_cranelift reduce false positives of tail-expr-drop-order from consumed values 2024-11-20 20:53:11 +08:00
rustc_codegen_gcc When the required discriminator value exceeds LLVM's limits, drop the debug info for the function instead of panicking. 2024-11-19 05:19:09 -08:00
rustc_codegen_llvm When the required discriminator value exceeds LLVM's limits, drop the debug info for the function instead of panicking. 2024-11-19 05:19:09 -08:00
rustc_codegen_ssa Auto merge of #133261 - matthiaskrgr:rollup-ekui4we, r=matthiaskrgr 2024-11-20 21:58:38 +00:00
rustc_const_eval Auto merge of #131326 - dingxiangfei2009:issue-130836-attempt-2, r=nikomatsakis 2024-11-20 18:51:54 +00:00
rustc_data_structures Add UnordMap::clear method 2024-11-20 18:11:37 +01:00
rustc_driver
rustc_driver_impl Make rustc --explain busybox less compatible 2024-11-18 20:37:32 +00:00
rustc_error_codes remove support for rustc_safe_intrinsic attribute; use rustc_intrinsic functions instead 2024-11-08 09:16:00 +01:00
rustc_error_messages Delete the cfg(not(parallel)) serial compiler 2024-11-12 13:38:58 +00:00
rustc_errors Auto merge of #132954 - matthiaskrgr:rollup-x3rww9h, r=matthiaskrgr 2024-11-12 18:04:27 +00:00
rustc_expand Items 2024-11-20 16:42:18 -03:00
rustc_feature Rollup merge of #132732 - gavincrawford:as_ptr_attribute, r=Urgau 2024-11-20 01:54:24 -05:00
rustc_fluent_macro use tracked_path in rustc_fluent_macro 2024-10-19 22:32:38 +08:00
rustc_fs_util Couple of changes to make it easier to compile rustc for wasm 2024-09-26 19:51:14 +00:00
rustc_graphviz Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
rustc_hir Rollup merge of #132144 - adetaylor:receiver-trait-itself, r=wesleywiser 2024-11-11 21:58:29 +01:00
rustc_hir_analysis Rollup merge of #132207 - compiler-errors:tweak-res-mod-segment, r=petrochenkov 2024-11-21 07:56:12 +01:00
rustc_hir_pretty compiler: Switch to rustc_abi in hir_pretty, lint_defs, and mir_build 2024-10-30 22:38:49 -07:00
rustc_hir_typeck Auto merge of #133212 - lcnr:questionable-uwu, r=compiler-errors 2024-11-20 06:22:01 +00:00
rustc_incremental replace manual time convertions with std ones 2024-11-03 15:51:39 +03:00
rustc_index reduce false positives of tail-expr-drop-order from consumed values 2024-11-20 20:53:11 +08:00
rustc_index_macros Remove 'apostrophes' from rustc_parse_format 2024-10-14 23:22:51 +02:00
rustc_infer review 2024-11-18 10:50:14 +01:00
rustc_interface Rollup merge of #133023 - samestep:hir-stats-total-count, r=nnethercote 2024-11-19 09:19:20 +01:00
rustc_lexer Remove TokenKind::InvalidPrefix. 2024-11-19 18:06:22 +11:00
rustc_lint Rollup merge of #133153 - maxcabrajac:flat_maps, r=petrochenkov 2024-11-21 07:56:12 +01:00
rustc_lint_defs Auto merge of #131326 - dingxiangfei2009:issue-130836-attempt-2, r=nikomatsakis 2024-11-20 18:51:54 +00:00
rustc_llvm PassWrapper: disable UseOdrIndicator for Asan Win32 2024-11-14 04:20:18 +08:00
rustc_log Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
rustc_macros give a better error for tuple structs in derive(Diagnostic) 2024-10-27 21:23:28 -04:00
rustc_metadata use TypingEnv when no infcx is available 2024-11-18 10:38:56 +01:00
rustc_middle Auto merge of #133261 - matthiaskrgr:rollup-ekui4we, r=matthiaskrgr 2024-11-20 21:58:38 +00:00
rustc_mir_build Auto merge of #133261 - matthiaskrgr:rollup-ekui4we, r=matthiaskrgr 2024-11-20 21:58:38 +00:00
rustc_mir_dataflow reduce false positives of tail-expr-drop-order from consumed values 2024-11-20 20:53:11 +08:00
rustc_mir_transform Auto merge of #131326 - dingxiangfei2009:issue-130836-attempt-2, r=nikomatsakis 2024-11-20 18:51:54 +00:00
rustc_monomorphize move fn is_item_raw to TypingEnv 2024-11-19 18:06:20 +01:00
rustc_next_trait_solver Rip out built-in PointerLike impl 2024-11-20 16:13:57 +00:00
rustc_parse Auto merge of #133219 - matthiaskrgr:rollup-hnuq0zf, r=matthiaskrgr 2024-11-19 23:04:44 +00:00
rustc_parse_format Remove 'apostrophes' from rustc_parse_format 2024-10-14 23:22:51 +02:00
rustc_passes Auto merge of #133234 - jhpratt:rollup-42dmg4p, r=jhpratt 2024-11-20 09:27:56 +00:00
rustc_pattern_analysis Rollup merge of #132708 - estebank:const-as-binding, r=Nadrieril 2024-11-20 20:10:12 +01:00
rustc_privacy Simplify some places that deal with generic parameter defaults 2024-11-11 21:29:18 +01:00
rustc_query_impl Delete the cfg(not(parallel)) serial compiler 2024-11-12 13:38:58 +00:00
rustc_query_system Auto merge of #124780 - Mark-Simulacrum:lockless-cache, r=lcnr 2024-11-19 02:07:48 +00:00
rustc_resolve Store resolution for self and crate root module segments 2024-11-20 18:57:02 +00:00
rustc_sanitizers use TypingEnv when no infcx is available 2024-11-18 10:38:56 +01:00
rustc_serialize Fix explicit_iter_loop in rustc_serialize 2024-10-16 15:44:16 +02:00
rustc_session Rollup merge of #133023 - samestep:hir-stats-total-count, r=nnethercote 2024-11-19 09:19:20 +01:00
rustc_smir reduce false positives of tail-expr-drop-order from consumed values 2024-11-20 20:53:11 +08:00
rustc_span Rollup merge of #132732 - gavincrawford:as_ptr_attribute, r=Urgau 2024-11-20 01:54:24 -05:00
rustc_symbol_mangling additional TypingEnv cleanups 2024-11-19 21:36:23 +01:00
rustc_target Rollup merge of #131736 - hoodmane:emscripten-wasm-bigint, r=workingjubilee 2024-11-21 07:56:11 +01:00
rustc_trait_selection Rip out built-in PointerLike impl 2024-11-20 16:13:57 +00:00
rustc_traits use TypingEnv when no infcx is available 2024-11-18 10:38:56 +01:00
rustc_transmute use TypingEnv when no infcx is available 2024-11-18 10:38:56 +01:00
rustc_ty_utils reduce false positives of tail-expr-drop-order from consumed values 2024-11-20 20:53:11 +08:00
rustc_type_ir Rip out built-in PointerLike impl 2024-11-20 16:13:57 +00:00
rustc_type_ir_macros do not relate Abi and Safety 2024-10-22 23:13:04 +02:00
stable_mir Rollup merge of #132161 - celinval:smir-fix-indent, r=compiler-errors 2024-11-08 18:51:28 +11:00