diff --git a/crates/hir_ty/src/diagnostics/pattern/deconstruct_pat.rs b/crates/hir_ty/src/diagnostics/pattern/deconstruct_pat.rs index 393d9999716e..d3513c40629a 100644 --- a/crates/hir_ty/src/diagnostics/pattern/deconstruct_pat.rs +++ b/crates/hir_ty/src/diagnostics/pattern/deconstruct_pat.rs @@ -811,8 +811,13 @@ impl Fields { pats: impl IntoIterator, ) -> Self { let pats = { - let mut arena = cx.pattern_arena.borrow_mut(); - pats.into_iter().map(move |pat| /* arena.alloc(pat) */ todo!()).collect() + let tys: SmallVec<[Ty; 2]> = match self { + Fields::Vec(pats) => pats.iter().copied().map(|pat| cx.type_of(pat)).collect(), + }; + pats.into_iter() + .zip(tys.into_iter()) + .map(move |(pat, ty)| cx.alloc_pat(pat, &ty)) + .collect() }; match self {