Module InferIR__ProcAttributes

Attributes of a procedure.

type objc_accessor_type =
| Objc_getter of InferIR.Typ.Struct.field
| Objc_setter of InferIR.Typ.Struct.field
val kind_of_objc_accessor_type : objc_accessor_type -> string
type var_data = {
name : InferIR.Mangled.t;
typ : InferIR.Typ.t;
modify_in_block : bool;

__block attribute of Objective-C variables, means that it will be modified inside a block

is_constexpr : bool;
}
type t = {
access : InferIR.PredSymb.access;

visibility access

captured : (InferIR.Mangled.t * InferIR.Typ.t) list;

name and type of variables captured in blocks

exceptions : string list;

exceptions thrown by the procedure

formals : (InferIR.Mangled.t * InferIR.Typ.t) list;

name and type of formal parameters

const_formals : int list;

list of indices of formals that are const-qualified

func_attributes : InferIR.PredSymb.func_attribute list;
is_abstract : bool;

the procedure is abstract

is_biabduction_model : bool;

the procedure is a model for the biabduction analysis

is_bridge_method : bool;

the procedure is a bridge method

is_defined : bool;

true if the procedure is defined, and not just declared

is_cpp_noexcept_method : bool;

the procedure is an C++ method annotated with "noexcept"

is_java_synchronized_method : bool;

the procedure is a Java synchronized method

is_specialized : bool;

the procedure is a clone specialized for dynamic dispatch handling

is_synthetic_method : bool;

the procedure is a synthetic method

is_variadic : bool;

the procedure is variadic, only supported for Clang procedures

clang_method_kind : InferIR.ClangMethodKind.t;

the kind of method the procedure is

loc : InferBase.Location.t;

location of this procedure in the source code

translation_unit : InferBase.SourceFile.t;

source file where the procedure was captured

mutable locals : var_data list;

name, type and attributes of local variables

method_annotation : InferIR.Annot.Method.t;

annotations for all methods

objc_accessor : objc_accessor_type option;

type of ObjC accessor, if any

proc_name : InferIR.Typ.Procname.t;

name of the procedure

ret_type : InferIR.Typ.t;

return type

has_added_return_param : bool;

whether or not a return param was added

}
val default : InferBase.SourceFile.t -> InferIR.Typ.Procname.t -> t

Create a proc_attributes with default values.

val pp : Stdlib.Format.formatter -> t -> unit
module SQLite : InferBase.SqliteUtils.Data with type t = t