Module Pulselib.PulseTransitiveInfo

module Callees : sig ... end

for each call site, we remember which resolution was performed

type t = {
  1. accesses : PulseTrace.Set.t;
    (*

    record specific accesses inter-procedurally

    *)
  2. callees : Callees.t;
    (*

    record all call resolutions that were transitively performed

    *)
  3. missed_captures : IR.Typ.Name.Set.t;
    (*

    record types that were missing during name resolution (fields/methods) while analysing this function and its transitive callees

    *)
}
include Ppx_compare_lib.Comparable.S with type t := t
val compare : t Base__Ppx_compare_lib.compare
include Ppx_compare_lib.Equal.S with type t := t
val equal : t Base__Ppx_compare_lib.equal
include Absint.AbstractDomain.WithBottom with type t := t
include Absint.AbstractDomain.S with type t := t
include Absint.AbstractDomain.Comparable with type t := t
include IStdlib.PrettyPrintable.PrintableType with type t := t
val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
val leq : lhs:t -> rhs:t -> bool

the implication relation: lhs <= rhs means lhs |- rhs

val join : t -> t -> t
val widen : prev:t -> next:t -> num_iters:int -> t
val bottom : t

The bottom value of the domain.

val is_bottom : t -> bool

Return true if this is the bottom value

val apply_summary : callee_pname:IR.Procname.t -> call_loc:IBase.Location.t -> summary:t -> t -> t
val remember_dropped_elements : dropped:t -> t -> t
val transfer_transitive_info_to_caller : caller:t -> IR.Procname.t -> IBase.Location.t -> callee_summary:t -> t