diff options
| author | Nadrieril <nadrieril+git@gmail.com> | 2024-01-06 21:30:08 +0100 |
|---|---|---|
| committer | Nadrieril <nadrieril+git@gmail.com> | 2024-01-07 16:45:44 +0100 |
| commit | 4c2386137a8e9a7c61036594e717ab1ad443c2d5 (patch) | |
| tree | 0783739433a976218919465a1d59dc3cf578a3b6 /compiler/rustc_pattern_analysis/src/lints.rs | |
| parent | d8b44d2802ab665b183dce06d527bf09175dd8cf (diff) | |
| download | rust-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.rs | 24 |
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); } } |
