nit: cleanups in Cfg::simplify_with

This commit is contained in:
Alexis (Poliorcetics) Bourget 2024-10-16 23:02:06 +02:00
parent 261823eee7
commit 8cf09c77c8
No known key found for this signature in database

View file

@ -224,30 +224,28 @@ impl Cfg {
/// `Cfg`.
///
/// See `tests::test_simplify_with` for examples.
pub(crate) fn simplify_with(&self, assume: &Cfg) -> Option<Cfg> {
pub(crate) fn simplify_with(&self, assume: &Self) -> Option<Self> {
if self == assume {
return None;
}
if let Cfg::All(a) = self {
None
} else if let Cfg::All(a) = self {
let mut sub_cfgs: Vec<Cfg> = if let Cfg::All(b) = assume {
a.iter().filter(|a| !b.contains(a)).cloned().collect()
} else {
a.iter().filter(|&a| a != assume).cloned().collect()
};
let len = sub_cfgs.len();
return match len {
match len {
0 => None,
1 => sub_cfgs.pop(),
_ => Some(Cfg::All(sub_cfgs)),
};
} else if let Cfg::All(b) = assume {
if b.contains(self) {
return None;
}
} else if let Cfg::All(b) = assume
&& b.contains(self)
{
None
} else {
Some(self.clone())
}
Some(self.clone())
}
}