Module Absint.PatternMatch

val get_this_type_nonstatic_methods_only : IR.ProcAttributes.t -> IR.Typ.t option

Get the `this` type of a procedure. Should not be called on non-static methods, otherwise it can return a wrong type

val get_type_name : IR.Typ.t -> string

Get the name of a type

val get_vararg_type_names : IR.Tenv.t -> IR.Procdesc.Node.t -> IR.Pvar.t -> string list

Get the type names of a variable argument

val method_is_initializer : IR.Tenv.t -> IR.ProcAttributes.t -> bool

Check if the method is one of the known initializer methods.

val is_subtype : IR.Tenv.t -> IR.Typ.Name.t -> IR.Typ.Name.t -> bool

Is the type a transitive subtype of the typename?

val is_subtype_of_str : IR.Tenv.t -> IR.Typ.Name.t -> string -> bool

Resolve typ_str in tenv, then check typ <: typ_str

val implements : string -> IR.Tenv.t -> string -> bool

Check whether class implements a given class

val implements_arrays : IR.Tenv.t -> string -> bool

Check whether class implements Java's Arrays

val implements_iterator : IR.Tenv.t -> string -> bool

Check whether class implements Java's Iterator

val implements_collection : IR.Tenv.t -> string -> bool

Check whether class implements a Java's Collection

val implements_collections : IR.Tenv.t -> string -> bool

Check whether class implements a Java's Collections

val implements_pseudo_collection : IR.Tenv.t -> string -> bool

Check whether class implements a pseudo Collection with support for get() and size() methods

val implements_enumeration : IR.Tenv.t -> string -> bool

Check whether class implements a Java's Enumeration

val implements_jackson : string -> IR.Tenv.t -> string -> bool

Check whether class implements a class from Jackson

val implements_org_json : string -> IR.Tenv.t -> string -> bool

Check whether class implements a class from Json

val implements_inject : string -> IR.Tenv.t -> string -> bool

Check whether class implements a Javax Inject

val implements_io : string -> IR.Tenv.t -> string -> bool

Check whether class implements a Java IO

val implements_nio : string -> IR.Tenv.t -> string -> bool

Check whether class implements a Java nio

val implements_map : IR.Tenv.t -> string -> bool

Check whether class implements a Java's Map

val implements_androidx_map : IR.Tenv.t -> string -> bool

Check whether class implements a AndroidX's Map

val implements_set : IR.Tenv.t -> string -> bool

Check whether class implements a Java's Set

val implements_map_entry : IR.Tenv.t -> string -> bool

Check whether class implements a Java's Map$Entry

val implements_queue : IR.Tenv.t -> string -> bool

Check whether class implements a Java's Queue

val implements_lang : string -> IR.Tenv.t -> string -> bool

Check whether class implements a Java's lang

val implements_list : IR.Tenv.t -> string -> bool

Check whether class implements a Java's list

val implements_google : string -> IR.Tenv.t -> string -> bool

Check whether class implements a class of Google

val implements_android : string -> IR.Tenv.t -> string -> bool

Check whether class implements a class of Android

val implements_infer_annotation : string -> IR.Tenv.t -> string -> bool

Check whether class implements a class of Infer annotation

val implements_xmob_utils : string -> IR.Tenv.t -> string -> bool

Check whether class implements a class of xmod.utils

val supertype_exists : IR.Tenv.t -> (IR.Typ.Name.t -> IR.Struct.t -> bool) -> IR.Typ.Name.t -> bool

Holds iff the predicate holds on a supertype of the named type, including the type itself

val supertype_find_map_opt : IR.Tenv.t -> (IR.Typ.Name.t -> 'a option) -> IR.Typ.Name.t -> 'a option

Return the first non-None result found when applying the given function to supertypes of the named type, including the type itself

val proc_calls : (IR.Procname.t -> IR.ProcAttributes.t option) -> IR.Procdesc.t -> (IR.Procname.t -> IR.ProcAttributes.t -> bool) -> (IR.Procname.t * IR.ProcAttributes.t) list

Return the callees that satisfy filter.

val override_exists : ?⁠check_current_type:bool -> (IR.Procname.t -> bool) -> IR.Tenv.t -> IR.Procname.t -> bool

Return true if applying the given predicate to an override of procname (including procname itself when check_current_type is true, which it is by default) returns true.

val override_iter : (IR.Procname.t -> unit) -> IR.Tenv.t -> IR.Procname.t -> unit

Apply the given predicate to procname and each override of procname. For the moment, this only works for Java

val lookup_attributes : IR.Tenv.t -> IR.Procname.t -> IR.ProcAttributes.t option
val type_name_get_annotation : IR.Tenv.t -> IR.Typ.name -> IR.Annot.Item.t option
val type_get_annotation : IR.Tenv.t -> IR.Typ.t -> IR.Annot.Item.t option
val type_get_class_name : IR.Typ.t -> IR.Typ.Name.t option

Get the class name of the type

val type_is_class : IR.Typ.t -> bool

Is the type a class type

val get_fields_nullified : IR.Procdesc.t -> IR.Fieldname.Set.t

return the set of instance fields that are assigned to a null literal in procdesc

val is_throwable : IR.Tenv.t -> IR.Typ.Name.t -> bool

is_throwable tenv class_name checks if class_name is of type java.lang.Throwable

val is_java_enum : IR.Tenv.t -> IR.Typ.Name.t -> bool

Checks if the type is Java enum (extends java.lang.Enum)

val check_class_attributes : (IR.Annot.Item.t -> bool) -> IR.Tenv.t -> IR.Procname.t -> bool

tests whether any class attributes (e.g., @ThreadSafe) pass check of first argument, including supertypes

val check_current_class_attributes : (IR.Annot.Item.t -> bool) -> IR.Tenv.t -> IR.Procname.t -> bool

tests whether any class attributes (e.g., @ThreadSafe) pass check of first argument, for current class only

val find_superclasses_with_attributes : (IR.Annot.Item.t -> bool) -> IR.Tenv.t -> IR.Typ.Name.t -> IR.Typ.Name.t list

find superclasss with attributes (e.g., @ThreadSafe), including current class

val has_same_signature : IR.Procname.t -> (IR.Procname.t -> bool) IStdlib.IStd.Staged.t

For a given procname checks if the method has the same method name, number, order and types of parameters.)

val is_override_of_java_lang_object_equals : IR.Procname.t -> bool

Whether the method is an override of `java.lang.Object.equals(Object)` or `java.lang.Object.equals(Object)` itself

module ObjectiveC : sig ... end