diff options
Diffstat (limited to 'crates/hir_ty/src/infer/expr.rs')
-rw-r--r-- | crates/hir_ty/src/infer/expr.rs | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/crates/hir_ty/src/infer/expr.rs b/crates/hir_ty/src/infer/expr.rs index 79bbc5dab..24deff707 100644 --- a/crates/hir_ty/src/infer/expr.rs +++ b/crates/hir_ty/src/infer/expr.rs | |||
@@ -513,10 +513,10 @@ impl<'a> InferenceContext<'a> { | |||
513 | let inner_ty = self.infer_expr_inner(*expr, &Expectation::none()); | 513 | let inner_ty = self.infer_expr_inner(*expr, &Expectation::none()); |
514 | if let Some(box_) = self.resolve_boxed_box() { | 514 | if let Some(box_) = self.resolve_boxed_box() { |
515 | let mut sb = | 515 | let mut sb = |
516 | Substitution::builder(generics(self.db.upcast(), box_.into()).len()); | 516 | Substitution::build_for_generics(&generics(self.db.upcast(), box_.into())); |
517 | sb = sb.push(inner_ty); | 517 | sb = sb.push(inner_ty); |
518 | match self.db.generic_defaults(box_.into()).as_ref() { | 518 | match self.db.generic_defaults(box_.into()).get(1) { |
519 | [_, alloc_ty, ..] if !alloc_ty.value.is_unknown() => { | 519 | Some(alloc_ty) if !alloc_ty.value.is_unknown() && sb.remaining() > 0 => { |
520 | sb = sb.push(alloc_ty.value.clone()); | 520 | sb = sb.push(alloc_ty.value.clone()); |
521 | } | 521 | } |
522 | _ => (), | 522 | _ => (), |