Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/infer/pat.rs')
| -rw-r--r-- | crates/hir-ty/src/infer/pat.rs | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/crates/hir-ty/src/infer/pat.rs b/crates/hir-ty/src/infer/pat.rs index fd4f7a7997..5d8b1196c0 100644 --- a/crates/hir-ty/src/infer/pat.rs +++ b/crates/hir-ty/src/infer/pat.rs @@ -1070,7 +1070,8 @@ https://doc.rust-lang.org/reference/types.html#trait-objects"; { for (i, &subpat) in subpats.iter().enumerate_and_adjust(variant_fields.len(), ddpos) { let field_id = LocalFieldId::from_raw(la_arena::RawIdx::from_u32(i as u32)); - let field_ty = variant_field_tys[field_id].get().instantiate(interner, args); + let field_ty = + variant_field_tys[field_id].get().instantiate(interner, args).skip_norm_wip(); self.infer_pat(subpat, field_ty, pat_info); } if let Err(()) = had_err { @@ -1089,7 +1090,7 @@ https://doc.rust-lang.org/reference/types.html#trait-objects"; for (i, &pat) in subpats.iter().enumerate() { let field_id = LocalFieldId::from_raw(la_arena::RawIdx::from_u32(i as u32)); let expected = match variant_field_tys.get(field_id) { - Some(field_ty) => field_ty.get().instantiate(interner, args), + Some(field_ty) => field_ty.get().instantiate(interner, args).skip_norm_wip(), None => self.types.types.error, }; self.infer_pat(pat, expected, pat_info); @@ -1201,7 +1202,7 @@ https://doc.rust-lang.org/reference/types.html#trait-objects"; }); } - variant_field_tys[field_idx].get().instantiate(interner, args) + variant_field_tys[field_idx].get().instantiate(interner, args).skip_norm_wip() } None => { inexistent_fields.push(field); |