Module IR__Tenv
val create : unit -> t
Create a new type environment.
val load : IBase.SourceFile.t -> t option
Load a type environment for a source file
val store_debug_file_for_source : IBase.SourceFile.t -> t -> unit
val read : IBase.DB.filename -> t option
read and return a type environment from the given file
val load_global : unit -> t option
load the global type environment (Java)
val store_global : t -> unit
save a global type environment (Java)
val lookup : t -> IR.Typ.Name.t -> IR.Struct.t option
Look up a name in the global type environment.
val mk_struct : t -> ?default:IR.Struct.t -> ?fields:IR.Struct.fields -> ?statics:IR.Struct.fields -> ?methods:IR.Procname.t list -> ?exported_objc_methods:IR.Procname.t list -> ?supers:IR.Typ.Name.t list -> ?annots:IR.Annot.Item.t -> ?java_class_info:IR.Struct.java_class_info -> ?dummy:bool -> IR.Typ.Name.t -> IR.Struct.t
Construct a struct_typ, normalizing field types
val add_field : t -> IR.Typ.Name.t -> IR.Struct.field -> unit
Add a field to a given struct in the global type environment.
val pp : Stdlib.Format.formatter -> t -> unit
print a type environment
type per_file
=
|
Global
|
FileLocal of t
val pp_per_file : Stdlib.Format.formatter -> per_file -> unit
print per file type environment
val merge : src:t -> dst:t -> unit
Merge
src
intodst
possibly overwriting pre existing procs indst
.
val merge_per_file : src:per_file -> dst:per_file -> per_file
Best-effort merge of
src
intodst
. If a procedure is both indst
andsrc
, the one indst
will get overwritten.
val resolve_method : method_exists:(IR.Procname.t -> IR.Procname.t list -> bool) -> t -> IR.Typ.Name.t -> IR.Procname.t -> IR.Procname.t option
resolve_method ~method_exists tenv class_name procname
tries to resolveprocname
to a method inclass_name
or its super-classes, that is non-virtual (non-Java-interface method).method_exists adapted_procname methods
should check ifadapted_procname
(procname
but with its class potentially changed to someother_class
) is among themethods
ofother_class
.
module SQLite : IBase.SqliteUtils.Data with type t = per_file