From d0e282f6b1a8c698212f7f76de2ff122e36e17a2 Mon Sep 17 00:00:00 2001 From: Josh Mcguigan Date: Sun, 1 Mar 2020 07:08:05 -0800 Subject: handle arbitrary length slices --- crates/ra_hir_ty/src/infer/pat.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'crates/ra_hir_ty/src/infer/pat.rs') diff --git a/crates/ra_hir_ty/src/infer/pat.rs b/crates/ra_hir_ty/src/infer/pat.rs index b991720ff..3fe1a4abb 100644 --- a/crates/ra_hir_ty/src/infer/pat.rs +++ b/crates/ra_hir_ty/src/infer/pat.rs @@ -188,10 +188,12 @@ impl<'a, D: HirDatabase> InferenceContext<'a, D> { Pat::Slice { prefix, slice, suffix } => { if let Ty::Apply(ApplicationTy { ctor: TypeCtor::Slice, parameters }) = expected { match (prefix.as_slice(), slice, suffix.as_slice()) { - ([prefix_pat_id], None, []) => { - let ty = self.infer_pat(*prefix_pat_id, ¶meters.0[0], default_bm); + (prefix_pat_ids, None, []) => { + for pat_id in prefix_pat_ids { + self.infer_pat(*pat_id, parameters.as_single(), default_bm); + } - Ty::apply_one(TypeCtor::Slice, ty) + Ty::apply_one(TypeCtor::Slice, parameters.as_single().clone()) }, _ => Ty::Unknown, } -- cgit v1.2.3