about summary refs log tree commit diff
path: root/compiler/rustc_pattern_analysis/src/lints.rs
diff options
context:
space:
mode:
authorNadrieril <nadrieril+git@gmail.com>2024-01-06 21:30:08 +0100
committerNadrieril <nadrieril+git@gmail.com>2024-01-07 16:45:44 +0100
commit4c2386137a8e9a7c61036594e717ab1ad443c2d5 (patch)
tree0783739433a976218919465a1d59dc3cf578a3b6 /compiler/rustc_pattern_analysis/src/lints.rs
parentd8b44d2802ab665b183dce06d527bf09175dd8cf (diff)
downloadrust-4c2386137a8e9a7c61036594e717ab1ad443c2d5.tar.gz
rust-4c2386137a8e9a7c61036594e717ab1ad443c2d5.zip
Factor out pushing onto `PatternColumn`
Diffstat (limited to 'compiler/rustc_pattern_analysis/src/lints.rs')
-rw-r--r--compiler/rustc_pattern_analysis/src/lints.rs24
1 files changed, 12 insertions, 12 deletions
diff --git a/compiler/rustc_pattern_analysis/src/lints.rs b/compiler/rustc_pattern_analysis/src/lints.rs
index f1237ecf83c..4303022eef3 100644
--- a/compiler/rustc_pattern_analysis/src/lints.rs
+++ b/compiler/rustc_pattern_analysis/src/lints.rs
@@ -33,15 +33,19 @@ pub(crate) struct PatternColumn<'p, 'tcx> {
 
 impl<'p, 'tcx> PatternColumn<'p, 'tcx> {
     pub(crate) fn new(arms: &[MatchArm<'p, 'tcx>]) -> Self {
-        let mut patterns = Vec::with_capacity(arms.len());
+        let patterns = Vec::with_capacity(arms.len());
+        let mut column = PatternColumn { patterns };
         for arm in arms {
-            if arm.pat.is_or_pat() {
-                patterns.extend(arm.pat.flatten_or_pat())
-            } else {
-                patterns.push(arm.pat)
-            }
+            column.expand_and_push(arm.pat);
+        }
+        column
+    }
+    fn expand_and_push(&mut self, pat: &'p DeconstructedPat<'p, 'tcx>) {
+        if pat.is_or_pat() {
+            self.patterns.extend(pat.flatten_or_pat())
+        } else {
+            self.patterns.push(pat)
         }
-        Self { patterns }
     }
 
     fn is_empty(&self) -> bool {
@@ -87,11 +91,7 @@ impl<'p, 'tcx> PatternColumn<'p, 'tcx> {
         for pat in relevant_patterns {
             let specialized = pat.specialize(pcx, ctor, ctor_sub_tys);
             for (subpat, column) in specialized.iter().zip(&mut specialized_columns) {
-                if subpat.is_or_pat() {
-                    column.patterns.extend(subpat.flatten_or_pat())
-                } else {
-                    column.patterns.push(subpat)
-                }
+                column.expand_and_push(subpat);
             }
         }