Module for Type Environments.

`type t`````

Type for type environment.

`val create : unit ‑> t`

Create a new type environment.

`val load : InferBase.SourceFile.t ‑> t option`

Load a type environment for a source file

`val store_debug_file_for_source : InferBase.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`

print a type environment

`val language_is : t ‑> InferBase.Language.t ‑> bool`

Test the language from which the types in the tenv were translated

`type per_file````=`

`|` `Global`
`|` `FileLocal of t`

``
`val pp_per_file : Format.formatter ‑> per_file ‑> unit`

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 : InferBase.SqliteUtils.Data with type t = per_file`