Remove associated type based effects logic
This commit is contained in:
@@ -172,70 +172,3 @@ impl<'tcx> UnifyValue for ConstVariableValue<'tcx> {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// values for the effect inference variable
|
||||
#[derive(Clone, Copy, Debug)]
|
||||
pub enum EffectVarValue<'tcx> {
|
||||
Unknown,
|
||||
Known(ty::Const<'tcx>),
|
||||
}
|
||||
|
||||
impl<'tcx> EffectVarValue<'tcx> {
|
||||
pub fn known(self) -> Option<ty::Const<'tcx>> {
|
||||
match self {
|
||||
EffectVarValue::Unknown => None,
|
||||
EffectVarValue::Known(value) => Some(value),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn is_unknown(self) -> bool {
|
||||
match self {
|
||||
EffectVarValue::Unknown => true,
|
||||
EffectVarValue::Known(_) => false,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<'tcx> UnifyValue for EffectVarValue<'tcx> {
|
||||
type Error = NoError;
|
||||
|
||||
fn unify_values(value1: &Self, value2: &Self) -> Result<Self, Self::Error> {
|
||||
match (*value1, *value2) {
|
||||
(EffectVarValue::Unknown, EffectVarValue::Unknown) => Ok(EffectVarValue::Unknown),
|
||||
(EffectVarValue::Unknown, EffectVarValue::Known(val))
|
||||
| (EffectVarValue::Known(val), EffectVarValue::Unknown) => {
|
||||
Ok(EffectVarValue::Known(val))
|
||||
}
|
||||
(EffectVarValue::Known(_), EffectVarValue::Known(_)) => {
|
||||
bug!("equating known inference variables: {value1:?} {value2:?}")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(PartialEq, Copy, Clone, Debug)]
|
||||
pub struct EffectVidKey<'tcx> {
|
||||
pub vid: ty::EffectVid,
|
||||
pub phantom: PhantomData<ty::Const<'tcx>>,
|
||||
}
|
||||
|
||||
impl<'tcx> From<ty::EffectVid> for EffectVidKey<'tcx> {
|
||||
fn from(vid: ty::EffectVid) -> Self {
|
||||
EffectVidKey { vid, phantom: PhantomData }
|
||||
}
|
||||
}
|
||||
|
||||
impl<'tcx> UnifyKey for EffectVidKey<'tcx> {
|
||||
type Value = EffectVarValue<'tcx>;
|
||||
#[inline]
|
||||
fn index(&self) -> u32 {
|
||||
self.vid.as_u32()
|
||||
}
|
||||
#[inline]
|
||||
fn from_index(i: u32) -> Self {
|
||||
EffectVidKey::from(ty::EffectVid::from_u32(i))
|
||||
}
|
||||
fn tag() -> &'static str {
|
||||
"EffectVidKey"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user