Pulselib.PulseTransitiveInfomodule DirectCallee : sig ... endmodule Callees : sig ... endfor each call site, we remember which resolution was performed
type t = {accesses : PulseTrace.Set.t;record specific accesses inter-procedurally
*)callees : Callees.t;record all call resolutions that were transitively performed
*)direct_callees : DirectCallee.Set.t;record direct callee with specialization key
*)direct_missed_captures : IR.Typ.Name.Set.t;record types that were missing during name resolution (fields/methods) while analysing this function (ignoring what happened in callees)
*)has_transitive_missed_captures : Absint.AbstractDomain.BooleanOr.t;true iff one the callees of this function has at least one transitively missing type. This does not take into account the local direct_missed_captures set above.
}include Ppx_compare_lib.Comparable.S with type t := tval compare : t Base__Ppx_compare_lib.compareinclude Ppx_compare_lib.Equal.S with type t := tval equal : t Base__Ppx_compare_lib.equalinclude Absint.AbstractDomain.WithBottom with type t := tinclude Absint.AbstractDomain.S with type t := tinclude Absint.AbstractDomain.Comparable with type t := tinclude IStdlib.PrettyPrintable.PrintableType with type t := tval pp : IStdlib.PrettyPrintable.F.formatter -> t -> unitval bottom : tThe bottom value of the domain.
val is_bottom : t -> boolReturn true if this is the bottom value
val apply_summary :
callee_pname:IR.Procname.t ->
call_loc:IBase.Location.t ->
summary:t ->
t ->
tval add_specialized_direct_callee :
IR.Procname.t ->
IR.Specialization.Pulse.t ->
IBase.Location.t ->
t ->
t