Pulselib.PulseMutualRecursionthe trace represents the start of a cycle but isn't a cycle yet, it's a sequence of calls that end where ondemand returned no summary due to mutual recursion; these proto-cycles get bubbled the cyclic call stack until the cycle is closed again
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.equalval yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.tval mk :
IBase.Location.t ->
IR.Procname.t ->
(Pulselib.PulseBasicInterface.AbstractValue.t
* Pulselib.PulseBasicInterface.ValueHistory.t)
list ->
ta trace of length 1
val get_inner_call :
t ->
IR.Procname.t
* (Pulselib.PulseBasicInterface.AbstractValue.t
* Pulselib.PulseBasicInterface.ValueHistory.t)
listthe "initial", innermost call in the cycle, together with its arguments (mapped to the current context)
val get_outer_location : t -> IBase.Location.tthe location of the first call in the cycle
val add_call :
(Pulselib.PulseBasicInterface.AbstractValue.t
* Pulselib.PulseBasicInterface.ValueHistory.t)
Pulselib.PulseBasicInterface.AbstractValue.Map.t ->
IR.Procname.t ->
IBase.Location.t ->
t ->
t optionval pp : F.formatter -> t -> unitval get_error_message : t -> is_call_with_same_values:bool -> stringval to_errlog : t -> is_call_with_same_values:bool -> Absint.Errlog.loc_tracemodule Set : IStdlib.PrettyPrintable.PPSet with type elt = t