Solidity_checker_TYPEStype env = {upper_env : env option;mutable ident_map : (ident_desc * origin) list Solidity_common.IdentMap.t;mutable using_for : (env * type_ list) Solidity_common.AbsLongIdentMap.t;}and ident_desc = | Alias of alias_desc| Module of module_desc| Contract of contract_desc| Type of type_desc| Variable of variable_desc| Function of function_desc| Modifier of modifier_desc| Event of event_desc| Field of field_desc| Constr of constr_descand alias_desc = {alias_abs_name : Solidity_common.absolute Solidity_common.LongIdent.t;alias_pos : Solidity_common.pos;alias_target_id : Solidity_common.Ident.t;alias_target_file : string;alias_target_env : env;mutable alias_targets : (ident_desc * origin) list;}and module_desc = {module_abs_name : Solidity_common.absolute Solidity_common.LongIdent.t;module_pos : Solidity_common.pos;module_file : string;module_env : env;}and enum_desc = {enum_abs_name : Solidity_common.absolute Solidity_common.LongIdent.t;enum_pos : Solidity_common.pos;enum_values : (Solidity_common.Ident.t * int) list;}and constr_desc = {constr_enum_desc : enum_desc;constr_name : Solidity_common.Ident.t;constr_value : int;constr_type : type_;}and struct_desc = {struct_abs_name : Solidity_common.absolute Solidity_common.LongIdent.t;mutable struct_fields : (Solidity_common.Ident.t * type_) list;mutable has_mapping : bool;struct_def : Solidity_ast.struct_definition;}and field_desc = {field_struct_desc : struct_desc;field_name : Solidity_common.Ident.t;field_type : type_;}and contract_desc = {contract_abs_name : Solidity_common.absolute Solidity_common.LongIdent.t;contract_env : env;mutable contract_hierarchy : (Solidity_common.absolute
Solidity_common.LongIdent.t
* contract_desc)
list;contract_def : Solidity_ast.contract_definition;}and variable_desc = {variable_abs_name : Solidity_common.absolute Solidity_common.LongIdent.t;mutable variable_type : type_;variable_visibility : Solidity_ast.visibility;variable_mutability : Solidity_ast.var_mutability;variable_local : bool;mutable variable_override : Solidity_common.absolute
Solidity_common.LongIdent.t
list
option;mutable variable_getter : function_desc option;variable_is_primitive : bool;variable_def : Solidity_ast.state_variable_definition option;mutable variable_ops : (function_desc * variable_operation) list;}and function_desc = {function_abs_name : Solidity_common.absolute Solidity_common.LongIdent.t;mutable function_params : (type_ * Solidity_common.Ident.t option) list;mutable function_returns : (type_ * Solidity_common.Ident.t option) list;function_returns_lvalue : bool;function_visibility : Solidity_ast.visibility;function_mutability : Solidity_ast.fun_mutability;mutable function_override : Solidity_common.absolute
Solidity_common.LongIdent.t
list
option;mutable function_selector : string option;function_is_method : bool;function_is_primitive : bool;function_def : Solidity_ast.function_definition option;mutable function_ops : (variable_desc * variable_operation) list;mutable function_purity : function_purity;}and modifier_desc = {modifier_abs_name : Solidity_common.absolute Solidity_common.LongIdent.t;mutable modifier_params : (type_ * Solidity_common.Ident.t option) list;modifier_def : Solidity_ast.modifier_definition;}and event_desc = {event_abs_name : Solidity_common.absolute Solidity_common.LongIdent.t;mutable event_params : (type_ * Solidity_common.Ident.t option) list;event_def : Solidity_ast.event_definition;}and function_options = {kind : fun_kind;value : bool;gas : bool;salt : bool;fields : Solidity_common.StringSet.t;}and type_ = | TBool| TInt of int| TUint of int| TFixed of int * int| TUfixed of int * int| TAddress of bool| TFixBytes of int| TBytes of location| TString of location| TEnum of Solidity_common.absolute Solidity_common.LongIdent.t * enum_desc| TStruct of Solidity_common.absolute Solidity_common.LongIdent.t
* struct_desc
* location| TContract of Solidity_common.absolute Solidity_common.LongIdent.t
* contract_desc
* bool| TArray of type_ * Z.t option * location| TMapping of type_ * type_ * location| TFunction of function_desc * function_options| TAbstract of abstract_type| TOptional of type_| TAny| TDots| TModifier of modifier_desc| TEvent of event_desc| TTuple of type_ option list| TArraySlice of type_ * location| TType of type_| TMagic of magic_type| TModule of Solidity_common.absolute Solidity_common.LongIdent.t * module_desc| TRationalConst of Q.t * int option| TLiteralString of stringand magic_type = | TMetaType of type_| TBlock| TMsg| TTx| TAbi| TTvm| TStatic of (Solidity_common.Ident.t option * type_) list| TMath| TRndtype options = {allow_empty : bool;call_args : args option;fun_returns : type_ list;in_loop : bool;in_function : function_desc option;in_modifier : bool;current_hierarchy : Solidity_common.absolute Solidity_common.LongIdent.t list;current_contract : contract_desc option;}