1
Fork 0

nll: correctly deal with bivariance

This commit is contained in:
lcnr 2022-11-14 17:42:46 +01:00
parent ca92d90b59
commit 45f441a7b4
5 changed files with 82 additions and 55 deletions

View file

@ -556,8 +556,12 @@ where
self.ambient_variance_info = self.ambient_variance_info.xform(info);
debug!(?self.ambient_variance);
let r = self.relate(a, b)?;
// In a bivariant context this always succeeds.
let r = if self.ambient_variance == ty::Variance::Bivariant {
a
} else {
self.relate(a, b)?
};
self.ambient_variance = old_ambient_variance;