rust/compiler
Matthias Krüger 98c54c8cad
Rollup merge of #93758 - nnethercote:improve-folding-comments, r=BoxyUwU
Improve comments about type folding/visiting.

I have found this code confusing for years. I've always roughly
understood it, but never exactly. I just made my fourth(?) attempt and
finally cracked it.

This commit improves the comments. In particular, it explicitly
describes how you can't do a custom fold/visit of any type; there are
actually a handful of "types of interest" (e.g. `Ty`, `Predicate`,
`Region`, `Const`) that can be custom folded/visted, and all other types
just get a generic traversal. I think this was the part that eluded me
on all my prior attempts at understanding.

The commit also updates comments to account for some newer changes such
as the fallible/infallible folding distinction, does some minor
reorderings, and moves one `impl` to a better place.

r? `@BoxyUwU`
2022-02-17 23:00:55 +01:00
..
rustc remove unused jemallocator crate 2022-01-28 16:56:05 +01:00
rustc_apfloat Stabilize iter::zip. 2021-12-14 18:50:31 -04:00
rustc_arena Remove unused dep from rustc_arena 2022-02-02 17:37:14 +01:00
rustc_ast Auto merge of #93752 - eholk:drop-tracking-break-continue, r=nikomatsakis 2022-02-15 02:27:37 +00:00
rustc_ast_lowering Auto merge of #91403 - cjgillot:inherit-async, r=oli-obk 2022-02-12 21:42:10 +00:00
rustc_ast_passes Auto merge of #93561 - Amanieu:more-unwind-abi, r=nagisa 2022-02-08 03:20:05 +00:00
rustc_ast_pretty Pretty print ItemKind::Use in rustfmt style 2022-02-07 21:51:05 -08:00
rustc_attr Ensure that queries only return Copy types. 2022-02-09 20:07:38 +01:00
rustc_borrowck Overhaul Const. 2022-02-15 16:19:59 +11:00
rustc_builtin_macros Rollup merge of #94030 - ChayimFriedman2:issue-94010, r=petrochenkov 2022-02-17 06:30:02 +01:00
rustc_codegen_cranelift Overhaul Const. 2022-02-15 16:19:59 +11:00
rustc_codegen_gcc Unconditionally update symbols 2022-02-10 18:27:18 +01:00
rustc_codegen_llvm Auto merge of #93577 - nikic:llvm-14, r=nagisa 2022-02-17 13:08:46 +00:00
rustc_codegen_ssa Overhaul Const. 2022-02-15 16:19:59 +11:00
rustc_const_eval Support pretty printing of invalid constants 2022-02-16 00:38:59 +01:00
rustc_data_structures Address review comments. 2022-02-15 16:20:01 +11:00
rustc_driver Remove Config::stderr 2022-02-13 11:49:52 +01:00
rustc_error_codes Auto merge of #91403 - cjgillot:inherit-async, r=oli-obk 2022-02-12 21:42:10 +00:00
rustc_errors add a rustc::query_stability lint 2022-02-01 10:15:59 +01:00
rustc_expand add a rustc::query_stability lint 2022-02-01 10:15:59 +01:00
rustc_feature Rollup merge of #93337 - Amanieu:asm_tracking, r=tmiasko 2022-02-17 23:00:55 +01:00
rustc_fs_util
rustc_graphviz eplace usages of vec![].into_iter with [].into_iter 2022-01-09 14:09:25 +11:00
rustc_hir Auto merge of #93938 - BoxyUwU:fix_res_self_ty, r=lcnr 2022-02-14 12:26:43 +00:00
rustc_hir_pretty Rollup merge of #93746 - cjgillot:nodefii, r=nikomatsakis 2022-02-09 14:12:22 +09:00
rustc_incremental add a rustc::query_stability lint 2022-02-01 10:15:59 +01:00
rustc_index implement lint for suspicious auto trait impls 2022-02-01 09:55:19 +01:00
rustc_infer Inline UnifyKey::index and UnifyKey::from_index 2022-02-15 19:07:06 +01:00
rustc_interface Remove Config::stderr 2022-02-13 11:49:52 +01:00
rustc_lexer Auto merge of #91393 - Julian-Wollersberger:lexer_optimization, r=petrochenkov 2021-12-03 13:20:14 +00:00
rustc_lint Overhaul Const. 2022-02-15 16:19:59 +11:00
rustc_lint_defs implement lint for suspicious auto trait impls 2022-02-01 09:55:19 +01:00
rustc_llvm llvm: migrate to new parameter-bearing uwtable attr 2022-02-14 16:09:53 -05:00
rustc_log Make rustc_log doc test runnable 2022-01-03 22:31:56 -08:00
rustc_macros Make Decodable and Decoder infallible. 2022-01-22 10:38:31 +11:00
rustc_metadata Overhaul Const. 2022-02-15 16:19:59 +11:00
rustc_middle Rollup merge of #93758 - nnethercote:improve-folding-comments, r=BoxyUwU 2022-02-17 23:00:55 +01:00
rustc_mir_build use AllocId and Ty in ExprKind::StaticRef and delay ConstValue construction 2022-02-15 21:18:33 +01:00
rustc_mir_dataflow Overhaul TyS and Ty. 2022-02-15 16:03:24 +11:00
rustc_mir_transform Inline UnifyKey::index and UnifyKey::from_index 2022-02-15 19:07:06 +01:00
rustc_monomorphize Overhaul Const. 2022-02-15 16:19:59 +11:00
rustc_parse suggest using raw string literals when invalid escapes appear 2022-02-14 15:11:38 -05:00
rustc_parse_format Correctly mark the span of captured arguments in format_args!() 2022-02-16 07:34:06 +00:00
rustc_passes change to a struct variant 2022-02-12 11:23:53 +00:00
rustc_plugin_impl replace dynamic library module with libloading 2021-12-06 12:03:47 -05:00
rustc_privacy Overhaul Const. 2022-02-15 16:19:59 +11:00
rustc_query_impl Overhaul Const. 2022-02-15 16:19:59 +11:00
rustc_query_system Revert "Auto merge of #92007 - oli-obk:lazy_tait2, r=nikomatsakis" 2022-02-11 07:18:06 +00:00
rustc_resolve Rename PtrKey as Interned and improve it. 2022-02-15 15:50:29 +11:00
rustc_save_analysis change to a struct variant 2022-02-12 11:23:53 +00:00
rustc_serialize Drop json::from_reader 2022-02-05 15:07:10 -05:00
rustc_session Add support for control-flow protection 2022-02-14 08:31:24 -08:00
rustc_span Destabilize cfg(target_has_atomic_load_store = ...) 2022-02-16 10:28:12 -05:00
rustc_symbol_mangling Overhaul Const. 2022-02-15 16:19:59 +11:00
rustc_target Auto merge of #93577 - nikic:llvm-14, r=nagisa 2022-02-17 13:08:46 +00:00
rustc_trait_selection Rollup merge of #94030 - ChayimFriedman2:issue-94010, r=petrochenkov 2022-02-17 06:30:02 +01:00
rustc_traits Overhaul Const. 2022-02-15 16:19:59 +11:00
rustc_ty_utils Overhaul RegionKind and Region. 2022-02-15 16:08:52 +11:00
rustc_type_ir Inline UnifyKey::index and UnifyKey::from_index 2022-02-15 19:07:06 +01:00
rustc_typeck Rollup merge of #94031 - danielhenrymantilla:diagnostics/union-drop-suggest-copy-bound-alternative, r=davidtwco 2022-02-17 06:30:03 +01:00