@@ -164,9 +164,9 @@ where
164164 let match_expr = self . collect_expr_opt ( condition. expr ( ) ) ;
165165 let placeholder_pat = self . missing_pat ( ) ;
166166 let arms = vec ! [
167- MatchArm { pats : vec! [ pat] , expr: then_branch, guard: None } ,
167+ MatchArm { pat, expr: then_branch, guard: None } ,
168168 MatchArm {
169- pats : vec! [ placeholder_pat] ,
169+ pat : placeholder_pat,
170170 expr: else_branch. unwrap_or_else( || self . empty_block( ) ) ,
171171 guard: None ,
172172 } ,
@@ -203,8 +203,8 @@ where
203203 let placeholder_pat = self . missing_pat ( ) ;
204204 let break_ = self . alloc_expr_desugared ( Expr :: Break { expr : None } ) ;
205205 let arms = vec ! [
206- MatchArm { pats : vec! [ pat] , expr: body, guard: None } ,
207- MatchArm { pats : vec! [ placeholder_pat] , expr: break_, guard: None } ,
206+ MatchArm { pat, expr: body, guard: None } ,
207+ MatchArm { pat : placeholder_pat, expr: break_, guard: None } ,
208208 ] ;
209209 let match_expr =
210210 self . alloc_expr_desugared ( Expr :: Match { expr : match_expr, arms } ) ;
@@ -250,7 +250,7 @@ where
250250 match_arm_list
251251 . arms ( )
252252 . map ( |arm| MatchArm {
253- pats : arm . pats ( ) . map ( |p| self . collect_pat ( p ) ) . collect ( ) ,
253+ pat : self . collect_pat_opt ( arm . pat ( ) ) ,
254254 expr : self . collect_expr_opt ( arm. expr ( ) ) ,
255255 guard : arm
256256 . guard ( )
@@ -587,6 +587,11 @@ where
587587 let path = p. path ( ) . and_then ( |path| self . expander . parse_path ( path) ) ;
588588 path. map ( Pat :: Path ) . unwrap_or ( Pat :: Missing )
589589 }
590+ ast:: Pat :: OrPat ( p) => {
591+ let pats = p. pats ( ) . map ( |p| self . collect_pat ( p) ) . collect ( ) ;
592+ Pat :: Or ( pats)
593+ }
594+ ast:: Pat :: ParenPat ( p) => return self . collect_pat_opt ( p. pat ( ) ) ,
590595 ast:: Pat :: TuplePat ( p) => {
591596 let args = p. args ( ) . map ( |p| self . collect_pat ( p) ) . collect ( ) ;
592597 Pat :: Tuple ( args)
0 commit comments