@@ -169,9 +169,9 @@ impl ExprValidator {
169169 return ;
170170 }
171171
172- let pattern_arena = Arena :: new ( ) ;
173- let cx = MatchCheckCtx :: new ( self . owner . module ( db. upcast ( ) ) , self . owner , db, & pattern_arena) ;
172+ let cx = MatchCheckCtx :: new ( self . owner . module ( db. upcast ( ) ) , self . owner , db) ;
174173
174+ let pattern_arena = Arena :: new ( ) ;
175175 let mut m_arms = Vec :: with_capacity ( arms. len ( ) ) ;
176176 let mut has_lowering_errors = false ;
177177 for arm in arms {
@@ -196,8 +196,9 @@ impl ExprValidator {
196196 // If we had a NotUsefulMatchArm diagnostic, we could
197197 // check the usefulness of each pattern as we added it
198198 // to the matrix here.
199+ let pat = self . lower_pattern ( & cx, arm. pat , db, & body, & mut has_lowering_errors) ;
199200 let m_arm = pat_analysis:: MatchArm {
200- pat : self . lower_pattern ( & cx , arm . pat , db , & body , & mut has_lowering_errors ) ,
201+ pat : pattern_arena . alloc ( pat) ,
201202 has_guard : arm. guard . is_some ( ) ,
202203 arm_data : ( ) ,
203204 } ;
@@ -245,10 +246,10 @@ impl ExprValidator {
245246 db : & dyn HirDatabase ,
246247 body : & Body ,
247248 have_errors : & mut bool ,
248- ) -> & ' p DeconstructedPat < ' p > {
249+ ) -> DeconstructedPat < ' p > {
249250 let mut patcx = match_check:: PatCtxt :: new ( db, & self . infer , body) ;
250251 let pattern = patcx. lower_pattern ( pat) ;
251- let pattern = cx. pattern_arena . alloc ( cx . lower_pat ( & pattern) ) ;
252+ let pattern = cx. lower_pat ( & pattern) ;
252253 if !patcx. errors . is_empty ( ) {
253254 * have_errors = true ;
254255 }
0 commit comments