Module Ast_core

module Types : sig ... end
module PP : sig ... end
module Yojson : sig ... end
module Formatter : sig ... end
module Combinators : sig ... end
module Misc : sig ... end
module Helpers : sig ... end
include module type of struct include Types end
module Ligo_string = Simple_utils.Ligo_string
include module type of struct include Stage_common.Types end
module Location = Simple_utils.Location
module List = Simple_utils.List
module ValueVar : sig ... end
module TypeVar : sig ... end
module ModuleVar : sig ... end
include module type of struct include Stage_common.Enums end
type z = Z.t
val compare_z : z -> z -> Ppx_deriving_runtime.int
type ligo_string = Simple_utils.Ligo_string.t
val ligo_string_to_yojson : ligo_string -> Yojson.Safe.t
val ligo_string_of_yojson : Yojson.Safe.t -> ligo_string Ppx_deriving_yojson_runtime.error_or
val compare_ligo_string : ligo_string -> ligo_string -> Ppx_deriving_runtime.int
val hash_fold_ligo_string : Ppx_hash_lib.Std.Hash.state -> ligo_string -> Ppx_hash_lib.Std.Hash.state
val hash_ligo_string : ligo_string -> Ppx_hash_lib.Std.Hash.hash_value
val z_to_yojson : Z.t -> [> `String of string ]
val z_of_yojson : [> `String of string ] -> ( Z.t, string ) Core._result
val bytes_to_yojson : Core.Bytes.t -> [> `String of string ]
type layout =
| L_comb
| L_tree
val hash_fold_layout : Ppx_hash_lib.Std.Hash.state -> layout -> Ppx_hash_lib.Std.Hash.state
val hash_layout : layout -> Ppx_hash_lib.Std.Hash.hash_value
val hash_fold_bytes : Core.Hash.state -> Core.Bytes.t -> Core.Hash.state
val hash_fold_z : Core.Hash.state -> Z.t -> Core.Hash.state
type literal =
| Literal_unit
| Literal_int of z
| Literal_nat of z
| Literal_timestamp of z
| Literal_mutez of z
| Literal_string of ligo_string
| Literal_bytes of bytes
| Literal_address of string
| Literal_signature of string
| Literal_key of string
| Literal_key_hash of string
| Literal_chain_id of string
| Literal_operation of bytes
| Literal_bls12_381_g1 of bytes
| Literal_bls12_381_g2 of bytes
| Literal_bls12_381_fr of bytes
| Literal_chest of bytes
| Literal_chest_key of bytes
val literal_to_yojson : literal -> Yojson.Safe.t
val literal_of_yojson : Yojson.Safe.t -> literal Ppx_deriving_yojson_runtime.error_or
val compare_literal : literal -> literal -> Ppx_deriving_runtime.int
val hash_fold_literal : Ppx_hash_lib.Std.Hash.state -> literal -> Ppx_hash_lib.Std.Hash.state
val hash_literal : literal -> Ppx_hash_lib.Std.Hash.hash_value
val literal_to_enum : literal -> int
type constant' =
| C_UNIT
| C_NIL
| C_SOME
| C_NONE
| C_UNOPT
| C_UNOPT_WITH_ERROR
| C_ASSERT_INFERRED
| C_UPDATE
| C_ITER
| C_LOOP_LEFT
| C_LOOP_CONTINUE
| C_LOOP_STOP
| C_FOLD
| C_FOLD_LEFT
| C_FOLD_RIGHT
| C_NEG
| C_ADD
| C_SUB
| C_MUL
| C_DIV
| C_MOD
| C_NOT
| C_AND
| C_OR
| C_XOR
| C_LSL
| C_LSR
| C_EQ
| C_NEQ
| C_LT
| C_GT
| C_LE
| C_GE
| C_CONCAT
| C_BYTES_UNPACK
| C_CONS
| C_PAIR
| C_CAR
| C_CDR
| C_TRUE
| C_FALSE
| C_LEFT
| C_RIGHT
| C_SET_EMPTY
| C_SET_LITERAL
| C_SET_ADD
| C_SET_REMOVE
| C_SET_ITER
| C_SET_FOLD
| C_SET_FOLD_DESC
| C_SET_MEM
| C_SET_UPDATE
| C_LIST_EMPTY
| C_LIST_LITERAL
| C_LIST_ITER
| C_LIST_MAP
| C_LIST_FOLD
| C_LIST_FOLD_LEFT
| C_LIST_FOLD_RIGHT
| C_MAP
| C_MAP_EMPTY
| C_MAP_LITERAL
| C_MAP_GET
| C_MAP_GET_FORCE
| C_MAP_ADD
| C_MAP_REMOVE
| C_MAP_UPDATE
| C_MAP_ITER
| C_MAP_MAP
| C_MAP_FOLD
| C_MAP_FIND
| C_MAP_FIND_OPT
| C_MAP_GET_AND_UPDATE
| C_BIG_MAP
| C_BIG_MAP_EMPTY
| C_BIG_MAP_LITERAL
| C_BIG_MAP_GET_AND_UPDATE
| C_CALL
| C_CONTRACT
| C_CONTRACT_OPT
| C_CONTRACT_WITH_ERROR
| C_CONTRACT_ENTRYPOINT
| C_CONTRACT_ENTRYPOINT_OPT
| C_ADDRESS
| C_SELF
| C_SELF_ADDRESS
| C_IMPLICIT_ACCOUNT
| C_SET_DELEGATE
| C_CREATE_CONTRACT
| C_OPEN_CHEST
| C_VIEW
| C_TEST_SIZE
| C_TEST_ORIGINATE
| C_TEST_GET_STORAGE_OF_ADDRESS
| C_TEST_GET_BALANCE
| C_TEST_SET_SOURCE
| C_TEST_SET_BAKER
| C_TEST_EXTERNAL_CALL_TO_ADDRESS
| C_TEST_EXTERNAL_CALL_TO_ADDRESS_EXN
| C_TEST_GET_NTH_BS
| C_TEST_PRINT
| C_TEST_TO_STRING
| C_TEST_UNESCAPE_STRING
| C_TEST_STATE_RESET
| C_TEST_BOOTSTRAP_CONTRACT
| C_TEST_NTH_BOOTSTRAP_CONTRACT
| C_TEST_LAST_ORIGINATIONS
| C_TEST_MUTATE_VALUE
| C_TEST_MUTATION_TEST
| C_TEST_MUTATION_TEST_ALL
| C_TEST_SAVE_MUTATION
| C_TEST_RUN
| C_TEST_COMPILE_CONTRACT
| C_TEST_DECOMPILE
| C_TEST_TO_CONTRACT
| C_TEST_TO_ENTRYPOINT
| C_TEST_COMPILE_CONTRACT_FROM_FILE
| C_TEST_TO_TYPED_ADDRESS
| C_TEST_NTH_BOOTSTRAP_TYPED_ADDRESS
| C_TEST_SET_BIG_MAP
| C_TEST_CAST_ADDRESS
| C_TEST_CREATE_CHEST
| C_TEST_CREATE_CHEST_KEY
| C_TEST_RANDOM
| C_TEST_GENERATOR_EVAL
| C_TEST_ADD_ACCOUNT
| C_TEST_NEW_ACCOUNT
| C_TEST_BAKER_ACCOUNT
| C_TEST_REGISTER_DELEGATE
| C_TEST_BAKE_UNTIL_N_CYCLE_END
| C_TEST_GET_VOTING_POWER
| C_TEST_GET_TOTAL_VOTING_POWER
| C_TEST_REGISTER_CONSTANT
| C_TEST_CONSTANT_TO_MICHELSON
| C_TEST_REGISTER_FILE_CONSTANTS
| C_TEST_PUSH_CONTEXT
| C_TEST_POP_CONTEXT
| C_TEST_DROP_CONTEXT
| C_TEST_FAILWITH
| C_TEST_READ_CONTRACT_FROM_FILE
| C_TEST_SIGN
| C_TEST_GET_ENTRYPOINT
| C_TEST_LAST_EVENTS
| C_SAPLING_VERIFY_UPDATE
| C_SAPLING_EMPTY_STATE
| C_GLOBAL_CONSTANT
| C_EMIT_EVENT
| C_POLYMORPHIC_ADD
| C_POLYMORPHIC_SUB
| C_SUB_MUTEZ
| C_OPTION_MAP
val min_constant' : int
val max_constant' : int
val constant'_to_enum : constant' -> int
val constant'_of_enum : int -> constant' option
val constant'_to_yojson : constant' -> Yojson.Safe.t
val constant'_of_yojson : Yojson.Safe.t -> constant' Ppx_deriving_yojson_runtime.error_or
val pp_constant' : Stdlib.Format.formatter -> constant' -> unit
val ppx_is_only_interpreter : constant' -> bool
val read_constant' : string -> constant' option
type deprecated = {
name : string;
const : constant';
}
type rich_constant =
| Const of constant'
module SMap : sig ... end
type location = Location.t
type 'a location_wrap = 'a Location.wrap
type attributes = string list
type known_attributes = {
inline : bool;
no_mutation : bool;
view : bool;
public : bool;
hidden : bool;
}
val hash_fold_known_attributes : Ppx_hash_lib.Std.Hash.state -> known_attributes -> Ppx_hash_lib.Std.Hash.state
val hash_known_attributes : known_attributes -> Ppx_hash_lib.Std.Hash.hash_value
type expression_variable = ValueVar.t
val hash_fold_expression_variable : Ppx_hash_lib.Std.Hash.state -> expression_variable -> Ppx_hash_lib.Std.Hash.state
val hash_expression_variable : expression_variable -> Ppx_hash_lib.Std.Hash.hash_value
type type_variable = TypeVar.t
val hash_fold_type_variable : Ppx_hash_lib.Std.Hash.state -> type_variable -> Ppx_hash_lib.Std.Hash.state
val hash_type_variable : type_variable -> Ppx_hash_lib.Std.Hash.hash_value
type module_variable = ModuleVar.t
val hash_fold_module_variable : Ppx_hash_lib.Std.Hash.state -> module_variable -> Ppx_hash_lib.Std.Hash.state
val hash_module_variable : module_variable -> Ppx_hash_lib.Std.Hash.hash_value
type kind =
| Type
| Singleton
val kind_to_yojson : kind -> Yojson.Safe.t
val kind_of_yojson : Yojson.Safe.t -> kind Ppx_deriving_yojson_runtime.error_or
val _ : Yojson.Safe.t -> kind Ppx_deriving_yojson_runtime.error_or
val equal_kind : kind -> kind -> bool
val compare_kind : kind -> kind -> int
val hash_fold_kind : Ppx_hash_lib.Std.Hash.state -> kind -> Ppx_hash_lib.Std.Hash.state
val hash_kind : kind -> Ppx_hash_lib.Std.Hash.hash_value
type label =
| Label of string
val hash_fold_label : Ppx_hash_lib.Std.Hash.state -> label -> Ppx_hash_lib.Std.Hash.state
val hash_label : label -> Ppx_hash_lib.Std.Hash.hash_value
val label_to_yojson : label -> [> `List of [> `String of string ] list ]
val equal_label : label -> label -> bool
val compare_label : label -> label -> int
module LMap : sig ... end
type 'a label_map = 'a LMap.t
val hash_fold_label_map : 'a. ( Ppx_hash_lib.Std.Hash.state -> 'a -> Ppx_hash_lib.Std.Hash.state ) -> Ppx_hash_lib.Std.Hash.state -> 'a label_map -> Ppx_hash_lib.Std.Hash.state
val const_name : rich_constant -> constant'
type 'ty_expr row_element_mini_c = {
associated_type : 'ty_expr;
michelson_annotation : string option;
decl_pos : int;
}
val hash_fold_row_element_mini_c : 'ty_expr. ( Ppx_hash_lib.Std.Hash.state -> 'ty_expr -> Ppx_hash_lib.Std.Hash.state ) -> Ppx_hash_lib.Std.Hash.state -> 'ty_expr row_element_mini_c -> Ppx_hash_lib.Std.Hash.state
type 'ty_exp type_app = {
type_operator : type_variable;
arguments : 'ty_exp list;
}
val hash_fold_type_app : 'ty_exp. ( Ppx_hash_lib.Std.Hash.state -> 'ty_exp -> Ppx_hash_lib.Std.Hash.state ) -> Ppx_hash_lib.Std.Hash.state -> 'ty_exp type_app -> Ppx_hash_lib.Std.Hash.state
type 'a module_access = {
module_path : module_variable list;
element : 'a;
}
val hash_fold_module_access : 'a. ( Ppx_hash_lib.Std.Hash.state -> 'a -> Ppx_hash_lib.Std.Hash.state ) -> Ppx_hash_lib.Std.Hash.state -> 'a module_access -> Ppx_hash_lib.Std.Hash.state
type 'ty_exp abstraction = {
ty_binder : type_variable;
kind : kind;
type_ : 'ty_exp;
}
val hash_fold_abstraction : 'ty_exp. ( Ppx_hash_lib.Std.Hash.state -> 'ty_exp -> Ppx_hash_lib.Std.Hash.state ) -> Ppx_hash_lib.Std.Hash.state -> 'ty_exp abstraction -> Ppx_hash_lib.Std.Hash.state
type 'ty_exp arrow = {
type1 : 'ty_exp;
type2 : 'ty_exp;
}
val hash_fold_arrow : 'ty_exp. ( Ppx_hash_lib.Std.Hash.state -> 'ty_exp -> Ppx_hash_lib.Std.Hash.state ) -> Ppx_hash_lib.Std.Hash.state -> 'ty_exp arrow -> Ppx_hash_lib.Std.Hash.state
type binder_attributes = {
const_or_var : [ `Const | `Var ] option;
}
val hash_fold_binder_attributes : Ppx_hash_lib.Std.Hash.state -> binder_attributes -> Ppx_hash_lib.Std.Hash.state
val hash_binder_attributes : binder_attributes -> Ppx_hash_lib.Std.Hash.hash_value
type 'ty_exp binder = {
var : expression_variable;
ascr : 'ty_exp option;
attributes : binder_attributes;
}
val hash_fold_binder : 'ty_exp. ( Ppx_hash_lib.Std.Hash.state -> 'ty_exp -> Ppx_hash_lib.Std.Hash.state ) -> Ppx_hash_lib.Std.Hash.state -> 'ty_exp binder -> Ppx_hash_lib.Std.Hash.state
type 'exp application = {
lamb : 'exp;
args : 'exp;
}
type 'exp constant = {
cons_name : constant';
arguments : 'exp list;
}
type ('exp, 'ty_exp) lambda = {
binder : 'ty_exp binder;
output_type : 'ty_exp option;
result : 'exp;
}
type ('exp, 'ty_exp) recursive = {
fun_name : expression_variable;
fun_type : 'ty_exp;
lambda : ( 'exp, 'ty_exp ) lambda;
}
type ('exp, 'ty_exp) type_in = {
type_binder : type_variable;
rhs : 'ty_exp;
let_result : 'exp;
}
type 'exp raw_code = {
language : string;
code : 'exp;
}
type 'exp constructor = {
constructor : label;
element : 'exp;
}
type 'exp access =
| Access_tuple of z
| Access_record of string
| Access_map of 'exp
type 'exp accessor = {
record : 'exp;
path : 'exp access list;
}
type 'exp update = {
record : 'exp;
path : 'exp access list;
update : 'exp;
}
type 'exp record_accessor = {
record : 'exp;
path : label;
}
type 'exp record_update = {
record : 'exp;
path : label;
update : 'exp;
}
type 'exp type_abs = {
type_binder : type_variable;
result : 'exp;
}
type ('exp, 'ty_exp) ascription = {
anno_expr : 'exp;
type_annotation : 'ty_exp;
}
type 'exp conditional = {
condition : 'exp;
then_clause : 'exp;
else_clause : 'exp;
}
and 'exp sequence = {
expr1 : 'exp;
expr2 : 'exp;
}
and ('exp, 'ty_exp) assign = {
binder : 'ty_exp binder;
expression : 'exp;
}
and 'exp for_ = {
binder : expression_variable;
start : 'exp;
final : 'exp;
incr : 'exp;
f_body : 'exp;
}
and 'exp for_each = {
fe_binder : expression_variable * expression_variable option;
collection : 'exp;
collection_type : collect_type;
fe_body : 'exp;
}
and collect_type =
| Map
| Set
| List
| Any
and 'exp while_loop = {
cond : 'exp;
body : 'exp;
}
type 'ty_exp list_pattern =
| Cons of 'ty_exp pattern * 'ty_exp pattern
| List of 'ty_exp pattern list
and 'ty_exp pattern_repr =
| P_unit
| P_var of 'ty_exp binder
| P_list of 'ty_exp list_pattern
| P_variant of label * 'ty_exp pattern
| P_tuple of 'ty_exp pattern list
| P_record of label list * 'ty_exp pattern list
and 'ty_exp pattern = 'ty_exp pattern_repr Location.wrap
type ('exp, 'ty_exp) match_case = {
pattern : 'ty_exp pattern;
body : 'exp;
}
type ('exp, 'ty_exp) match_exp = {
matchee : 'exp;
cases : ( 'exp, 'ty_exp ) match_case list;
}
type ('ty_exp, 'attr) declaration_type' = {
type_binder : type_variable;
type_expr : 'ty_exp;
type_attr : 'attr;
}
and ('exp, 'ty_exp, 'attr) declaration_constant' = {
binder : 'ty_exp binder;
expr : 'exp;
attr : 'attr;
}
and ('exp, 'ty_exp, 'attr_e, 'attr_t, 'attr_m) declaration_module' = {
module_binder : module_variable;
module_ : ( 'exp, 'ty_exp, 'attr_e, 'attr_t, 'attr_m ) module_expr';
module_attr : 'attr_m;
}
and ('exp, 'ty_exp, 'attr_e, 'attr_t, 'attr_m) declaration_content' =
| Declaration_type of ( 'ty_exp, 'attr_t ) declaration_type'
| Declaration_constant of ( 'exp, 'ty_exp, 'attr_e ) declaration_constant'
| Declaration_module of ( 'exp, 'ty_exp, 'attr_e, 'attr_t, 'attr_m ) declaration_module'
and ('exp, 'ty_exp, 'attr_e, 'attr_t, 'attr_m) declaration' = ( 'exp, 'ty_exp, 'attr_e, 'attr_t, 'attr_m ) declaration_content' location_wrap
and ('exp, 'ty_exp, 'attr_e, 'attr_t, 'attr_m) declarations' = ( 'exp, 'ty_exp, 'attr_e, 'attr_t, 'attr_m ) declaration' list
and ('exp, 'ty_exp, 'attr_e, 'attr_t, 'attr_m) mod_in' = {
module_binder : module_variable;
rhs : ( 'exp, 'ty_exp, 'attr_e, 'attr_t, 'attr_m ) module_expr';
let_result : 'exp;
}
and module_path_' = module_variable List.Ne.t
and ('exp, 'ty_exp, 'attr_e, 'attr_t, 'attr_m) module_expr_content' =
| M_struct of ( 'exp, 'ty_exp, 'attr_e, 'attr_t, 'attr_m ) declarations'
| M_variable of module_variable
| M_module_path of module_path_'
and ('exp, 'ty_exp, 'attr_e, 'attr_t, 'attr_m) module_expr' = ( 'exp, 'ty_exp, 'attr_e, 'attr_t, 'attr_m ) module_expr_content' Location.wrap
type sugar_type_expression_option = Ast_sugar.type_expression option
type sugar_expression_option = Ast_sugar.expression option
type string_option = string option
type type_attribute = {
public : bool;
hidden : bool;
}
and module_attribute = type_attribute
and declaration_constant = ( expression, ty_expr, known_attributes ) declaration_constant'
and declaration_type = ( ty_expr, type_attribute ) declaration_type'
and rows = {
fields : row_element label_map;
layout : layout option;
}
and row_element = ty_expr row_element_mini_c
and type_expression = {
type_content : {type_content}3;
sugar : sugar_type_expression_option;
location : location;
}
and ty_expr = type_expression
and expression = {
expression_content : {expression_content}4;
sugar : sugar_expression_option;
location : location;
}
and expr = expression
and expression_label_map = expression label_map
and type_expression_option = type_expression option
and let_in = {
let_binder : ty_expr binder;
rhs : expression;
let_result : expression;
attr : known_attributes;
}
and matching_expr = ( expr, ty_expr ) match_exp
type program = module_
include module type of struct include Misc end
include module type of struct include Misc end
val assert_value_eq : (Types.expression * Types.expression) -> unit option
include module type of struct include Combinators end
type expression_content = Types.expression_content =
| E_literal of Types.literal
| E_constant of Types.expr Types.constant
| E_variable of Types.expression_variable
| E_application of Types.expr Types.application
| E_lambda of ( Types.expr, Types.ty_expr ) Types.lambda
| E_type_abstraction of Types.expr Types.type_abs
| E_recursive of ( Types.expr, Types.ty_expr ) Types.recursive
| E_let_in of Types.let_in
| E_type_in of ( Types.expr, Types.ty_expr ) Types.type_in
| E_mod_in of Types.mod_in
| E_raw_code of Types.expr Types.raw_code
| E_constructor of Types.expr Types.constructor
| E_matching of Types.matching_expr
| E_record of Types.expression_label_map
| E_record_accessor of Types.expr Types.record_accessor
| E_record_update of Types.expr Types.record_update
| E_ascription of ( Types.expr, Types.ty_expr ) Types.ascription
| E_module_accessor of Types.expression_variable Types.module_access
| E_assign of ( Types.expr, Types.ty_expr ) Types.assign
type nonrec e_application = Types.expr Types.application
type nonrec e_ascription = ( Types.expr, Types.ty_expr ) Types.ascription
type nonrec e_assign = ( Types.expr, Types.ty_expr ) Types.assign
type nonrec e_constant = Types.expr Types.constant
type nonrec e_constructor = Types.expr Types.constructor
type nonrec e_lambda = ( Types.expr, Types.ty_expr ) Types.lambda
type nonrec e_let_in = Types.let_in
type nonrec e_literal = Types.literal
type nonrec e_matching = Types.matching_expr
type nonrec e_mod_in = Types.mod_in
type nonrec e_module_accessor = Types.expression_variable Types.module_access
type nonrec e_raw_code = Types.expr Types.raw_code
type nonrec e_record = Types.expression_label_map
type nonrec e_record_accessor = Types.expr Types.record_accessor
type nonrec e_record_update = Types.expr Types.record_update
type nonrec e_recursive = ( Types.expr, Types.ty_expr ) Types.recursive
type nonrec e_type_abstraction = Types.expr Types.type_abs
type nonrec e_type_in = ( Types.expr, Types.ty_expr ) Types.type_in
type nonrec e_variable = Types.expression_variable
val e_application : Types.expr Types.application -> ?loc:Types.Location.t -> ?sugar:Ast_sugar.expression -> unit -> Types.expression
val e_constructor : Types.expr Types.constructor -> ?loc:Types.Location.t -> ?sugar:Ast_sugar.expression -> unit -> Types.expression
val e_let_in : Types.let_in -> ?loc:Types.Location.t -> ?sugar:Ast_sugar.expression -> unit -> Types.expression
val e_literal : Types.literal -> ?loc:Types.Location.t -> ?sugar:Ast_sugar.expression -> unit -> Types.expression
val e_matching : Types.matching_expr -> ?loc:Types.Location.t -> ?sugar:Ast_sugar.expression -> unit -> Types.expression
val e_mod_in : Types.mod_in -> ?loc:Types.Location.t -> ?sugar:Ast_sugar.expression -> unit -> Types.expression
val e_record_accessor : Types.expr Types.record_accessor -> ?loc:Types.Location.t -> ?sugar:Ast_sugar.expression -> unit -> Types.expression
val e_record_update : Types.expr Types.record_update -> ?loc:Types.Location.t -> ?sugar:Ast_sugar.expression -> unit -> Types.expression
val e_type_abstraction : Types.expr Types.type_abs -> ?loc:Types.Location.t -> ?sugar:Ast_sugar.expression -> unit -> Types.expression
val is_e_application : Types.expression -> bool
val is_e_ascription : Types.expression -> bool
val is_e_assign : Types.expression -> bool
val is_e_constant : Types.expression -> bool
val is_e_constructor : Types.expression -> bool
val is_e_lambda : Types.expression -> bool
val is_e_let_in : Types.expression -> bool
val is_e_literal : Types.expression -> bool
val is_e_matching : Types.expression -> bool
val is_e_mod_in : Types.expression -> bool
val is_e_module_accessor : Types.expression -> bool
val is_e_raw_code : Types.expression -> bool
val is_e_record : Types.expression -> bool
val is_e_record_accessor : Types.expression -> bool
val is_e_record_update : Types.expression -> bool
val is_e_recursive : Types.expression -> bool
val is_e_type_abstraction : Types.expression -> bool
val is_e_type_in : Types.expression -> bool
val is_e_variable : Types.expression -> bool
val get_e_application_exn : Types.expression -> Types.expr Types.application
val get_e_ascription_exn : Types.expression -> ( Types.expr, Types.ty_expr ) Types.ascription
val get_e_assign_exn : Types.expression -> ( Types.expr, Types.ty_expr ) Types.assign
val get_e_constant_exn : Types.expression -> Types.expr Types.constant
val get_e_constructor_exn : Types.expression -> Types.expr Types.constructor
val get_e_lambda_exn : Types.expression -> ( Types.expr, Types.ty_expr ) Types.lambda
val get_e_let_in_exn : Types.expression -> Types.let_in
val get_e_literal_exn : Types.expression -> Types.literal
val get_e_matching_exn : Types.expression -> Types.matching_expr
val get_e_mod_in_exn : Types.expression -> Types.mod_in
val get_e_raw_code_exn : Types.expression -> Types.expr Types.raw_code
val get_e_record_accessor_exn : Types.expression -> Types.expr Types.record_accessor
val get_e_record_update_exn : Types.expression -> Types.expr Types.record_update
val get_e_recursive_exn : Types.expression -> ( Types.expr, Types.ty_expr ) Types.recursive
val get_e_type_abstraction_exn : Types.expression -> Types.expr Types.type_abs
val get_e_type_in_exn : Types.expression -> ( Types.expr, Types.ty_expr ) Types.type_in
val get_e_variable_exn : Types.expression -> Types.expression_variable
val get_e_application_opt : Types.expression -> Types.expr Types.application option
val get_e_ascription_opt : Types.expression -> ( Types.expr, Types.ty_expr ) Types.ascription option
val get_e_assign_opt : Types.expression -> ( Types.expr, Types.ty_expr ) Types.assign option
val get_e_constant_opt : Types.expression -> Types.expr Types.constant option
val get_e_constructor_opt : Types.expression -> Types.expr Types.constructor option
val get_e_lambda_opt : Types.expression -> ( Types.expr, Types.ty_expr ) Types.lambda option
val get_e_let_in_opt : Types.expression -> Types.let_in option
val get_e_literal_opt : Types.expression -> Types.literal option
val get_e_matching_opt : Types.expression -> Types.matching_expr option
val get_e_mod_in_opt : Types.expression -> Types.mod_in option
val get_e_module_accessor_opt : Types.expression -> Types.expression_variable Types.module_access option
val get_e_raw_code_opt : Types.expression -> Types.expr Types.raw_code option
val get_e_record_opt : Types.expression -> Types.expression_label_map option
val get_e_record_accessor_opt : Types.expression -> Types.expr Types.record_accessor option
val get_e_record_update_opt : Types.expression -> Types.expr Types.record_update option
val get_e_recursive_opt : Types.expression -> ( Types.expr, Types.ty_expr ) Types.recursive option
val get_e_type_abstraction_opt : Types.expression -> Types.expr Types.type_abs option
val get_e_type_in_opt : Types.expression -> ( Types.expr, Types.ty_expr ) Types.type_in option
val get_e_variable_opt : Types.expression -> Types.expression_variable option
val get_e_application : Types.expression -> Types.expr Types.application option
val get_e_ascription : Types.expression -> ( Types.expr, Types.ty_expr ) Types.ascription option
val get_e_assign : Types.expression -> ( Types.expr, Types.ty_expr ) Types.assign option
val get_e_constant : Types.expression -> Types.expr Types.constant option
val get_e_constructor : Types.expression -> Types.expr Types.constructor option
val get_e_lambda : Types.expression -> ( Types.expr, Types.ty_expr ) Types.lambda option
val get_e_let_in : Types.expression -> Types.let_in option
val get_e_literal : Types.expression -> Types.literal option
val get_e_matching : Types.expression -> Types.matching_expr option
val get_e_mod_in : Types.expression -> Types.mod_in option
val get_e_module_accessor : Types.expression -> Types.expression_variable Types.module_access option
val get_e_raw_code : Types.expression -> Types.expr Types.raw_code option
val get_e_record : Types.expression -> Types.expression_label_map option
val get_e_record_accessor : Types.expression -> Types.expr Types.record_accessor option
val get_e_record_update : Types.expression -> Types.expr Types.record_update option
val get_e_recursive : Types.expression -> ( Types.expr, Types.ty_expr ) Types.recursive option
val get_e_type_abstraction : Types.expression -> Types.expr Types.type_abs option
val get_e_type_in : Types.expression -> ( Types.expr, Types.ty_expr ) Types.type_in option
val get_e_variable : Types.expression -> Types.expression_variable option
val expression_content_destruct : expression_content -> e_application:( Types.expr Types.application -> 'a ) -> e_ascription:( ( Types.expr, Types.ty_expr ) Types.ascription -> 'b ) -> e_assign:( ( Types.expr, Types.ty_expr ) Types.assign -> 'c ) -> e_constant:( Types.expr Types.constant -> 'd ) -> e_constructor:( Types.expr Types.constructor -> 'e ) -> e_lambda:( ( Types.expr, Types.ty_expr ) Types.lambda -> 'f ) -> e_let_in:( Types.let_in -> 'g ) -> e_literal:( Types.literal -> 'h ) -> e_matching:( Types.matching_expr -> 'i ) -> e_mod_in:( Types.mod_in -> 'j ) -> e_module_accessor:( Types.expression_variable Types.module_access -> 'k ) -> e_raw_code:( Types.expr Types.raw_code -> 'l ) -> e_record:( Types.expression_label_map -> 'm ) -> e_record_accessor:( Types.expr Types.record_accessor -> 'n ) -> e_record_update:( Types.expr Types.record_update -> 'o ) -> e_recursive:( ( Types.expr, Types.ty_expr ) Types.recursive -> 'p ) -> e_type_abstraction:( Types.expr Types.type_abs -> 'q ) -> e_type_in:( ( Types.expr, Types.ty_expr ) Types.type_in -> 'r ) -> e_variable:( Types.expression_variable -> 's ) -> 't
type type_content = Types.type_content =
| T_variable of Types.type_variable
| T_sum of Types.rows
| T_record of Types.rows
| T_arrow of Types.ty_expr Types.arrow
| T_app of Types.ty_expr Types.type_app
| T_module_accessor of Types.type_variable Types.module_access
| T_singleton of Types.literal
| T_abstraction of Types.ty_expr Types.abstraction
| T_for_all of Types.ty_expr Types.abstraction
type nonrec t_abstraction = Types.ty_expr Types.abstraction
type nonrec t_app = Types.ty_expr Types.type_app
type nonrec t_arrow = Types.ty_expr Types.arrow
type nonrec t_for_all = Types.ty_expr Types.abstraction
type nonrec t_module_accessor = Types.type_variable Types.module_access
type nonrec t_record = Types.rows
type nonrec t_singleton = Types.literal
type nonrec t_sum = Types.rows
type nonrec t_variable = Types.type_variable
val t_singleton : Types.literal -> ?loc:Types.Location.t -> ?sugar:Ast_sugar.type_expression -> unit -> Types.type_expression
val map_t_record : ( Types.rows -> Types.rows ) -> type_content -> type_content
val map_t_singleton : ( Types.literal -> Types.literal ) -> type_content -> type_content
val map_t_sum : ( Types.rows -> Types.rows ) -> type_content -> type_content
val set_t_record : type_content -> Types.rows -> type_content
val set_t_singleton : type_content -> Types.literal -> type_content
val set_t_sum : type_content -> Types.rows -> type_content
val set_t_variable : type_content -> Types.type_variable -> type_content
val is_t_abstraction : Types.type_expression -> bool
val is_t_app : Types.type_expression -> bool
val is_t_arrow : Types.type_expression -> bool
val is_t_for_all : Types.type_expression -> bool
val is_t_module_accessor : Types.type_expression -> bool
val is_t_record : Types.type_expression -> bool
val is_t_singleton : Types.type_expression -> bool
val is_t_sum : Types.type_expression -> bool
val is_t_variable : Types.type_expression -> bool
val get_t_record_exn : Types.type_expression -> Types.rows
val get_t_singleton_exn : Types.type_expression -> Types.literal
val get_t_sum_exn : Types.type_expression -> Types.rows
val get_t_variable_exn : Types.type_expression -> Types.type_variable
val get_t_abstraction_opt : Types.type_expression -> Types.ty_expr Types.abstraction option
val get_t_app_opt : Types.type_expression -> Types.ty_expr Types.type_app option
val get_t_arrow_opt : Types.type_expression -> Types.ty_expr Types.arrow option
val get_t_for_all_opt : Types.type_expression -> Types.ty_expr Types.abstraction option
val get_t_module_accessor_opt : Types.type_expression -> Types.type_variable Types.module_access option
val get_t_record_opt : Types.type_expression -> Types.rows option
val get_t_singleton_opt : Types.type_expression -> Types.literal option
val get_t_sum_opt : Types.type_expression -> Types.rows option
val get_t_variable_opt : Types.type_expression -> Types.type_variable option
val get_t_abstraction : Types.type_expression -> Types.ty_expr Types.abstraction option
val get_t_arrow : Types.type_expression -> Types.ty_expr Types.arrow option
val get_t_module_accessor : Types.type_expression -> Types.type_variable Types.module_access option
val get_t_record : Types.type_expression -> Types.rows option
val get_t_singleton : Types.type_expression -> Types.literal option
val get_t_sum : Types.type_expression -> Types.rows option
val get_t_variable : Types.type_expression -> Types.type_variable option
val type_content_destruct : type_content -> t_abstraction:( Types.ty_expr Types.abstraction -> 'a ) -> t_app:( Types.ty_expr Types.type_app -> 'b ) -> t_arrow:( Types.ty_expr Types.arrow -> 'c ) -> t_for_all:( Types.ty_expr Types.abstraction -> 'd ) -> t_module_accessor:( Types.type_variable Types.module_access -> 'e ) -> t_record:( Types.rows -> 'f ) -> t_singleton:( Types.literal -> 'g ) -> t_sum:( Types.rows -> 'h ) -> t_variable:( Types.type_variable -> 'i ) -> 'j
val type_content_destruct_tpl : type_content -> ( Types.ty_expr Types.abstraction -> 'a ) -> ( Types.ty_expr Types.type_app -> 'b ) -> ( Types.ty_expr Types.arrow -> 'c ) -> ( Types.ty_expr Types.abstraction -> 'd ) -> ( Types.type_variable Types.module_access -> 'e ) -> ( Types.rows -> 'f ) -> ( Types.literal -> 'g ) -> ( Types.rows -> 'h ) -> ( Types.type_variable -> 'i ) -> 'j
val t_signature : ?loc:Types.Location.t -> ?sugar:Ast_sugar.type_expression -> unit -> Types.type_expression
val t_chain_id : ?loc:Types.Location.t -> ?sugar:Ast_sugar.type_expression -> unit -> Types.type_expression
val t_string : ?loc:Types.Location.t -> ?sugar:Ast_sugar.type_expression -> unit -> Types.type_expression
val t_bytes : ?loc:Types.Location.t -> ?sugar:Ast_sugar.type_expression -> unit -> Types.type_expression
val t_key_hash : ?loc:Types.Location.t -> ?sugar:Ast_sugar.type_expression -> unit -> Types.type_expression
val t_address : ?loc:Types.Location.t -> ?sugar:Ast_sugar.type_expression -> unit -> Types.type_expression
val t_operation : ?loc:Types.Location.t -> ?sugar:Ast_sugar.type_expression -> unit -> Types.type_expression
val t_timestamp : ?loc:Types.Location.t -> ?sugar:Ast_sugar.type_expression -> unit -> Types.type_expression
val t_bls12_381_g1 : ?loc:Types.Location.t -> ?sugar:Ast_sugar.type_expression -> unit -> Types.type_expression
val t_bls12_381_g2 : ?loc:Types.Location.t -> ?sugar:Ast_sugar.type_expression -> unit -> Types.type_expression
val t_bls12_381_fr : ?loc:Types.Location.t -> ?sugar:Ast_sugar.type_expression -> unit -> Types.type_expression
val t_never : ?loc:Types.Location.t -> ?sugar:Ast_sugar.type_expression -> unit -> Types.type_expression
val t_mutation : ?loc:Types.Location.t -> ?sugar:Ast_sugar.type_expression -> unit -> Types.type_expression
val t_pvss_key : ?loc:Types.Location.t -> ?sugar:Ast_sugar.type_expression -> unit -> Types.type_expression
val t_baker_hash : ?loc:Types.Location.t -> ?sugar:Ast_sugar.type_expression -> unit -> Types.type_expression
val t_chest_key : ?loc:Types.Location.t -> ?sugar:Ast_sugar.type_expression -> unit -> Types.type_expression
val t_chest : ?loc:Types.Location.t -> ?sugar:Ast_sugar.type_expression -> unit -> Types.type_expression
val t_mutez : ?loc:Types.Location.t -> ?sugar:Ast_sugar.type_expression -> unit -> Types.type_expression
val default_layout : Types.layout
val make_t_ez_record : ?loc:Types.Location.t -> ?sugar:Ast_sugar.type_expression -> ?layout:Types.layout -> (string * Types.type_expression) list -> Types.type_expression
val t_sum_ez : ?loc:Types.Location.t -> ?sugar:Ast_sugar.type_expression -> ?layout:Types.layout -> (string * Types.type_expression) list -> Types.type_expression
val get_t_bool : Types.type_expression -> unit option
val get_t_option : Types.type_expression -> Types.type_expression option
val tuple_of_record : 'a Types.row_element_mini_c Types.LMap.t -> 'b list
val get_t_tuple : Types.type_expression -> Types.type_expression list option
val ez_e_record : (Types.label * Types.expression) list -> Types.expression
val e_var : ?loc:Simple_utils.Location.t -> ?sugar:Ast_sugar.expression -> string -> Types.expression
val e_unit : ?loc:Types.Location.t -> ?sugar:Ast_sugar.expression -> unit -> Types.expression
val e_bytes : ?loc:Types.Location.t -> ?sugar:Ast_sugar.expression -> bytes -> Types.expression
val e_timestamp : ?loc:Types.Location.t -> ?sugar:Ast_sugar.expression -> Types.z -> Types.expression
val e_address : ?loc:Types.Location.t -> ?sugar:Ast_sugar.expression -> string -> Types.expression
val e_signature : ?loc:Types.Location.t -> ?sugar:Ast_sugar.expression -> string -> Types.expression
val e_key : ?loc:Types.Location.t -> ?sugar:Ast_sugar.expression -> string -> Types.expression
val e_key_hash : ?loc:Types.Location.t -> ?sugar:Ast_sugar.expression -> string -> Types.expression
val e_chain_id : ?loc:Types.Location.t -> ?sugar:Ast_sugar.expression -> string -> Types.expression
val e_operation : ?loc:Types.Location.t -> ?sugar:Ast_sugar.expression -> bytes -> Types.expression
val e_bls12_381_g1 : ?loc:Types.Location.t -> ?sugar:Ast_sugar.expression -> bytes -> Types.expression
val e_bls12_381_g2 : ?loc:Types.Location.t -> ?sugar:Ast_sugar.expression -> bytes -> Types.expression
val e_bls12_381_fr : ?loc:Types.Location.t -> ?sugar:Ast_sugar.expression -> bytes -> Types.expression
val e'_bytes : string -> expression_content
val e_bytes_hex : ?loc:Types.Location.t -> ?sugar:Ast_sugar.expression -> string -> Types.expression
val e_bytes_raw : ?loc:Types.Location.t -> ?sugar:Ast_sugar.expression -> bytes -> Types.expression
val e_bytes_string : ?loc:Types.Location.t -> ?sugar:Ast_sugar.expression -> string -> Types.expression
val e_application : Types.expr -> Types.expr -> Types.expression
val e_raw_code : ?loc:Types.Location.t -> ?sugar:Ast_sugar.expression -> string -> Types.expr -> Types.expression
val e_constructor : Types.label -> Types.expr -> Types.expression
val e_record_accessor : ?loc:Types.Location.t -> ?sugar:Ast_sugar.expression -> Types.expr -> Types.label -> Types.expression
val e_lambda_ez : ?loc:Types.Location.t -> ?sugar:Ast_sugar.expression -> Types.expression_variable -> ?ascr:Types.ty_expr -> ?const_or_var:[ `Const | `Var ] -> Types.ty_expr option -> Types.expr -> Types.expression
val e_let_in_ez : ?loc:Types.Location.t -> ?sugar:Ast_sugar.expression -> Types.expression_variable -> ?ascr:Types.ty_expr -> ?const_or_var:[ `Const | `Var ] -> Types.known_attributes -> Types.expression -> Types.expression -> Types.expression
val e_none : ?loc:Types.Location.t -> ?sugar:Ast_sugar.expression -> unit -> Types.expression
val e_bool : bool -> Types.expression
val get_e_int : Types.expression -> Types.z option
val get_e_string : Types.expression -> string option
val get_e_verbatim : Types.expression -> string option
val get_e_unit : Types.expression -> unit option
val get_e_list : expression_content -> Types.expr list option
val get_e_tuple : expression_content -> Types.expression list option
val get_record_field_type : Types.type_expression -> Types.label -> Types.type_expression option
val get_e_ascription : expression_content -> (Types.expr * Types.ty_expr) option
val get_type_abstractions : Types.expression -> Types.type_variable list * Types.expression
val extract_pair : Types.expression -> (Types.expression * Types.expression) option
val extract_record : Types.expression -> (Types.label * Types.expression) list option
val extract_map : Types.expression -> (Types.expression * Types.expression) list option
val make_binder : ?ascr:'a option -> ?attributes:Types.binder_attributes -> Types.expression_variable -> 'b Types.binder
module Debug = Stage_common.Debug
module Compare : sig ... end