module Lock : sig ... endAbstraction 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 ... endEvent type. Equality/comparison disregards the call trace but includes location.
module EventDomain : module type of sig ... endmodule OrderDomain : sig ... endmodule UIThreadDomain : InferModules.AbstractDomain.WithBottom with type astate = string InferModules.AbstractDomain.Types.bottom_liftedtype astate = {lock_state : LockState.astate; |
events : EventDomain.astate; |
order : OrderDomain.astate; |
ui : UIThreadDomain.astate; |
}include InferModules.AbstractDomain.WithBottom with type astate := astateval empty : astateThe 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 ‑> astateval blocking_call : caller:InferIR.Typ.Procname.t ‑> callee:InferIR.Typ.Procname.t ‑> Event.severity_t ‑> InferBase.Location.t ‑> astate ‑> astateset 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