FullMatchResult
Result of matchFull
comparison
- Value parameters:
- extensionDiff
extensionDiff is non empty if and only if a proper subset is affected. Outside of over tainting, if extensionDiff is non empty then: path.elements ++ path.matchFull(other).extensionDiff == other.elements path.matchFull(other).stepIntoPath.get.elements.isEmpty Invariants:
- Exclusions have no invertible tail
- Only paths without overTaint can have exclusions TODO: Figure out sensible assertions to defend these invariants
- stepIntoPath
The affected part of the access path, mapped to be relative to this stepIntoPath.isDefined if and only if there is a match in paths, i.e. if the call can affect the tracked variable at all. Outside of overtainting, if stepIntoPath.isDefined && stepIntoPath.elements.nonEmpty then: path.elements == other.elements ++ path.matchFull(other).stepIntoPath.get.elements extensionDiff.isEmpty
- stepOverPath
the unaffected part of the access path. Some(this) for no match, None for perfect match; may have additional exclusions to this.