diff options
| author | Nicholas Nethercote <n.nethercote@gmail.com> | 2022-09-01 13:29:57 +1000 |
|---|---|---|
| committer | Nicholas Nethercote <n.nethercote@gmail.com> | 2022-09-08 15:25:50 +1000 |
| commit | e67f39f8bcb12dc4c985abe922d78c0daad7e5cd (patch) | |
| tree | e1a8eafded47150b8e5d0387cec4a0603651a5d5 /compiler/rustc_passes/src | |
| parent | 4314615ff87d6b07290efddd1d1132a50bff9b0d (diff) | |
| download | rust-e67f39f8bcb12dc4c985abe922d78c0daad7e5cd.tar.gz rust-e67f39f8bcb12dc4c985abe922d78c0daad7e5cd.zip | |
Introduce `DotDotPos`.
This shrinks `hir::Pat` from 88 to 72 bytes.
Diffstat (limited to 'compiler/rustc_passes/src')
| -rw-r--r-- | compiler/rustc_passes/src/dead.rs | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/compiler/rustc_passes/src/dead.rs b/compiler/rustc_passes/src/dead.rs index 625c854ea77..a7ce0f312af 100644 --- a/compiler/rustc_passes/src/dead.rs +++ b/compiler/rustc_passes/src/dead.rs @@ -226,19 +226,16 @@ impl<'tcx> MarkSymbolVisitor<'tcx> { lhs: &hir::Pat<'_>, res: Res, pats: &[hir::Pat<'_>], - dotdot: Option<usize>, + dotdot: hir::DotDotPos, ) { let variant = match self.typeck_results().node_type(lhs.hir_id).kind() { ty::Adt(adt, _) => adt.variant_of_res(res), _ => span_bug!(lhs.span, "non-ADT in tuple struct pattern"), }; - let first_n = pats.iter().enumerate().take(dotdot.unwrap_or(pats.len())); + let dotdot = dotdot.as_opt_usize().unwrap_or(pats.len()); + let first_n = pats.iter().enumerate().take(dotdot); let missing = variant.fields.len() - pats.len(); - let last_n = pats - .iter() - .enumerate() - .skip(dotdot.unwrap_or(pats.len())) - .map(|(idx, pat)| (idx + missing, pat)); + let last_n = pats.iter().enumerate().skip(dotdot).map(|(idx, pat)| (idx + missing, pat)); for (idx, pat) in first_n.chain(last_n) { if let PatKind::Wild = pat.kind { continue; |
