rust/compiler
Nicholas Nethercote 94f08492af 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.
2022-02-17 23:15:40 +11: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 Remove the alt_std_name option 2022-02-11 20:28:38 +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 Rollup merge of #94001 - durin42:llvm-15-uwtable, r=nikic 2022-02-15 16:02:37 +01:00
rustc_codegen_ssa Overhaul Const. 2022-02-15 16:19:59 +11:00
rustc_const_eval Overhaul Const. 2022-02-15 16:19:59 +11: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 Update unsafe_pin_internals unstable version. 2022-02-14 19:17:21 +00:00
rustc_fs_util Migrate to 2021 2021-09-20 22:21:42 -04:00
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 Overhaul Const. 2022-02-15 16:19:59 +11: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 Improve comments about type folding/visiting. 2022-02-17 23:15:40 +11:00
rustc_mir_build Overhaul Const. 2022-02-15 16:19:59 +11:00
rustc_mir_dataflow Overhaul TyS and Ty. 2022-02-15 16:03:24 +11:00
rustc_mir_transform Overhaul Const. 2022-02-15 16:19:59 +11: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 Migrate to 2021 2021-09-20 22:21:42 -04: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 Remove the alt_std_name option 2022-02-11 20:28:38 +01:00
rustc_span Auto merge of #93176 - danielhenrymantilla:stack-pinning-macro, r=m-ou-se 2022-02-15 09:32:03 +00:00
rustc_symbol_mangling Overhaul Const. 2022-02-15 16:19:59 +11:00
rustc_target rustc_target: Remove compiler-rt linking hack on Android 2022-02-13 21:22:02 +08:00
rustc_trait_selection Overhaul Const. 2022-02-15 16:19:59 +11: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 Revert "Auto merge of #92007 - oli-obk:lazy_tait2, r=nikomatsakis" 2022-02-11 07:18:06 +00:00
rustc_typeck Add removed comments back in self-outlives-lint 2022-02-15 09:17:09 -08:00