Ignore bivariant parameters in test_type_match.

This commit is contained in:
Camille GILLOT 2022-11-26 09:46:05 +00:00
parent f8a2e491eb
commit 89afda7811
2 changed files with 71 additions and 2 deletions

View file

@ -155,14 +155,17 @@ impl<'tcx> TypeRelation<'tcx> for Match<'tcx> {
bug!()
}
#[instrument(level = "trace", skip(self))]
fn relate_with_variance<T: Relate<'tcx>>(
&mut self,
_: ty::Variance,
variance: ty::Variance,
_: ty::VarianceDiagInfo<'tcx>,
a: T,
b: T,
) -> RelateResult<'tcx, T> {
self.relate(a, b)
// Opaque types substs have lifetime parameters.
// We must not check them to be equal, as we never insert anything to make them so.
if variance != ty::Bivariant { self.relate(a, b) } else { Ok(a) }
}
#[instrument(skip(self), level = "debug")]