diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2021-02-28 22:24:21 +0000 |
---|---|---|
committer | GitHub <[email protected]> | 2021-02-28 22:24:21 +0000 |
commit | 72457d022d704c47ab9dbfee6a1b29063cc9cc5d (patch) | |
tree | b581a78b79b40bffbe72c2fd7241ded8caea97b3 /crates/hir_ty/src/infer | |
parent | 23d7dbfa5e7ba2cebf8c3f79b5d31285d79c1527 (diff) | |
parent | 2cdd1ff1b50b7c71e9f8aaf03a58501a4af97dce (diff) |
Merge #7815
7815: hir_ty: use default type generic for box expressions r=cynecx a=cynecx
r? @flodiebold
Fixes https://github.com/rust-analyzer/rust-analyzer/issues/6837 according to https://github.com/rust-analyzer/rust-analyzer/issues/6837#issuecomment-787456488.
Co-authored-by: cynecx <[email protected]>
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 13240f790..98bc23173 100644 --- a/crates/hir_ty/src/infer/expr.rs +++ b/crates/hir_ty/src/infer/expr.rs | |||
@@ -488,6 +488,12 @@ impl<'a> InferenceContext<'a> { | |||
488 | if let Some(box_) = self.resolve_boxed_box() { | 488 | if let Some(box_) = self.resolve_boxed_box() { |
489 | let mut sb = Substs::builder(generics(self.db.upcast(), box_.into()).len()); | 489 | let mut sb = Substs::builder(generics(self.db.upcast(), box_.into()).len()); |
490 | sb = sb.push(inner_ty); | 490 | sb = sb.push(inner_ty); |
491 | match self.db.generic_defaults(box_.into()).as_ref() { | ||
492 | [_, alloc_ty, ..] if !alloc_ty.value.is_unknown() => { | ||
493 | sb = sb.push(alloc_ty.value.clone()); | ||
494 | } | ||
495 | _ => (), | ||
496 | } | ||
491 | sb = sb.fill(repeat_with(|| self.table.new_type_var())); | 497 | sb = sb.fill(repeat_with(|| self.table.new_type_var())); |
492 | Ty::Adt(box_, sb.build()) | 498 | Ty::Adt(box_, sb.build()) |
493 | } else { | 499 | } else { |