Unnamed repository; edit this file 'description' to name the repository.
Fix variance
This one does need fixpoint.
| -rw-r--r-- | crates/hir-ty/src/variance.rs | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/crates/hir-ty/src/variance.rs b/crates/hir-ty/src/variance.rs index 4053982788..4e9aa5610a 100644 --- a/crates/hir-ty/src/variance.rs +++ b/crates/hir-ty/src/variance.rs @@ -57,11 +57,11 @@ pub(crate) fn variances_of(db: &dyn HirDatabase, def: GenericDefId) -> Option<Ar pub(crate) fn variances_of_cycle_fn( _db: &dyn HirDatabase, - result: &Option<Arc<[Variance]>>, + _result: &Option<Arc<[Variance]>>, _count: u32, _def: GenericDefId, ) -> CycleRecoveryAction<Option<Arc<[Variance]>>> { - CycleRecoveryAction::Fallback(result.clone()) + CycleRecoveryAction::Iterate } pub(crate) fn variances_of_cycle_initial( @@ -961,16 +961,12 @@ struct S3<T>(S<T, T>); #[test] fn prove_fixedpoint() { - // FIXME: This is wrong, this should be `FixedPoint[T: covariant, U: covariant, V: covariant]` - // This is a limitation of current salsa where a cycle may only set a fallback value to the - // query result, but we need to solve a fixpoint here. The new salsa will have this - // fortunately. check( r#" struct FixedPoint<T, U, V>(&'static FixedPoint<(), T, U>, V); "#, expect![[r#" - FixedPoint[T: bivariant, U: bivariant, V: bivariant] + FixedPoint[T: covariant, U: covariant, V: covariant] "#]], ); } |