Module InferModules__StarvationDomain

module F = Format
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 Order : sig ... end

Represents either

module OrderDomain : sig ... end
module LockState : InferModules.AbstractDomain.WithBottom
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
include InferModules.AbstractDomain.S
type astate
val (<=) : lhs:astate ‑> rhs:astate ‑> bool

the partial order induced by join

val join : astate ‑> astate ‑> astate
val widen : prev:astate ‑> next:astate ‑> num_iters:int ‑> astate
val pp : InferModules.AbstractDomain.F.formatter ‑> astate ‑> unit
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 is_empty : astate ‑> bool

Return true if this is the bottom value

val acquire : astate ‑> InferBase.Location.t ‑> Lock.t ‑> astate
val release : astate ‑> Lock.t ‑> astate
val blocking_call : caller:InferIR.Typ.Procname.t ‑> callee:InferIR.Typ.Procname.t ‑> Event.severity_t ‑> InferBase.Location.t ‑> astate ‑> astate
val set_on_ui_thread : astate ‑> string ‑> 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

type summary = astate
val pp_summary : F.formatter ‑> summary ‑> unit
val integrate_summary : astate ‑> InferIR.Typ.Procname.t ‑> InferBase.Location.t ‑> summary ‑> astate