aboutsummaryrefslogtreecommitdiff
path: root/crates/hir_ty
diff options
context:
space:
mode:
Diffstat (limited to 'crates/hir_ty')
-rw-r--r--crates/hir_ty/src/traits/chalk.rs10
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 }),