diff options
Diffstat (limited to 'crates/hir_ty/src/traits')
-rw-r--r-- | crates/hir_ty/src/traits/chalk.rs | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/crates/hir_ty/src/traits/chalk.rs b/crates/hir_ty/src/traits/chalk.rs index 25e8ac186..ff364789e 100644 --- a/crates/hir_ty/src/traits/chalk.rs +++ b/crates/hir_ty/src/traits/chalk.rs | |||
@@ -202,8 +202,12 @@ impl<'a> chalk_solve::RustIrDatabase<Interner> for ChalkContext<'a> { | |||
202 | Some((trait_, alias)) | 202 | Some((trait_, alias)) |
203 | }) | 203 | }) |
204 | { | 204 | { |
205 | // AsyncBlock<T>: Future</* Self */> | 205 | // Making up `AsyncBlock<T>: Future<Output = T>` |
206 | // This is required by `fn impls_future` to check if we need to provide `.await` completion. | 206 | // |
207 | // |--------------------OpaqueTyDatum-------------------| | ||
208 | // |-------------OpaqueTyDatumBound--------------| | ||
209 | // for<T> <Self> [Future<Self>, Future::Output<Self> = T] | ||
210 | // ^1 ^0 ^0 ^0 ^1 | ||
207 | let impl_bound = GenericPredicate::Implemented(TraitRef { | 211 | let impl_bound = GenericPredicate::Implemented(TraitRef { |
208 | trait_: future_trait, | 212 | trait_: future_trait, |
209 | // Self type as the first parameter. | 213 | // Self type as the first parameter. |
@@ -212,8 +216,6 @@ impl<'a> chalk_solve::RustIrDatabase<Interner> for ChalkContext<'a> { | |||
212 | index: 0, | 216 | index: 0, |
213 | })), | 217 | })), |
214 | }); | 218 | }); |
215 | // AsyncBlock<T>: Future</* Self, */ Output = T>; | ||
216 | // debruijn: ^1 ^0 | ||
217 | let proj_bound = GenericPredicate::Projection(ProjectionPredicate { | 219 | let proj_bound = GenericPredicate::Projection(ProjectionPredicate { |
218 | // The parameter of the opaque type. | 220 | // The parameter of the opaque type. |
219 | ty: Ty::Bound(BoundVar { debruijn: DebruijnIndex::ONE, index: 0 }), | 221 | ty: Ty::Bound(BoundVar { debruijn: DebruijnIndex::ONE, index: 0 }), |