diff options
Diffstat (limited to 'crates/hir_ty/src/infer')
-rw-r--r-- | crates/hir_ty/src/infer/expr.rs | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/crates/hir_ty/src/infer/expr.rs b/crates/hir_ty/src/infer/expr.rs index b75d32b85..23d4ac8ef 100644 --- a/crates/hir_ty/src/infer/expr.rs +++ b/crates/hir_ty/src/infer/expr.rs | |||
@@ -487,6 +487,12 @@ impl<'a> InferenceContext<'a> { | |||
487 | if let Some(box_) = self.resolve_boxed_box() { | 487 | if let Some(box_) = self.resolve_boxed_box() { |
488 | let mut sb = Substs::builder(generics(self.db.upcast(), box_.into()).len()); | 488 | let mut sb = Substs::builder(generics(self.db.upcast(), box_.into()).len()); |
489 | sb = sb.push(inner_ty); | 489 | sb = sb.push(inner_ty); |
490 | match self.db.generic_defaults(box_.into()).as_ref() { | ||
491 | [_, alloc_ty, ..] if !alloc_ty.value.is_unknown() => { | ||
492 | sb = sb.push(alloc_ty.value.clone()); | ||
493 | } | ||
494 | _ => (), | ||
495 | } | ||
490 | sb = sb.fill(repeat_with(|| self.table.new_type_var())); | 496 | sb = sb.fill(repeat_with(|| self.table.new_type_var())); |
491 | Ty::Adt(box_, sb.build()) | 497 | Ty::Adt(box_, sb.build()) |
492 | } else { | 498 | } else { |