From ac216880f5d1a3e5727b96d7b22433beec10382b Mon Sep 17 00:00:00 2001 From: Marcus Klaas de Vries Date: Thu, 17 Jan 2019 00:08:10 +0100 Subject: Implement unlabeled struct field pattern inference --- crates/ra_hir/src/ty.rs | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) (limited to 'crates/ra_hir/src/ty.rs') diff --git a/crates/ra_hir/src/ty.rs b/crates/ra_hir/src/ty.rs index 6bad61a2a..66940ec30 100644 --- a/crates/ra_hir/src/ty.rs +++ b/crates/ra_hir/src/ty.rs @@ -937,19 +937,12 @@ impl<'a, D: HirDatabase> InferenceContext<'a, D> { }; for sub_pat in sub_pats { - let tyref = fields - .iter() - .find(|field| field.name == sub_pat.name) - .map(|field| &field.type_ref); + let matching_field = fields.iter().find(|field| field.name == sub_pat.name); - if let Some(typeref) = tyref { + if let Some(field) = matching_field { + let typeref = &field.type_ref; let sub_ty = Ty::from_hir(self.db, &self.module, self.impl_block.as_ref(), typeref); - - if let Some(pat) = sub_pat.pat { - self.infer_pat(pat, &Expectation::has_type(sub_ty)); - } else { - // TODO: deal with this case: S { x, y } - } + self.infer_pat(sub_pat.pat, &Expectation::has_type(sub_ty)); } } -- cgit v1.2.3