|
|
|
@ -21,6 +21,7 @@ type t =
|
|
|
|
|
{
|
|
|
|
|
access : Sil.access; (** visibility access *)
|
|
|
|
|
captured : (Mangled.t * Sil.typ) list; (** name and type of variables captured in blocks *)
|
|
|
|
|
mutable changed : bool; (** true if proc has changed since last analysis *)
|
|
|
|
|
err_log: Errlog.t; (** Error log for the procedure *)
|
|
|
|
|
exceptions : string list; (** exceptions thrown by the procedure *)
|
|
|
|
|
formals : (Mangled.t * Sil.typ) list; (** name and type of formal parameters *)
|
|
|
|
@ -30,12 +31,12 @@ type t =
|
|
|
|
|
is_defined : bool; (** true if the procedure is defined, and not just declared *)
|
|
|
|
|
is_objc_instance_method : bool; (** the procedure is an objective-C instance method *)
|
|
|
|
|
is_cpp_instance_method : bool; (** the procedure is an C++ instance method *)
|
|
|
|
|
objc_accessor : objc_accessor_type option; (** the proc is ObjC accessor *)
|
|
|
|
|
mutable is_synthetic_method : bool; (** the procedure is a synthetic method *)
|
|
|
|
|
language : Config.language; (** language of the procedure *)
|
|
|
|
|
loc : Location.t; (** location of this procedure in the source code *)
|
|
|
|
|
mutable locals : (Mangled.t * Sil.typ) list; (** name and type of local variables *)
|
|
|
|
|
method_annotation : Sil.method_annotation; (** annotations for java methods *)
|
|
|
|
|
objc_accessor : objc_accessor_type option; (** type of ObjC accessor, if any *)
|
|
|
|
|
proc_flags : proc_flags; (** flags of the procedure *)
|
|
|
|
|
proc_name : Procname.t; (** name of the procedure *)
|
|
|
|
|
ret_type : Sil.typ; (** return type *)
|
|
|
|
@ -45,21 +46,22 @@ let copy pa =
|
|
|
|
|
{
|
|
|
|
|
access = pa.access;
|
|
|
|
|
captured = pa.captured;
|
|
|
|
|
changed = pa.changed;
|
|
|
|
|
err_log = pa.err_log;
|
|
|
|
|
exceptions = pa.exceptions;
|
|
|
|
|
formals = pa.formals;
|
|
|
|
|
func_attributes = pa.func_attributes;
|
|
|
|
|
is_abstract = pa.is_abstract;
|
|
|
|
|
is_bridge_method = pa.is_bridge_method;
|
|
|
|
|
is_cpp_instance_method = pa.is_cpp_instance_method;
|
|
|
|
|
is_defined = pa.is_defined;
|
|
|
|
|
is_objc_instance_method = pa.is_objc_instance_method;
|
|
|
|
|
is_cpp_instance_method = pa.is_cpp_instance_method;
|
|
|
|
|
objc_accessor = pa.objc_accessor;
|
|
|
|
|
is_synthetic_method = pa.is_synthetic_method;
|
|
|
|
|
language = pa.language;
|
|
|
|
|
loc = pa.loc;
|
|
|
|
|
locals = pa.locals;
|
|
|
|
|
method_annotation = pa.method_annotation;
|
|
|
|
|
objc_accessor = pa.objc_accessor;
|
|
|
|
|
proc_flags = pa.proc_flags;
|
|
|
|
|
proc_name = pa.proc_name;
|
|
|
|
|
ret_type = pa.ret_type;
|
|
|
|
@ -67,22 +69,23 @@ let copy pa =
|
|
|
|
|
|
|
|
|
|
let default proc_name language = {
|
|
|
|
|
access = Sil.Default;
|
|
|
|
|
formals = [];
|
|
|
|
|
captured = [];
|
|
|
|
|
changed = true;
|
|
|
|
|
err_log = Errlog.empty ();
|
|
|
|
|
exceptions = [];
|
|
|
|
|
formals = [];
|
|
|
|
|
func_attributes = [];
|
|
|
|
|
is_abstract = false;
|
|
|
|
|
is_defined = false;
|
|
|
|
|
is_bridge_method = false;
|
|
|
|
|
is_objc_instance_method = false;
|
|
|
|
|
is_cpp_instance_method = false;
|
|
|
|
|
objc_accessor = None;
|
|
|
|
|
is_defined = false;
|
|
|
|
|
is_objc_instance_method = false;
|
|
|
|
|
is_synthetic_method = false;
|
|
|
|
|
language;
|
|
|
|
|
loc = Location.dummy;
|
|
|
|
|
locals = [];
|
|
|
|
|
method_annotation = Sil.method_annotation_empty;
|
|
|
|
|
objc_accessor = None;
|
|
|
|
|
proc_flags = proc_flags_empty ();
|
|
|
|
|
proc_name;
|
|
|
|
|
ret_type = Sil.Tvoid;
|
|
|
|
|