You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.6 KiB
61 lines
1.6 KiB
(*
|
|
* Copyright (c) 2016-present, Facebook, Inc.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*)
|
|
|
|
open! IStd
|
|
|
|
(** Module for Type Environments. *)
|
|
|
|
(** Type for type environment. *)
|
|
type t
|
|
|
|
val create : unit -> t
|
|
(** Create a new type environment. *)
|
|
|
|
val load : SourceFile.t -> t option
|
|
(** Load a type environment for a source file *)
|
|
|
|
val store_debug_file_for_source : SourceFile.t -> t -> unit
|
|
|
|
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 -> Typ.Name.t -> Typ.Struct.t option
|
|
(** Look up a name in the global type environment. *)
|
|
|
|
val mk_struct :
|
|
t
|
|
-> ?default:Typ.Struct.t
|
|
-> ?fields:Typ.Struct.fields
|
|
-> ?statics:Typ.Struct.fields
|
|
-> ?methods:Typ.Procname.t list
|
|
-> ?supers:Typ.Name.t list
|
|
-> ?annots:Annot.Item.t
|
|
-> Typ.Name.t
|
|
-> Typ.Struct.t
|
|
(** Construct a struct_typ, normalizing field types *)
|
|
|
|
val add_field : t -> Typ.Name.t -> Typ.Struct.field -> unit
|
|
(** Add a field to a given struct in the global type environment. *)
|
|
|
|
val pp : Format.formatter -> t -> unit [@@warning "-32"]
|
|
(** print a type environment *)
|
|
|
|
type per_file = Global | FileLocal of t
|
|
|
|
val pp_per_file : Format.formatter -> per_file -> unit
|
|
[@@warning "-32"]
|
|
(** print per file type environment *)
|
|
|
|
val merge : src:per_file -> dst:per_file -> per_file
|
|
(** Best-effort merge of [src] into [dst]. If a procedure is both in [dst] and [src], the one in
|
|
[src] will get overwritten. *)
|
|
|
|
module SQLite : SqliteUtils.Data with type t = per_file
|