From de7f16d4313791a51b28822cbf08e8fbcaf78bde Mon Sep 17 00:00:00 2001 From: Mazdak Farrokhzad Date: Thu, 23 Jan 2020 03:30:56 +0100 Subject: [PATCH] check_match: extract common logic --- src/librustc_mir_build/hair/pattern/_match.rs | 2 +- src/librustc_mir_build/hair/pattern/check_match.rs | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/librustc_mir_build/hair/pattern/_match.rs b/src/librustc_mir_build/hair/pattern/_match.rs index a2ce224904b..08ed6b521b5 100644 --- a/src/librustc_mir_build/hair/pattern/_match.rs +++ b/src/librustc_mir_build/hair/pattern/_match.rs @@ -586,7 +586,7 @@ impl<'a, 'tcx> MatchCheckCtxt<'a, 'tcx> { tcx: TyCtxt<'tcx>, param_env: ty::ParamEnv<'tcx>, module: DefId, - f: impl for<'b> FnOnce(MatchCheckCtxt<'b, 'tcx>) -> R, + f: impl FnOnce(MatchCheckCtxt<'_, 'tcx>) -> R, ) -> R { let pattern_arena = TypedArena::default(); diff --git a/src/librustc_mir_build/hair/pattern/check_match.rs b/src/librustc_mir_build/hair/pattern/check_match.rs index 49b7c2d41fc..82822f0c471 100644 --- a/src/librustc_mir_build/hair/pattern/check_match.rs +++ b/src/librustc_mir_build/hair/pattern/check_match.rs @@ -140,6 +140,11 @@ impl<'tcx> MatchVisitor<'_, 'tcx> { (pattern, pattern_ty) } + fn check_in_cx(&self, hir_id: HirId, f: impl FnOnce(MatchCheckCtxt<'_, 'tcx>)) { + let module = self.tcx.hir().get_module_parent(hir_id); + MatchCheckCtxt::create_and_enter(self.tcx, self.param_env, module, |cx| f(cx)); + } + fn check_match( &mut self, scrut: &hir::Expr<'_>, @@ -151,8 +156,7 @@ impl<'tcx> MatchVisitor<'_, 'tcx> { self.check_patterns(arm.guard.is_some(), &arm.pat); } - let module = self.tcx.hir().get_module_parent(scrut.hir_id); - MatchCheckCtxt::create_and_enter(self.tcx, self.param_env, module, |ref mut cx| { + self.check_in_cx(scrut.hir_id, |ref mut cx| { let mut have_errors = false; let inlined_arms: Vec<_> = arms @@ -180,8 +184,7 @@ impl<'tcx> MatchVisitor<'_, 'tcx> { } fn check_irrefutable(&self, pat: &'tcx Pat<'tcx>, origin: &str, sp: Option) { - let module = self.tcx.hir().get_module_parent(pat.hir_id); - MatchCheckCtxt::create_and_enter(self.tcx, self.param_env, module, |ref mut cx| { + self.check_in_cx(pat.hir_id, |ref mut cx| { let (pattern, pattern_ty) = self.lower_pattern(cx, pat, &mut false); let pats: Matrix<'_, '_> = vec![PatStack::from_pattern(pattern)].into_iter().collect();