1
Fork 0

const_evaluatable_checked: fix occurs check

This commit is contained in:
Bastian Kauschke 2020-12-02 14:33:26 +01:00
parent 92e4fb0732
commit 71d7550350
4 changed files with 52 additions and 2 deletions

View file

@ -543,6 +543,10 @@ impl TypeRelation<'tcx> for Generalizer<'_, 'tcx> {
true
}
fn visit_ct_substs(&self) -> bool {
true
}
fn binders<T>(
&mut self,
a: ty::Binder<T>,
@ -716,7 +720,10 @@ impl TypeRelation<'tcx> for Generalizer<'_, 'tcx> {
let variable_table = &mut inner.const_unification_table();
let var_value = variable_table.probe_value(vid);
match var_value.val {
ConstVariableValue::Known { value: u } => self.relate(u, u),
ConstVariableValue::Known { value: u } => {
drop(inner);
self.relate(u, u)
}
ConstVariableValue::Unknown { universe } => {
if self.for_universe.can_name(universe) {
Ok(c)
@ -815,6 +822,10 @@ impl TypeRelation<'tcx> for ConstInferUnifier<'_, 'tcx> {
true
}
fn visit_ct_substs(&self) -> bool {
true
}
fn relate_with_variance<T: Relate<'tcx>>(
&mut self,
_variance: ty::Variance,
@ -870,6 +881,9 @@ impl TypeRelation<'tcx> for ConstInferUnifier<'_, 'tcx> {
}
}
}
ty::Infer(ty::IntVar(_) | ty::FloatVar(_)) => {
Ok(t)
}
_ => relate::super_relate_tys(self, t, t),
}
}