blob: 2ececde9e922198fb2c276d63b1cbc62c7717078 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
diff --git a/ext/pa_def.ml b/ext/pa_def.ml
index 812240d..871bfe2 100644
--- a/ext/pa_def.ml
+++ b/ext/pa_def.ml
@@ -33,7 +33,7 @@ value subst mloc env =
loop where rec loop =
fun
[ <:expr< let $opt:rf$ $list:pel$ in $e$ >> ->
- let pel = List.map (fun (p, e) -> (p, loop e)) pel in
+ let pel = List.map (fun (p, e, al) -> (p, loop e, al)) pel in
<:expr< let $opt:rf$ $list:pel$ in $loop e$ >>
| <:expr< if $e1$ then $e2$ else $e3$ >> ->
<:expr< if $loop e1$ then $loop e2$ else $loop e3$ >>
diff --git a/ext/pa_local.ml b/ext/pa_local.ml
index b65704d..3ef9cd1 100644
--- a/ext/pa_local.ml
+++ b/ext/pa_local.ml
@@ -23,13 +23,15 @@ value expr_of_patt p =
| _ -> Stdpp.raise_with_loc loc (Stream.Error "identifier expected") ]
;
+value fst3 (a,b,c) = a ;
+
EXTEND
str_item:
[ [ "local"; rf = [ "rec" -> True | -> False ];
lb = LIST1 let_binding SEP "and"; "in"; "value";
rf1 = [ "rec" -> True | -> False ];
lb1 = LIST1 let_binding SEP "and" ->
- let pl = List.map fst lb1 in
+ let pl = List.map fst3 lb1 in
let el = List.map expr_of_patt pl in
<:str_item<
value ($list:pl$) =
|