summaryrefslogtreecommitdiff
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$) =