module Lock : sig ... end
Abstraction of a path that represents a lock, special-casing equality and comparisons to work over type, base variable modulo this and access list
module Event : sig ... end
Event type. Equality/comparison disregards the call trace but includes location.
module EventDomain : module type of sig ... end
module OrderDomain : sig ... end
module UIThreadDomain : InferModules.AbstractDomain.WithBottom with type astate = string InferModules.AbstractDomain.Types.bottom_lifted
type astate
=
{
lock_state : LockState.astate; |
events : EventDomain.astate; |
order : OrderDomain.astate; |
ui : UIThreadDomain.astate; |
}
include InferModules.AbstractDomain.WithBottom with type astate := astate
val empty : astate
The bottom value of the domain. Naming it empty instead of bottom helps to bind the empty value for sets and maps to the natural definition for bottom
val acquire : astate ‑> InferBase.Location.t ‑> Lock.t ‑> astate
val blocking_call : caller:InferIR.Typ.Procname.t ‑> callee:InferIR.Typ.Procname.t ‑> Event.severity_t ‑> InferBase.Location.t ‑> astate ‑> astate
set the property "runs on UI thread" to true by attaching the given explanation string as to why this method is thought to do so
val integrate_summary : astate ‑> InferIR.Typ.Procname.t ‑> InferBase.Location.t ‑> summary ‑> astate