]> git.lizzy.rs Git - rust.git/blobdiff - compiler/rustc_infer/src/infer/nll_relate/mod.rs
mv utility methods into separate module
[rust.git] / compiler / rustc_infer / src / infer / nll_relate / mod.rs
index 600f94f095eace0056fc0af4292245a197946f0f..167a82d4499a188603895a21b2bfe9349d628341 100644 (file)
@@ -556,8 +556,9 @@ fn relate_with_variance<T: Relate<'tcx>>(
         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;