sig
type loc = Ploc.t
type 'a v = 'a
type ctyp =
TyAcc of MLast.loc * MLast.ctyp * MLast.ctyp
| TyAli of MLast.loc * MLast.ctyp * MLast.ctyp
| TyAny of MLast.loc
| TyApp of MLast.loc * MLast.ctyp * MLast.ctyp
| TyArr of MLast.loc * MLast.ctyp * MLast.ctyp
| TyCls of MLast.loc * string list
| TyLab of MLast.loc * string * MLast.ctyp
| TyLid of MLast.loc * string
| TyMan of MLast.loc * MLast.ctyp * MLast.ctyp
| TyObj of MLast.loc * (string * MLast.ctyp) list * bool
| TyOlb of MLast.loc * string * MLast.ctyp
| TyPol of MLast.loc * string list * MLast.ctyp
| TyQuo of MLast.loc * string
| TyRec of MLast.loc * (MLast.loc * string * bool * MLast.ctyp) list
| TySum of MLast.loc * (MLast.loc * string * MLast.ctyp list) list
| TyTup of MLast.loc * MLast.ctyp list
| TyUid of MLast.loc * string
| TyVrn of MLast.loc * MLast.poly_variant list *
string list option option
and poly_variant =
PvTag of string * bool * MLast.ctyp list
| PvInh of MLast.ctyp
type type_var = string * (bool * bool)
type 'a class_infos = {
ciLoc : MLast.loc;
ciVir : bool;
ciPrm : MLast.loc * MLast.type_var list;
ciNam : string;
ciExp : 'a;
}
type patt =
PaAcc of MLast.loc * MLast.patt * MLast.patt
| PaAli of MLast.loc * MLast.patt * MLast.patt
| PaAnt of MLast.loc * MLast.patt
| PaAny of MLast.loc
| PaApp of MLast.loc * MLast.patt * MLast.patt
| PaArr of MLast.loc * MLast.patt list
| PaChr of MLast.loc * string
| PaInt of MLast.loc * string * string
| PaFlo of MLast.loc * string
| PaLab of MLast.loc * string * MLast.patt option
| PaLid of MLast.loc * string
| PaOlb of MLast.loc * string * (MLast.patt * MLast.expr option) option
| PaOrp of MLast.loc * MLast.patt * MLast.patt
| PaRng of MLast.loc * MLast.patt * MLast.patt
| PaRec of MLast.loc * (MLast.patt * MLast.patt) list
| PaStr of MLast.loc * string
| PaTup of MLast.loc * MLast.patt list
| PaTyc of MLast.loc * MLast.patt * MLast.ctyp
| PaTyp of MLast.loc * string list
| PaUid of MLast.loc * string
| PaVrn of MLast.loc * string
and expr =
ExAcc of MLast.loc * MLast.expr * MLast.expr
| ExAnt of MLast.loc * MLast.expr
| ExApp of MLast.loc * MLast.expr * MLast.expr
| ExAre of MLast.loc * MLast.expr * MLast.expr
| ExArr of MLast.loc * MLast.expr list
| ExAsr of MLast.loc * MLast.expr
| ExAss of MLast.loc * MLast.expr * MLast.expr
| ExBae of MLast.loc * MLast.expr * MLast.expr list
| ExChr of MLast.loc * string
| ExCoe of MLast.loc * MLast.expr * MLast.ctyp option * MLast.ctyp
| ExFlo of MLast.loc * string
| ExFor of MLast.loc * string * MLast.expr * MLast.expr * bool *
MLast.expr list
| ExFun of MLast.loc * (MLast.patt * MLast.expr option * MLast.expr) list
| ExIfe of MLast.loc * MLast.expr * MLast.expr * MLast.expr
| ExInt of MLast.loc * string * string
| ExLab of MLast.loc * string * MLast.expr option
| ExLaz of MLast.loc * MLast.expr
| ExLet of MLast.loc * bool * (MLast.patt * MLast.expr) list * MLast.expr
| ExLid of MLast.loc * string
| ExLmd of MLast.loc * string * MLast.module_expr * MLast.expr
| ExMat of MLast.loc * MLast.expr *
(MLast.patt * MLast.expr option * MLast.expr) list
| ExNew of MLast.loc * string list
| ExObj of MLast.loc * MLast.patt option * MLast.class_str_item list
| ExOlb of MLast.loc * string * MLast.expr option
| ExOvr of MLast.loc * (string * MLast.expr) list
| ExRec of MLast.loc * (MLast.patt * MLast.expr) list * MLast.expr option
| ExSeq of MLast.loc * MLast.expr list
| ExSnd of MLast.loc * MLast.expr * string
| ExSte of MLast.loc * MLast.expr * MLast.expr
| ExStr of MLast.loc * string
| ExTry of MLast.loc * MLast.expr *
(MLast.patt * MLast.expr option * MLast.expr) list
| ExTup of MLast.loc * MLast.expr list
| ExTyc of MLast.loc * MLast.expr * MLast.ctyp
| ExUid of MLast.loc * string
| ExVrn of MLast.loc * string
| ExWhi of MLast.loc * MLast.expr * MLast.expr list
and module_type =
MtAcc of MLast.loc * MLast.module_type * MLast.module_type
| MtApp of MLast.loc * MLast.module_type * MLast.module_type
| MtFun of MLast.loc * string * MLast.module_type * MLast.module_type
| MtLid of MLast.loc * string
| MtQuo of MLast.loc * string
| MtSig of MLast.loc * MLast.sig_item list
| MtUid of MLast.loc * string
| MtWit of MLast.loc * MLast.module_type * MLast.with_constr list
and sig_item =
SgCls of MLast.loc * MLast.class_type MLast.class_infos list
| SgClt of MLast.loc * MLast.class_type MLast.class_infos list
| SgDcl of MLast.loc * MLast.sig_item list
| SgDir of MLast.loc * string * MLast.expr option
| SgExc of MLast.loc * string * MLast.ctyp list
| SgExt of MLast.loc * string * MLast.ctyp * string list
| SgInc of MLast.loc * MLast.module_type
| SgMod of MLast.loc * bool * (string * MLast.module_type) list
| SgMty of MLast.loc * string * MLast.module_type
| SgOpn of MLast.loc * string list
| SgTyp of MLast.loc * MLast.type_decl list
| SgUse of MLast.loc * string * (MLast.sig_item * MLast.loc) list
| SgVal of MLast.loc * string * MLast.ctyp
and with_constr =
WcTyp of MLast.loc * string list * MLast.type_var list * bool *
MLast.ctyp
| WcMod of MLast.loc * string list * MLast.module_expr
and module_expr =
MeAcc of MLast.loc * MLast.module_expr * MLast.module_expr
| MeApp of MLast.loc * MLast.module_expr * MLast.module_expr
| MeFun of MLast.loc * string * MLast.module_type * MLast.module_expr
| MeStr of MLast.loc * MLast.str_item list
| MeTyc of MLast.loc * MLast.module_expr * MLast.module_type
| MeUid of MLast.loc * string
and str_item =
StCls of MLast.loc * MLast.class_expr MLast.class_infos list
| StClt of MLast.loc * MLast.class_type MLast.class_infos list
| StDcl of MLast.loc * MLast.str_item list
| StDir of MLast.loc * string * MLast.expr option
| StExc of MLast.loc * string * MLast.ctyp list * string list
| StExp of MLast.loc * MLast.expr
| StExt of MLast.loc * string * MLast.ctyp * string list
| StInc of MLast.loc * MLast.module_expr
| StMod of MLast.loc * bool * (string * MLast.module_expr) list
| StMty of MLast.loc * string * MLast.module_type
| StOpn of MLast.loc * string list
| StTyp of MLast.loc * MLast.type_decl list
| StUse of MLast.loc * string * (MLast.str_item * MLast.loc) list
| StVal of MLast.loc * bool * (MLast.patt * MLast.expr) list
and type_decl = {
tdNam : MLast.loc * string;
tdPrm : MLast.type_var list;
tdPrv : bool;
tdDef : MLast.ctyp;
tdCon : (MLast.ctyp * MLast.ctyp) list;
}
and class_type =
CtCon of MLast.loc * string list * MLast.ctyp list
| CtFun of MLast.loc * MLast.ctyp * MLast.class_type
| CtSig of MLast.loc * MLast.ctyp option * MLast.class_sig_item list
and class_sig_item =
CgCtr of MLast.loc * MLast.ctyp * MLast.ctyp
| CgDcl of MLast.loc * MLast.class_sig_item list
| CgInh of MLast.loc * MLast.class_type
| CgMth of MLast.loc * string * bool * MLast.ctyp
| CgVal of MLast.loc * string * bool * MLast.ctyp
| CgVir of MLast.loc * string * bool * MLast.ctyp
and class_expr =
CeApp of MLast.loc * MLast.class_expr * MLast.expr
| CeCon of MLast.loc * string list * MLast.ctyp list
| CeFun of MLast.loc * MLast.patt * MLast.class_expr
| CeLet of MLast.loc * bool * (MLast.patt * MLast.expr) list *
MLast.class_expr
| CeStr of MLast.loc * MLast.patt option * MLast.class_str_item list
| CeTyc of MLast.loc * MLast.class_expr * MLast.class_type
and class_str_item =
CrCtr of MLast.loc * MLast.ctyp * MLast.ctyp
| CrDcl of MLast.loc * MLast.class_str_item list
| CrInh of MLast.loc * MLast.class_expr * string option
| CrIni of MLast.loc * MLast.expr
| CrMth of MLast.loc * string * bool * MLast.expr * MLast.ctyp option
| CrVal of MLast.loc * string * bool * MLast.expr
| CrVir of MLast.loc * string * bool * MLast.ctyp
external loc_of_ctyp : MLast.ctyp -> MLast.loc = "%field0"
external loc_of_patt : MLast.patt -> MLast.loc = "%field0"
external loc_of_expr : MLast.expr -> MLast.loc = "%field0"
external loc_of_module_type : MLast.module_type -> MLast.loc = "%field0"
external loc_of_module_expr : MLast.module_expr -> MLast.loc = "%field0"
external loc_of_sig_item : MLast.sig_item -> MLast.loc = "%field0"
external loc_of_str_item : MLast.str_item -> MLast.loc = "%field0"
external loc_of_class_type : MLast.class_type -> MLast.loc = "%field0"
external loc_of_class_sig_item : MLast.class_sig_item -> MLast.loc
= "%field0"
external loc_of_class_expr : MLast.class_expr -> MLast.loc = "%field0"
external loc_of_class_str_item : MLast.class_str_item -> MLast.loc
= "%field0"
end