Module type Source.Kind

include TaintTraceElem.Kind
type t
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 matches : caller:t -> callee:t -> bool

Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
val get : caller_pname:IR.Procname.t -> IR.Procname.t -> HilExp.t list -> IR.Tenv.t -> (t * int option) list

return Some (kind) if the procedure with the given actuals is a taint source, None otherwise

val get_tainted_formals : IR.Procdesc.t -> IR.Tenv.t -> (IR.Mangled.t * IR.Typ.t * t option) list

return each formal of the function paired with either Some(kind) if the formal is a taint source, or None if the formal is not a taint source