package solidity-typechecker
Module Solidity_checker_TYPESSource
Source
type 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;
}Source
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_desc
Source
and 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;
}Source
and module_desc = {module_abs_name : Solidity_common.absolute Solidity_common.LongIdent.t;module_pos : Solidity_common.pos;module_file : string;module_env : env;
}Source
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;
}Source
and constr_desc = {constr_enum_desc : enum_desc;constr_name : Solidity_common.Ident.t;constr_value : int;constr_type : type_;
}Source
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;
}Source
and field_desc = {field_struct_desc : struct_desc;field_name : Solidity_common.Ident.t;field_type : type_;
}Source
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;
}Source
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;
}Source
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;
}Source
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;
}Source
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;
}Source
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| 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 string
Source
type options = {allow_empty : bool;call_args : args option;fun_returns : type_ list;in_loop : bool;in_function : bool;in_modifier : bool;current_hierarchy : Solidity_common.absolute Solidity_common.LongIdent.t list;current_contract : contract_desc option;
}