Pulselib.PulseTransitiveInfo
module DirectCallee : sig ... end
module Callees : sig ... end
for 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 := 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 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 add_specialized_direct_callee :
IR.Procname.t ->
IR.Specialization.Pulse.t ->
IBase.Location.t ->
t ->
t