@@ -94,11 +94,8 @@ pub(super) fn lower(
9494 body_expr : dummy_expr_id ( ) ,
9595 block_scopes : Vec :: new ( ) ,
9696 _c : Count :: new ( ) ,
97- or_pats : Default :: default ( ) ,
9897 } ,
9998 expander,
100- name_to_pat_grouping : Default :: default ( ) ,
101- is_lowering_inside_or_pat : false ,
10299 is_lowering_assignee_expr : false ,
103100 is_lowering_generator : false ,
104101 }
@@ -111,9 +108,6 @@ struct ExprCollector<'a> {
111108 ast_id_map : Arc < AstIdMap > ,
112109 body : Body ,
113110 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 ,
117111 is_lowering_assignee_expr : bool ,
118112 is_lowering_generator : bool ,
119113}
@@ -824,13 +818,7 @@ impl ExprCollector<'_> {
824818 }
825819
826820 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 ( ) )
834822 }
835823
836824 fn collect_pat_opt ( & mut self , pat : Option < ast:: Pat > ) -> PatId {
@@ -845,13 +833,13 @@ impl ExprCollector<'_> {
845833 ast:: Pat :: IdentPat ( bp) => {
846834 let name = bp. name ( ) . map ( |nr| nr. as_name ( ) ) . unwrap_or_else ( Name :: missing) ;
847835
848- let key = self . is_lowering_inside_or_pat . then ( || name. clone ( ) ) ;
849836 let annotation =
850837 BindingAnnotation :: new ( bp. mut_token ( ) . is_some ( ) , bp. ref_token ( ) . is_some ( ) ) ;
851838 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 {
855843 // This could also be a single-segment path pattern. To
856844 // decide that, we need to try resolving the name.
857845 let ( resolved, _) = self . expander . def_map . resolve_path (
@@ -892,9 +880,6 @@ impl ExprCollector<'_> {
892880 if let Some ( binding_id) = binding {
893881 self . add_definition_to_binding ( binding_id, pat) ;
894882 }
895- if let Some ( key) = key {
896- self . name_to_pat_grouping . entry ( key) . or_default ( ) . push ( pat) ;
897- }
898883 return pat;
899884 }
900885 ast:: Pat :: TupleStructPat ( p) => {
@@ -914,7 +899,6 @@ impl ExprCollector<'_> {
914899 path. map ( Pat :: Path ) . unwrap_or ( Pat :: Missing )
915900 }
916901 ast:: Pat :: OrPat ( p) => {
917- self . is_lowering_inside_or_pat = true ;
918902 let pats = p. pats ( ) . map ( |p| self . collect_pat_ ( p, binding_list) ) . collect ( ) ;
919903 Pat :: Or ( pats)
920904 }
0 commit comments