1
Fork 0

Combine two loops in check_match

Suggested by Nadrieril in
https://github.com/rust-lang/rust/pull/79051#discussion_r548778186.
This commit is contained in:
Camelid 2020-12-25 10:49:03 -08:00 committed by Noah Lev
parent e742158ef5
commit c3a03ae5b7

View file

@ -113,7 +113,7 @@ impl PatCtxt<'_, '_> {
}
impl<'tcx> MatchVisitor<'_, 'tcx> {
fn check_patterns(&mut self, pat: &Pat<'_>) {
fn check_patterns(&self, pat: &Pat<'_>) {
pat.walk_always(|pat| check_borrow_conflicts_in_at_patterns(self, pat));
if !self.tcx.features().bindings_after_at {
check_legality_of_bindings_in_at_patterns(self, pat);
@ -154,18 +154,13 @@ impl<'tcx> MatchVisitor<'_, 'tcx> {
arms: &'tcx [hir::Arm<'tcx>],
source: hir::MatchSource,
) {
let mut cx = self.new_cx(scrut.hir_id);
for arm in arms {
// Check the arm for some things unrelated to exhaustiveness.
self.check_patterns(&arm.pat);
if let Some(hir::Guard::IfLet(ref pat, _)) = arm.guard {
self.check_patterns(pat);
}
}
let mut cx = self.new_cx(scrut.hir_id);
for arm in arms {
if let Some(hir::Guard::IfLet(ref pat, _)) = arm.guard {
let tpat = self.lower_pattern(&mut cx, pat, &mut false).0;
check_if_let_guard(&mut cx, &tpat, pat.hir_id);
}