about summary refs log tree commit diff
diff options
context:
space:
mode:
authorNadrieril <nadrieril+git@gmail.com>2024-02-20 22:59:11 +0100
committerNadrieril <nadrieril+git@gmail.com>2024-02-27 22:37:44 +0100
commitf363c1a3fe58f66924955755a6408dd1caedbdac (patch)
tree4dd3deaab4b05b1da87da734def3b9bd5461d1f0
parent5e11a99bb662629cc7d0ad3ce7475b7738c9c2cb (diff)
downloadrust-f363c1a3fe58f66924955755a6408dd1caedbdac.tar.gz
rust-f363c1a3fe58f66924955755a6408dd1caedbdac.zip
Group default cases in `sort_candidate`
-rw-r--r--compiler/rustc_mir_build/src/build/matches/test.rs26
1 files changed, 9 insertions, 17 deletions
diff --git a/compiler/rustc_mir_build/src/build/matches/test.rs b/compiler/rustc_mir_build/src/build/matches/test.rs
index a97d0de27e3..3712b8fb95b 100644
--- a/compiler/rustc_mir_build/src/build/matches/test.rs
+++ b/compiler/rustc_mir_build/src/build/matches/test.rs
@@ -575,10 +575,6 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
                 fully_matched = true;
                 Some(variant_index.as_usize())
             }
-            (&TestKind::Switch { .. }, _) => {
-                fully_matched = false;
-                None
-            }
 
             // If we are performing a switch over integers, then this informs integer
             // equality, but nothing else.
@@ -603,10 +599,6 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
                     options.len()
                 })
             }
-            (&TestKind::SwitchInt { .. }, _) => {
-                fully_matched = false;
-                None
-            }
 
             (
                 &TestKind::Len { len: test_len, op: BinOp::Eq },
@@ -673,10 +665,6 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
                     }
                 }
             }
-            (TestKind::Len { .. }, _) => {
-                fully_matched = false;
-                None
-            }
 
             (TestKind::Range(test), &TestCase::Range(pat)) => {
                 if test.as_ref() == pat {
@@ -699,10 +687,6 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
                     None
                 }
             }
-            (&TestKind::Range { .. }, _) => {
-                fully_matched = false;
-                None
-            }
 
             // FIXME(#29623): return `Some(1)` when the values are different.
             (TestKind::Eq { value: test_val, .. }, TestCase::Constant { value: case_val })
@@ -711,7 +695,15 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
                 fully_matched = true;
                 Some(0)
             }
-            (TestKind::Eq { .. }, _) => {
+
+            (
+                TestKind::Switch { .. }
+                | TestKind::SwitchInt { .. }
+                | TestKind::Len { .. }
+                | TestKind::Range { .. }
+                | TestKind::Eq { .. },
+                _,
+            ) => {
                 fully_matched = false;
                 None
             }