Skip to content

Commit 6286a1d

Browse files
committed
slice_or_array_pattern: remove dead code.
After rust-lang#62550, it is no longer possible for `slice` to be other than `None | Some(Binding(..) | Wild)`. In particular, `lower_pat_slice` may never generate `Some(Array(..) | Slice(..))` and so there is nothing to flatten into `slice`.
1 parent cc3160b commit 6286a1d

File tree

1 file changed

+1
-42
lines changed
  • src/librustc_mir/hair/pattern

1 file changed

+1
-42
lines changed

src/librustc_mir/hair/pattern/mod.rs

+1-42
Original file line numberDiff line numberDiff line change
@@ -549,10 +549,6 @@ impl<'a, 'tcx> PatCtxt<'a, 'tcx> {
549549
}
550550

551551
hir::PatKind::Slice(ref prefix, ref slice, ref suffix) => {
552-
match ty.kind {
553-
ty::Slice(..) | ty::Array(..) => {}
554-
_ => span_bug!(pat.span, "unexpanded type for vector pattern: {:?}", ty),
555-
}
556552
self.slice_or_array_pattern(pat.span, ty, prefix, slice, suffix)
557553
}
558554

@@ -658,44 +654,10 @@ impl<'a, 'tcx> PatCtxt<'a, 'tcx> {
658654
pats.iter().map(|p| self.lower_pattern(p)).collect()
659655
}
660656

661-
fn lower_opt_pattern(&mut self, pat: &'tcx Option<P<hir::Pat>>) -> Option<Pat<'tcx>>
662-
{
657+
fn lower_opt_pattern(&mut self, pat: &'tcx Option<P<hir::Pat>>) -> Option<Pat<'tcx>> {
663658
pat.as_ref().map(|p| self.lower_pattern(p))
664659
}
665660

666-
fn flatten_nested_slice_patterns(
667-
&mut self,
668-
prefix: Vec<Pat<'tcx>>,
669-
slice: Option<Pat<'tcx>>,
670-
suffix: Vec<Pat<'tcx>>,
671-
) -> (Vec<Pat<'tcx>>, Option<Pat<'tcx>>, Vec<Pat<'tcx>>) {
672-
let orig_slice = match slice {
673-
Some(orig_slice) => orig_slice,
674-
None => return (prefix, slice, suffix)
675-
};
676-
let orig_prefix = prefix;
677-
let orig_suffix = suffix;
678-
679-
// dance because of intentional borrow-checker stupidity.
680-
let kind = *orig_slice.kind;
681-
match kind {
682-
PatKind::Slice { prefix, slice, mut suffix } |
683-
PatKind::Array { prefix, slice, mut suffix } => {
684-
let mut orig_prefix = orig_prefix;
685-
686-
orig_prefix.extend(prefix);
687-
suffix.extend(orig_suffix);
688-
689-
(orig_prefix, slice, suffix)
690-
}
691-
_ => {
692-
(orig_prefix, Some(Pat {
693-
kind: box kind, ..orig_slice
694-
}), orig_suffix)
695-
}
696-
}
697-
}
698-
699661
fn slice_or_array_pattern(
700662
&mut self,
701663
span: Span,
@@ -707,9 +669,6 @@ impl<'a, 'tcx> PatCtxt<'a, 'tcx> {
707669
let prefix = self.lower_patterns(prefix);
708670
let slice = self.lower_opt_pattern(slice);
709671
let suffix = self.lower_patterns(suffix);
710-
let (prefix, slice, suffix) = self.flatten_nested_slice_patterns(prefix, slice, suffix);
711-
712-
// Some validation:
713672
match ty.kind {
714673
// Matching a slice, `[T]`.
715674
ty::Slice(..) => PatKind::Slice { prefix, slice, suffix },

0 commit comments

Comments
 (0)