Ast_destruct.Make
module F : Features.T
include sig ... end
type expr_If = {
cond : Hax_engine__Ast.Make(F).expr;
then_ : Hax_engine__Ast.Make(F).expr;
else_ : Hax_engine__Ast.Make(F).expr Prelude.option;
}
val expr_If : Hax_engine__Ast.Make(F).expr -> expr_If Prelude.option
type expr_App = {
f : Hax_engine__Ast.Make(F).expr;
args : Hax_engine__Ast.Make(F).expr Prelude.list;
generic_args : Hax_engine__Ast.Make(F).generic_value Prelude.list;
bounds_impls : Hax_engine__Ast.Make(F).impl_expr Prelude.list;
trait : (Hax_engine__Ast.Make(F).impl_expr
* Hax_engine__Ast.Make(F).generic_value Prelude.list)
Prelude.option;
}
val expr_App : Hax_engine__Ast.Make(F).expr -> expr_App Prelude.option
type expr_Literal = Ast.literal
val expr_Literal : Hax_engine__Ast.Make(F).expr -> expr_Literal Prelude.option
type expr_Array = Hax_engine__Ast.Make(F).expr Prelude.list
val expr_Array : Hax_engine__Ast.Make(F).expr -> expr_Array Prelude.option
type expr_Construct = {
constructor : Ast.global_ident;
is_record : Prelude.bool;
is_struct : Prelude.bool;
fields : (Ast.global_ident * Hax_engine__Ast.Make(F).expr) Prelude.list;
base : (Hax_engine__Ast.Make(F).expr * F.construct_base) Prelude.option;
}
val expr_Construct :
Hax_engine__Ast.Make(F).expr ->
expr_Construct Prelude.option
type expr_Match = {
scrutinee : Hax_engine__Ast.Make(F).expr;
arms : Hax_engine__Ast.Make(F).arm Prelude.list;
}
val expr_Match : Hax_engine__Ast.Make(F).expr -> expr_Match Prelude.option
type expr_Let = {
monadic : (Hax_engine__Ast.Make(F).supported_monads * F.monadic_binding)
Prelude.option;
lhs : Hax_engine__Ast.Make(F).pat;
rhs : Hax_engine__Ast.Make(F).expr;
body : Hax_engine__Ast.Make(F).expr;
}
val expr_Let : Hax_engine__Ast.Make(F).expr -> expr_Let Prelude.option
type expr_Block = {
e : Hax_engine__Ast.Make(F).expr;
safety_mode : Hax_engine__Ast.Make(F).safety_kind;
witness : F.block;
}
val expr_Block : Hax_engine__Ast.Make(F).expr -> expr_Block Prelude.option
type expr_LocalVar = Ast.local_ident
val expr_LocalVar :
Hax_engine__Ast.Make(F).expr ->
expr_LocalVar Prelude.option
type expr_GlobalVar = Ast.global_ident
val expr_GlobalVar :
Hax_engine__Ast.Make(F).expr ->
expr_GlobalVar Prelude.option
val expr_Ascription :
Hax_engine__Ast.Make(F).expr ->
expr_Ascription Prelude.option
val expr_MacroInvokation :
Hax_engine__Ast.Make(F).expr ->
expr_MacroInvokation Prelude.option
type expr_Assign = {
lhs : Hax_engine__Ast.Make(F).lhs;
e : Hax_engine__Ast.Make(F).expr;
witness : F.mutable_variable;
}
val expr_Assign : Hax_engine__Ast.Make(F).expr -> expr_Assign Prelude.option
type expr_Loop = {
body : Hax_engine__Ast.Make(F).expr;
kind : Hax_engine__Ast.Make(F).loop_kind;
state : Hax_engine__Ast.Make(F).loop_state Prelude.option;
control_flow : (Hax_engine__Ast.Make(F).cf_kind * F.fold_like_loop)
Prelude.option;
label : Prelude.string Prelude.option;
witness : F.loop;
}
val expr_Loop : Hax_engine__Ast.Make(F).expr -> expr_Loop Prelude.option
type expr_Break = {
e : Hax_engine__Ast.Make(F).expr;
acc : (Hax_engine__Ast.Make(F).expr * F.state_passing_loop) Prelude.option;
label : Prelude.string Prelude.option;
witness : F.break * F.loop;
}
val expr_Break : Hax_engine__Ast.Make(F).expr -> expr_Break Prelude.option
val expr_Return : Hax_engine__Ast.Make(F).expr -> expr_Return Prelude.option
type expr_QuestionMark = {
e : Hax_engine__Ast.Make(F).expr;
return_typ : Hax_engine__Ast.Make(F).ty;
witness : F.question_mark;
}
val expr_QuestionMark :
Hax_engine__Ast.Make(F).expr ->
expr_QuestionMark Prelude.option
type expr_Continue = {
acc : (Hax_engine__Ast.Make(F).expr * F.state_passing_loop) Prelude.option;
label : Prelude.string Prelude.option;
witness : F.continue * F.loop;
}
val expr_Continue :
Hax_engine__Ast.Make(F).expr ->
expr_Continue Prelude.option
type expr_Borrow = {
kind : Hax_engine__Ast.Make(F).borrow_kind;
e : Hax_engine__Ast.Make(F).expr;
witness : F.reference;
}
val expr_Borrow : Hax_engine__Ast.Make(F).expr -> expr_Borrow Prelude.option
type expr_AddressOf = {
mut : F.mutable_pointer Ast.mutability;
e : Hax_engine__Ast.Make(F).expr;
witness : F.raw_pointer;
}
val expr_AddressOf :
Hax_engine__Ast.Make(F).expr ->
expr_AddressOf Prelude.option
type expr_Closure = {
params : Hax_engine__Ast.Make(F).pat Prelude.list;
body : Hax_engine__Ast.Make(F).expr;
captures : Hax_engine__Ast.Make(F).expr Prelude.list;
}
val expr_Closure : Hax_engine__Ast.Make(F).expr -> expr_Closure Prelude.option
val expr_EffectAction :
Hax_engine__Ast.Make(F).expr ->
expr_EffectAction Prelude.option
val expr_Quote : Hax_engine__Ast.Make(F).expr -> expr_Quote Prelude.option
type pat_PWild = Prelude.unit
val pat_PWild : Hax_engine__Ast.Make(F).pat -> pat_PWild Prelude.option
type pat_PAscription = {
typ : Hax_engine__Ast.Make(F).ty;
typ_span : Ast.span;
pat : Hax_engine__Ast.Make(F).pat;
}
val pat_PAscription :
Hax_engine__Ast.Make(F).pat ->
pat_PAscription Prelude.option
type pat_PConstruct = {
constructor : Ast.global_ident;
is_record : Prelude.bool;
is_struct : Prelude.bool;
fields : Hax_engine__Ast.Make(F).field_pat Prelude.list;
}
val pat_PConstruct :
Hax_engine__Ast.Make(F).pat ->
pat_PConstruct Prelude.option
val pat_POr : Hax_engine__Ast.Make(F).pat -> pat_POr Prelude.option
val pat_PArray : Hax_engine__Ast.Make(F).pat -> pat_PArray Prelude.option
val pat_PDeref : Hax_engine__Ast.Make(F).pat -> pat_PDeref Prelude.option
val pat_PConstant : Hax_engine__Ast.Make(F).pat -> pat_PConstant Prelude.option
type pat_PBinding = {
mut : F.mutable_variable Ast.mutability;
mode : Hax_engine__Ast.Make(F).binding_mode;
var : Ast.local_ident;
typ : Hax_engine__Ast.Make(F).ty;
subpat : (Hax_engine__Ast.Make(F).pat * F.as_pattern) Prelude.option;
}
val pat_PBinding : Hax_engine__Ast.Make(F).pat -> pat_PBinding Prelude.option
type item_Fn = {
name : Ast.concrete_ident;
generics : Hax_engine__Ast.Make(F).generics;
body : Hax_engine__Ast.Make(F).expr;
params : Hax_engine__Ast.Make(F).param Prelude.list;
safety : Hax_engine__Ast.Make(F).safety_kind;
}
val item_Fn : Hax_engine__Ast.Make(F).item -> item_Fn Prelude.option
type item_TyAlias = {
name : Ast.concrete_ident;
generics : Hax_engine__Ast.Make(F).generics;
ty : Hax_engine__Ast.Make(F).ty;
}
val item_TyAlias : Hax_engine__Ast.Make(F).item -> item_TyAlias Prelude.option
type item_Type = {
name : Ast.concrete_ident;
generics : Hax_engine__Ast.Make(F).generics;
variants : Hax_engine__Ast.Make(F).variant Prelude.list;
is_struct : Prelude.bool;
}
val item_Type : Hax_engine__Ast.Make(F).item -> item_Type Prelude.option
type item_IMacroInvokation = {
macro : Ast.concrete_ident;
argument : Prelude.string;
span : Ast.span;
witness : F.macro;
}
val item_IMacroInvokation :
Hax_engine__Ast.Make(F).item ->
item_IMacroInvokation Prelude.option
type item_Trait = {
name : Ast.concrete_ident;
generics : Hax_engine__Ast.Make(F).generics;
items : Hax_engine__Ast.Make(F).trait_item Prelude.list;
safety : Hax_engine__Ast.Make(F).safety_kind;
}
val item_Trait : Hax_engine__Ast.Make(F).item -> item_Trait Prelude.option
type item_Impl = {
generics : Hax_engine__Ast.Make(F).generics;
self_ty : Hax_engine__Ast.Make(F).ty;
of_trait : Ast.concrete_ident
* Hax_engine__Ast.Make(F).generic_value Prelude.list;
items : Hax_engine__Ast.Make(F).impl_item Prelude.list;
parent_bounds : (Hax_engine__Ast.Make(F).impl_expr
* Hax_engine__Ast.Make(F).impl_ident)
Prelude.list;
safety : Hax_engine__Ast.Make(F).safety_kind;
}
val item_Impl : Hax_engine__Ast.Make(F).item -> item_Impl Prelude.option
val item_Alias : Hax_engine__Ast.Make(F).item -> item_Alias Prelude.option
type item_Use = {
path : Prelude.string Prelude.list;
is_external : Prelude.bool;
rename : Prelude.string Prelude.option;
}
val item_Use : Hax_engine__Ast.Make(F).item -> item_Use Prelude.option
val item_Quote : Hax_engine__Ast.Make(F).item -> item_Quote Prelude.option
type item_HaxError = Prelude.string
val item_HaxError :
Hax_engine__Ast.Make(F).item ->
item_HaxError Prelude.option
type item_NotImplementedYet = Prelude.unit
val item_NotImplementedYet :
Hax_engine__Ast.Make(F).item ->
item_NotImplementedYet Prelude.option
type guard_IfLet = {
lhs : Hax_engine__Ast.Make(F).pat;
rhs : Hax_engine__Ast.Make(F).expr;
witness : F.match_guard;
}
val guard_IfLet : Hax_engine__Ast.Make(F).guard -> guard_IfLet Prelude.option
type trait_item_TIType = Hax_engine__Ast.Make(F).impl_ident Prelude.list
val trait_item_TIType :
Hax_engine__Ast.Make(F).trait_item ->
trait_item_TIType Prelude.option
val trait_item_TIFn :
Hax_engine__Ast.Make(F).trait_item ->
trait_item_TIFn Prelude.option
type trait_item_TIDefault = {
params : Hax_engine__Ast.Make(F).param Prelude.list;
body : Hax_engine__Ast.Make(F).expr;
witness : F.trait_item_default;
}
val trait_item_TIDefault :
Hax_engine__Ast.Make(F).trait_item ->
trait_item_TIDefault Prelude.option
type impl_expr_Self = Prelude.unit
val impl_expr_Self :
Hax_engine__Ast.Make(F).impl_expr ->
impl_expr_Self Prelude.option
val impl_expr_Concrete :
Hax_engine__Ast.Make(F).impl_expr ->
impl_expr_Concrete Prelude.option
val impl_expr_LocalBound :
Hax_engine__Ast.Make(F).impl_expr ->
impl_expr_LocalBound Prelude.option
val impl_expr_Parent :
Hax_engine__Ast.Make(F).impl_expr ->
impl_expr_Parent Prelude.option
type impl_expr_Projection = {
impl : Hax_engine__Ast.Make(F).impl_expr;
item : Ast.concrete_ident;
ident : Hax_engine__Ast.Make(F).impl_ident;
}
val impl_expr_Projection :
Hax_engine__Ast.Make(F).impl_expr ->
impl_expr_Projection Prelude.option
type impl_expr_ImplApp = {
impl : Hax_engine__Ast.Make(F).impl_expr;
args : Hax_engine__Ast.Make(F).impl_expr Prelude.list;
}
val impl_expr_ImplApp :
Hax_engine__Ast.Make(F).impl_expr ->
impl_expr_ImplApp Prelude.option
type impl_expr_Dyn = Prelude.unit
val impl_expr_Dyn :
Hax_engine__Ast.Make(F).impl_expr ->
impl_expr_Dyn Prelude.option
val impl_expr_Builtin :
Hax_engine__Ast.Make(F).impl_expr ->
impl_expr_Builtin Prelude.option