Module Pulselib.PulseTaintItem

module F = Stdlib.Format
module TaintConfig = PulseTaintConfig
type origin =
  1. | Argument of {
    1. index : int;
    }
  2. | InstanceReference
  3. | ReturnValue
  4. | Allocation of {
    1. typ : string;
    }
  5. | GetField
  6. | SetField
  7. | FieldOfValue of {
    1. name : string;
    2. origin : origin;
    }
val compare_origin : origin -> origin -> int
val equal_origin : origin -> origin -> bool
type value =
  1. | TaintBlockPassedTo of IR.Procname.t
  2. | TaintField of IR.Fieldname.t
  3. | TaintProcedure of IR.Procname.t
val compare_value : value -> value -> int
val equal_value : value -> value -> bool
type value_tuple =
  1. | Basic of {
    1. value : value;
    2. origin : origin;
    }
  2. | FieldOf of {
    1. name : string;
    2. value_tuple : value_tuple;
    }
  3. | PointedToBy of {
    1. value_tuple : value_tuple;
    }
val compare_value_tuple : value_tuple -> value_tuple -> int
val equal_value_tuple : value_tuple -> value_tuple -> bool
type t = {
  1. kinds : TaintConfig.Kind.t list;
  2. value_tuple : value_tuple;
}
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
val pp_value : F.formatter -> value -> unit
val pp_value_plain : F.formatter -> value -> unit
val pp_value_tuple_debug : F.formatter -> value_tuple -> unit
val pp : F.formatter -> t -> unit
val is_argument_origin : t -> bool
val is_set_field_origin : t -> bool
val value_of_taint : t -> value
val field_of_origin : t -> string -> t
val get_rev_field_access_list : value_tuple -> [> `Field of string | `Deref ] list