Pulselib.PulseMutualRecursion
the 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.Equal.S with type t := t
val equal : t Base__Ppx_compare_lib.equal
val mk :
IBase.Location.t ->
IR.Procname.t ->
Pulselib.PulseBasicInterface.AbstractValue.t list ->
t
a trace of length 1
val get_inner_call : t -> IR.Procname.t
the "initial", innermost call in the cycle
val get_outer_location : t -> IBase.Location.t
the 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 option
val pp : F.formatter -> t -> unit
val get_error_message : t -> is_call_with_same_values:bool -> string
val to_errlog : t -> is_call_with_same_values:bool -> Absint.Errlog.loc_trace
module Set : IStdlib.PrettyPrintable.PPSet with type elt = t