Module Absint.PatternMatch

Module for Pattern matching.

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 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

module CSharp : sig ... end
module Java : sig ... end
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 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_find : ?check_current_type:bool -> (IR.Procname.t -> bool) -> IR.Tenv.t -> IR.Procname.t -> IR.Procname.t option

Check if the given predicate to an override of procname (including procname itself when check_current_type is true, which it is by default) returns true. If yes, return the name of the override.

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 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_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 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.)

module ObjectiveC : sig ... end
val is_entry_point : IR.Procname.t -> bool

Does the function name correspond to a known entry point? Currently only matches "main"