From 6286a1d7eb68875504536c78f6316cad7e7490b2 Mon Sep 17 00:00:00 2001 From: Mazdak Farrokhzad Date: Thu, 19 Dec 2019 23:31:27 +0100 Subject: [PATCH] `slice_or_array_pattern`: remove dead code. After #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`. --- src/librustc_mir/hair/pattern/mod.rs | 43 +--------------------------- 1 file changed, 1 insertion(+), 42 deletions(-) diff --git a/src/librustc_mir/hair/pattern/mod.rs b/src/librustc_mir/hair/pattern/mod.rs index a3d81f000424..9a0c31568303 100644 --- a/src/librustc_mir/hair/pattern/mod.rs +++ b/src/librustc_mir/hair/pattern/mod.rs @@ -549,10 +549,6 @@ impl<'a, 'tcx> PatCtxt<'a, 'tcx> { } hir::PatKind::Slice(ref prefix, ref slice, ref suffix) => { - match ty.kind { - ty::Slice(..) | ty::Array(..) => {} - _ => span_bug!(pat.span, "unexpanded type for vector pattern: {:?}", ty), - } self.slice_or_array_pattern(pat.span, ty, prefix, slice, suffix) } @@ -658,44 +654,10 @@ impl<'a, 'tcx> PatCtxt<'a, 'tcx> { pats.iter().map(|p| self.lower_pattern(p)).collect() } - fn lower_opt_pattern(&mut self, pat: &'tcx Option>) -> Option> - { + fn lower_opt_pattern(&mut self, pat: &'tcx Option>) -> Option> { pat.as_ref().map(|p| self.lower_pattern(p)) } - fn flatten_nested_slice_patterns( - &mut self, - prefix: Vec>, - slice: Option>, - suffix: Vec>, - ) -> (Vec>, Option>, Vec>) { - let orig_slice = match slice { - Some(orig_slice) => orig_slice, - None => return (prefix, slice, suffix) - }; - let orig_prefix = prefix; - let orig_suffix = suffix; - - // dance because of intentional borrow-checker stupidity. - let kind = *orig_slice.kind; - match kind { - PatKind::Slice { prefix, slice, mut suffix } | - PatKind::Array { prefix, slice, mut suffix } => { - let mut orig_prefix = orig_prefix; - - orig_prefix.extend(prefix); - suffix.extend(orig_suffix); - - (orig_prefix, slice, suffix) - } - _ => { - (orig_prefix, Some(Pat { - kind: box kind, ..orig_slice - }), orig_suffix) - } - } - } - fn slice_or_array_pattern( &mut self, span: Span, @@ -707,9 +669,6 @@ impl<'a, 'tcx> PatCtxt<'a, 'tcx> { let prefix = self.lower_patterns(prefix); let slice = self.lower_opt_pattern(slice); let suffix = self.lower_patterns(suffix); - let (prefix, slice, suffix) = self.flatten_nested_slice_patterns(prefix, slice, suffix); - - // Some validation: match ty.kind { // Matching a slice, `[T]`. ty::Slice(..) => PatKind::Slice { prefix, slice, suffix },