rust/compiler
bors 6df1d82869 Auto merge of #88950 - Nadrieril:deconstruct-pat, r=oli-obk
Add an intermediate representation to exhaustiveness checking

The exhaustiveness checking algorithm keeps deconstructing patterns into a `Constructor` and some `Fields`, but does so a bit all over the place. This PR introduces a new representation for patterns that already has that information, so we only compute it once at the start.
I find this makes code easier to follow. In particular `DeconstructedPat::specialize` is a lot simpler than what happened before, and more closely matches the description of the algorithm. I'm also hoping this could help for the project of librarifying exhaustiveness for rust_analyzer since it decouples the algorithm from `rustc_middle::Pat`.
2021-09-29 00:16:17 +00:00
..
rustc Migrate to 2021 2021-09-20 22:21:42 -04:00
rustc_apfloat Migrate to 2021 2021-09-20 22:21:42 -04:00
rustc_arena Migrate to 2021 2021-09-20 22:21:42 -04:00
rustc_ast Migrate to 2021 2021-09-20 22:21:42 -04:00
rustc_ast_lowering rustc_index: Add some map-like APIs to IndexVec 2021-09-22 03:11:29 +03:00
rustc_ast_passes Migrate to 2021 2021-09-20 22:21:42 -04:00
rustc_ast_pretty Migrate to 2021 2021-09-20 22:21:42 -04:00
rustc_attr Migrate to 2021 2021-09-20 22:21:42 -04:00
rustc_borrowck More tracing instrumentation 2021-09-28 12:28:22 +00:00
rustc_builtin_macros derive: Do not configure or clone items unless necessary 2021-09-24 21:45:51 +03:00
rustc_codegen_cranelift Auto merge of #89092 - bjorn3:sync_cg_clif-2021-09-19, r=bjorn3 2021-09-26 23:31:01 +00:00
rustc_codegen_llvm Enable new pass manager on LLVM 13 2021-09-25 11:24:23 +02:00
rustc_codegen_ssa Auto merge of #89030 - nbdd0121:box2, r=jonas-schievink 2021-09-25 11:01:13 +00:00
rustc_const_eval Report heap allocation instead of non-const fn for exchange_malloc call 2021-09-25 01:08:41 +01:00
rustc_data_structures More tracing instrumentation 2021-09-28 12:28:22 +00:00
rustc_driver Migrate to 2021 2021-09-20 22:21:42 -04:00
rustc_error_codes Migrate to 2021 2021-09-20 22:21:42 -04:00
rustc_errors Rollup merge of #89046 - oli-obk:fix_oflo, r=estebank 2021-09-22 19:03:22 +02:00
rustc_expand Check for macros in built-in attributes that don't support them. 2021-09-25 09:03:15 -07:00
rustc_feature Stabilize feature(macro_attributes_in_derive_output) 2021-09-24 21:48:30 +03:00
rustc_fs_util Migrate to 2021 2021-09-20 22:21:42 -04:00
rustc_graphviz Migrate to 2021 2021-09-20 22:21:42 -04:00
rustc_hir Auto merge of #89103 - Mark-Simulacrum:migrate-2021, r=estebank 2021-09-21 19:25:49 +00:00
rustc_hir_pretty Migrate to 2021 2021-09-20 22:21:42 -04:00
rustc_incremental Migrate to 2021 2021-09-20 22:21:42 -04:00
rustc_index rustc_index: Add some map-like APIs to IndexVec 2021-09-22 03:11:29 +03:00
rustc_infer More tracing instrumentation 2021-09-28 12:28:22 +00:00
rustc_interface Auto merge of #89214 - smoelius:register_tool, r=petrochenkov 2021-09-27 18:21:14 +00:00
rustc_lexer Migrate to 2021 2021-09-20 22:21:42 -04:00
rustc_lint Pass real crate-level attributes to pre_expansion_lint 2021-09-26 21:50:50 +00:00
rustc_lint_defs Auto merge of #88865 - guswynn:must_not_suspend, r=oli-obk 2021-09-22 06:43:33 +00:00
rustc_llvm Use correct pipeline for LTO at O0 2021-09-25 11:24:23 +02:00
rustc_macros Migrate to 2021 2021-09-20 22:21:42 -04:00
rustc_metadata Auto merge of #89016 - lcnr:non_blanket_impls, r=nikomatsakis,michaelwoerister 2021-09-23 15:44:53 +00:00
rustc_middle More tracing instrumentation 2021-09-28 12:28:22 +00:00
rustc_mir_build Auto merge of #88950 - Nadrieril:deconstruct-pat, r=oli-obk 2021-09-29 00:16:17 +00:00
rustc_mir_dataflow More tracing instrumentation 2021-09-28 12:28:22 +00:00
rustc_mir_transform Auto merge of #89030 - nbdd0121:box2, r=jonas-schievink 2021-09-25 11:01:13 +00:00
rustc_monomorphize Migrate to 2021 2021-09-20 22:21:42 -04:00
rustc_parse Check for macros in built-in attributes that don't support them. 2021-09-25 09:03:15 -07:00
rustc_parse_format Migrate to 2021 2021-09-20 22:21:42 -04:00
rustc_passes Auto merge of #88865 - guswynn:must_not_suspend, r=oli-obk 2021-09-22 06:43:33 +00:00
rustc_plugin_impl Migrate to 2021 2021-09-20 22:21:42 -04:00
rustc_privacy Auto merge of #89103 - Mark-Simulacrum:migrate-2021, r=estebank 2021-09-21 19:25:49 +00:00
rustc_query_impl Auto merge of #89120 - In-line:remove_unneded_visible_parents_map, r=estebank 2021-09-24 05:29:49 +00:00
rustc_query_system Migrate to 2021 2021-09-20 22:21:42 -04:00
rustc_resolve More tracing instrumentation 2021-09-28 12:28:22 +00:00
rustc_save_analysis Migrate to 2021 2021-09-20 22:21:42 -04:00
rustc_serialize Migrate to 2021 2021-09-20 22:21:42 -04:00
rustc_session Rollup merge of #89133 - FabianWolff:issue-79546, r=michaelwoerister 2021-09-22 19:03:24 +02:00
rustc_span Rollup merge of #89072 - bjorn3:less_symbol_as_str, r=michaelwoerister 2021-09-24 11:40:12 -07:00
rustc_symbol_mangling Migrate to 2021 2021-09-20 22:21:42 -04:00
rustc_target Add SOLID targets 2021-09-28 11:31:47 +09:00
rustc_trait_selection More tracing instrumentation 2021-09-28 12:28:22 +00:00
rustc_traits Improve cause information for NLL higher-ranked errors 2021-09-27 10:23:45 -05:00
rustc_ty_utils Auto merge of #89144 - sexxi-goose:insig_stdlib, r=nikomatsakis 2021-09-26 19:36:00 +00:00
rustc_type_ir Migrate to 2021 2021-09-20 22:21:42 -04:00
rustc_typeck More tracing instrumentation 2021-09-28 12:28:22 +00:00