mirsa-domains 0.3.0

Abstract interpretation domains for mirsa
1
2
3
4
5
6
7
8
9
10
11
use super::NullPtr;

/// Meet two nullness constraints. `None` denotes a concrete contradiction.
pub fn constrain(current: NullPtr, wanted: NullPtr) -> Option<NullPtr> {
    match (current, wanted) {
        (NullPtr::Bot, _) | (_, NullPtr::Bot) => None,
        (NullPtr::MaybeNull, value) | (value, NullPtr::MaybeNull) => Some(value),
        (left, right) if left == right => Some(left),
        _ => None,
    }
}