Commit 6ee91142 authored by Andrei Paskevich's avatar Andrei Paskevich

Dexpr: create recursive definitions

parent 60d4ce94
This diff is collapsed.
...@@ -91,7 +91,7 @@ and dexpr_node = ...@@ -91,7 +91,7 @@ and dexpr_node =
| DEpv of pvsymbol | DEpv of pvsymbol
| DErs of rsymbol | DErs of rsymbol
| DEconst of Number.constant | DEconst of Number.constant
| DEapp of dexpr * dexpr list | DEapp of dexpr * dexpr
| DEfun of dbinder list * dspec later * dexpr | DEfun of dbinder list * dspec later * dexpr
| DEany of dbinder list * dspec later * dity | DEany of dbinder list * dspec later * dity
| DElet of dlet_defn * dexpr | DElet of dlet_defn * dexpr
...@@ -101,7 +101,7 @@ and dexpr_node = ...@@ -101,7 +101,7 @@ and dexpr_node =
| DEif of dexpr * dexpr * dexpr | DEif of dexpr * dexpr * dexpr
| DEcase of dexpr * (dpattern * dexpr) list | DEcase of dexpr * (dpattern * dexpr) list
| DEassign of (dexpr * rsymbol * dexpr) list | DEassign of (dexpr * rsymbol * dexpr) list
| DEwhile of dexpr * (dinvariant * variant list) later * dexpr | DEwhile of dexpr * dinvariant later * variant list later * dexpr
| DEfor of preid * dexpr * for_direction * dexpr * dinvariant later * dexpr | DEfor of preid * dexpr * for_direction * dexpr * dinvariant later * dexpr
| DEtry of dexpr * (xsymbol * dpattern * dexpr) list | DEtry of dexpr * (xsymbol * dpattern * dexpr) list
| DEraise of xsymbol * dexpr | DEraise of xsymbol * dexpr
...@@ -121,7 +121,7 @@ and dlet_defn = preid * ghost * rs_kind * dexpr ...@@ -121,7 +121,7 @@ and dlet_defn = preid * ghost * rs_kind * dexpr
and drec_defn = private { fds : dfun_defn list } and drec_defn = private { fds : dfun_defn list }
and dfun_defn = preid * ghost * rs_kind * and dfun_defn = preid * ghost * rs_kind *
dbinder list * (dspec * variant list) later * dexpr dbinder list * dspec later * variant list later * dexpr
type dval_decl = preid * ghost * rs_kind * type dval_decl = preid * ghost * rs_kind *
dbinder list * dspec later * dity dbinder list * dspec later * dity
...@@ -150,8 +150,8 @@ val dpattern : ?loc:Loc.position -> dpattern_node -> dpattern ...@@ -150,8 +150,8 @@ val dpattern : ?loc:Loc.position -> dpattern_node -> dpattern
val dexpr : ?loc:Loc.position -> dexpr_node -> dexpr val dexpr : ?loc:Loc.position -> dexpr_node -> dexpr
type pre_fun_defn = preid * ghost * rs_kind * type pre_fun_defn = preid * ghost * rs_kind * dbinder list *
dbinder list * dity * (denv -> (dspec * variant list) later * dexpr) dity * (denv -> dspec later * variant list later * dexpr)
val drec_defn : denv -> pre_fun_defn list -> denv * drec_defn val drec_defn : denv -> pre_fun_defn list -> denv * drec_defn
...@@ -159,14 +159,6 @@ val drec_defn : denv -> pre_fun_defn list -> denv * drec_defn ...@@ -159,14 +159,6 @@ val drec_defn : denv -> pre_fun_defn list -> denv * drec_defn
val expr : keep_loc:bool -> dexpr -> expr val expr : keep_loc:bool -> dexpr -> expr
val let_defn : keep_loc:bool -> dlet_defn -> let_defn
(*
val fun_defn : keep_loc:bool ->
Decl.known_map -> Mlw_decl.known_map -> dfun_defn -> fun_defn
val rec_defn : keep_loc:bool ->
Decl.known_map -> Mlw_decl.known_map -> drec_defn -> fun_defn list
*)
val val_decl : keep_loc:bool -> dval_decl -> val_decl val val_decl : keep_loc:bool -> dval_decl -> val_decl
val let_defn : keep_loc:bool -> dlet_defn -> let_defn
val rec_defn : keep_loc:bool -> drec_defn -> rec_defn
...@@ -1177,7 +1177,7 @@ let () = Exn_printer.register (fun fmt e -> match e with ...@@ -1177,7 +1177,7 @@ let () = Exn_printer.register (fun fmt e -> match e with
*) *)
| TypeMismatch (t1,t2,s) -> | TypeMismatch (t1,t2,s) ->
fprintf fmt "Type mismatch between %a and %a" fprintf fmt "Type mismatch between %a and %a"
(print_ity_node s 0) t1 print_ity t2 (print_ity_node s 0) t1 print_ity_full t2
| AssignPrivate r -> | AssignPrivate r ->
fprintf fmt "This assignment modifies a value of private type %a" fprintf fmt "This assignment modifies a value of private type %a"
print_reg r print_reg r
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment