@@ -94,11 +94,8 @@ pub(super) fn lower(
94
94
body_expr : dummy_expr_id ( ) ,
95
95
block_scopes : Vec :: new ( ) ,
96
96
_c : Count :: new ( ) ,
97
- or_pats : Default :: default ( ) ,
98
97
} ,
99
98
expander,
100
- name_to_pat_grouping : Default :: default ( ) ,
101
- is_lowering_inside_or_pat : false ,
102
99
is_lowering_assignee_expr : false ,
103
100
is_lowering_generator : false ,
104
101
}
@@ -111,9 +108,6 @@ struct ExprCollector<'a> {
111
108
ast_id_map : Arc < AstIdMap > ,
112
109
body : Body ,
113
110
source_map : BodySourceMap ,
114
- // a poor-mans union-find?
115
- name_to_pat_grouping : FxHashMap < Name , Vec < PatId > > ,
116
- is_lowering_inside_or_pat : bool ,
117
111
is_lowering_assignee_expr : bool ,
118
112
is_lowering_generator : bool ,
119
113
}
@@ -824,13 +818,7 @@ impl ExprCollector<'_> {
824
818
}
825
819
826
820
fn collect_pat ( & mut self , pat : ast:: Pat ) -> PatId {
827
- let pat_id = self . collect_pat_ ( pat, & mut BindingList :: default ( ) ) ;
828
- for ( _, pats) in self . name_to_pat_grouping . drain ( ) {
829
- let pats = Arc :: < [ _ ] > :: from ( pats) ;
830
- self . body . or_pats . extend ( pats. iter ( ) . map ( |& pat| ( pat, pats. clone ( ) ) ) ) ;
831
- }
832
- self . is_lowering_inside_or_pat = false ;
833
- pat_id
821
+ self . collect_pat_ ( pat, & mut BindingList :: default ( ) )
834
822
}
835
823
836
824
fn collect_pat_opt ( & mut self , pat : Option < ast:: Pat > ) -> PatId {
@@ -845,13 +833,13 @@ impl ExprCollector<'_> {
845
833
ast:: Pat :: IdentPat ( bp) => {
846
834
let name = bp. name ( ) . map ( |nr| nr. as_name ( ) ) . unwrap_or_else ( Name :: missing) ;
847
835
848
- let key = self . is_lowering_inside_or_pat . then ( || name. clone ( ) ) ;
849
836
let annotation =
850
837
BindingAnnotation :: new ( bp. mut_token ( ) . is_some ( ) , bp. ref_token ( ) . is_some ( ) ) ;
851
838
let subpat = bp. pat ( ) . map ( |subpat| self . collect_pat_ ( subpat, binding_list) ) ;
852
- let ( binding, pattern) = if annotation == BindingAnnotation :: Unannotated
853
- && subpat. is_none ( )
854
- {
839
+
840
+ let is_simple_ident_pat =
841
+ annotation == BindingAnnotation :: Unannotated && subpat. is_none ( ) ;
842
+ let ( binding, pattern) = if is_simple_ident_pat {
855
843
// This could also be a single-segment path pattern. To
856
844
// decide that, we need to try resolving the name.
857
845
let ( resolved, _) = self . expander . def_map . resolve_path (
@@ -892,9 +880,6 @@ impl ExprCollector<'_> {
892
880
if let Some ( binding_id) = binding {
893
881
self . add_definition_to_binding ( binding_id, pat) ;
894
882
}
895
- if let Some ( key) = key {
896
- self . name_to_pat_grouping . entry ( key) . or_default ( ) . push ( pat) ;
897
- }
898
883
return pat;
899
884
}
900
885
ast:: Pat :: TupleStructPat ( p) => {
@@ -914,7 +899,6 @@ impl ExprCollector<'_> {
914
899
path. map ( Pat :: Path ) . unwrap_or ( Pat :: Missing )
915
900
}
916
901
ast:: Pat :: OrPat ( p) => {
917
- self . is_lowering_inside_or_pat = true ;
918
902
let pats = p. pats ( ) . map ( |p| self . collect_pat_ ( p, binding_list) ) . collect ( ) ;
919
903
Pat :: Or ( pats)
920
904
}
0 commit comments