cvsextras be41c84
This patch (against OCaml 3.07) fixes the following issues:
cvsextras be41c84
cvsextras be41c84
- Camlp4: parsing of labeled function arguments.
cvsextras be41c84
- Emacs interface: portability issues between versions of GnuEmacs and XEmacs.
cvsextras be41c84
- Incorrect code generated for certain recursive module definitions.
cvsextras be41c84
- Name pollution issue on Mac OS X 10.3.
cvsextras be41c84
cvsextras be41c84
How to apply this patch:
cvsextras be41c84
cvsextras be41c84
* Go to the ocaml-3.07 source directory.
cvsextras be41c84
cvsextras be41c84
* Do "make clean".
cvsextras be41c84
cvsextras be41c84
* If you already applied the earlier patch ocaml-3.07-patch1.diffs,
cvsextras be41c84
  un-apply it first by running patch -p1 -R < /path/to/ocaml-3.07-patch1.diffs
cvsextras be41c84
cvsextras be41c84
* Run patch -p1 < /path/to/ocaml-3.07-patch2.diffs (this patch)
cvsextras be41c84
cvsextras be41c84
* Compile and install as usual (see file INSTALL).
cvsextras be41c84
cvsextras be41c84
--------------
cvsextras be41c84
cvsextras be41c84
Index: csl/bytecomp/translmod.ml
cvsextras be41c84
diff -u csl/bytecomp/translmod.ml:1.44 csl/bytecomp/translmod.ml:1.45
cvsextras be41c84
--- csl/bytecomp/translmod.ml:1.44	Mon Jul  7 15:42:49 2003
cvsextras be41c84
+++ csl/bytecomp/translmod.ml	Fri Oct  3 16:36:00 2003
cvsextras be41c84
@@ -10,7 +10,7 @@
cvsextras be41c84
 (*                                                                     *)
cvsextras be41c84
 (***********************************************************************)
cvsextras be41c84
 
cvsextras be41c84
-(* $Id: translmod.ml,v 1.44 2003/07/07 13:42:49 xleroy Exp $ *)
cvsextras be41c84
+(* $Id: translmod.ml,v 1.45 2003/10/03 14:36:00 xleroy Exp $ *)
cvsextras be41c84
 
cvsextras be41c84
 (* Translation from typed abstract syntax to lambda terms,
cvsextras be41c84
    for the module language *)
cvsextras be41c84
@@ -310,11 +310,12 @@
cvsextras be41c84
            transl_module Tcoerce_none (field_path rootpath id) modl,
cvsextras be41c84
            transl_structure (id :: fields) cc rootpath rem)
cvsextras be41c84
   | Tstr_recmodule bindings :: rem ->
cvsextras be41c84
+      let ext_fields = List.rev_append (List.map fst bindings) fields in
cvsextras be41c84
       compile_recmodule
cvsextras be41c84
         (fun id modl ->
cvsextras be41c84
           transl_module Tcoerce_none (field_path rootpath id) modl)
cvsextras be41c84
         bindings
cvsextras be41c84
-        (transl_structure (map_end fst bindings fields) cc rootpath rem)
cvsextras be41c84
+        (transl_structure ext_fields cc rootpath rem)
cvsextras be41c84
   | Tstr_modtype(id, decl) :: rem ->
cvsextras be41c84
       transl_structure fields cc rootpath rem
cvsextras be41c84
   | Tstr_open path :: rem ->
cvsextras be41c84
Index: csl/camlp4/camlp4/ast2pt.ml
cvsextras be41c84
diff -u csl/camlp4/camlp4/ast2pt.ml:1.25 csl/camlp4/camlp4/ast2pt.ml:1.26
cvsextras be41c84
--- csl/camlp4/camlp4/ast2pt.ml:1.25	Wed Jul 16 20:59:12 2003
cvsextras be41c84
+++ csl/camlp4/camlp4/ast2pt.ml	Tue Sep 30 16:39:26 2003
cvsextras be41c84
@@ -10,7 +10,7 @@
cvsextras be41c84
 (*                                                                     *)
cvsextras be41c84
 (***********************************************************************)
cvsextras be41c84
 
cvsextras be41c84
-(* $Id: ast2pt.ml,v 1.25 2003/07/16 18:59:12 mauny Exp $ *)
cvsextras be41c84
+(* $Id: ast2pt.ml,v 1.26 2003/09/30 14:39:26 mauny Exp $ *)
cvsextras be41c84
 
cvsextras be41c84
 open Stdpp;
cvsextras be41c84
 open MLast;
cvsextras be41c84
@@ -177,10 +177,10 @@
cvsextras be41c84
   | TyObj loc fl v -> mktyp loc (Ptyp_object (meth_list loc fl v))
cvsextras be41c84
   | TyCls loc id ->
cvsextras be41c84
       mktyp loc (Ptyp_class (long_id_of_string_list loc id) [] [])
cvsextras be41c84
-  | TyLab loc _ _ -> error loc "labeled type not allowed here"
cvsextras be41c84
+  | TyLab loc _ _ -> error loc "labelled type not allowed here"
cvsextras be41c84
   | TyLid loc s -> mktyp loc (Ptyp_constr (lident s) [])
cvsextras be41c84
-  | TyMan loc _ _ -> error loc "type manifest not allowed here"
cvsextras be41c84
-  | TyOlb loc lab _ -> error loc "labeled type not allowed here"
cvsextras be41c84
+  | TyMan loc _ _ -> error loc "manifest type not allowed here"
cvsextras be41c84
+  | TyOlb loc lab _ -> error loc "labelled type not allowed here"
cvsextras be41c84
   | TyPol loc pl t -> mktyp loc (Ptyp_poly pl (ctyp t))
cvsextras be41c84
   | TyQuo loc s -> mktyp loc (Ptyp_var s)
cvsextras be41c84
   | TyRec loc _ _ -> error loc "record type not allowed here"
cvsextras be41c84
Index: csl/camlp4/etc/pa_o.ml
cvsextras be41c84
diff -u csl/camlp4/etc/pa_o.ml:1.52 csl/camlp4/etc/pa_o.ml:1.54
cvsextras be41c84
--- csl/camlp4/etc/pa_o.ml:1.52	Thu Sep 25 14:05:05 2003
cvsextras be41c84
+++ csl/camlp4/etc/pa_o.ml	Tue Sep 30 16:39:38 2003
cvsextras be41c84
@@ -10,7 +10,7 @@
cvsextras be41c84
 (*                                                                     *)
cvsextras be41c84
 (***********************************************************************)
cvsextras be41c84
 
cvsextras be41c84
-(* $Id: pa_o.ml,v 1.52 2003/09/25 12:05:05 mauny Exp $ *)
cvsextras be41c84
+(* $Id: pa_o.ml,v 1.54 2003/09/30 14:39:38 mauny Exp $ *)
cvsextras be41c84
 
cvsextras be41c84
 open Stdpp;
cvsextras be41c84
 open Pcaml;
cvsextras be41c84
@@ -1148,16 +1148,16 @@
cvsextras be41c84
       | i = LIDENT -> [i] ] ]
cvsextras be41c84
   ;
cvsextras be41c84
   (* Labels *)
cvsextras be41c84
-  ctyp: AFTER "arrow"
cvsextras be41c84
-    [ NONA
cvsextras be41c84
+  ctyp: LEVEL "arrow"
cvsextras be41c84
+    [ RIGHTA
cvsextras be41c84
       [ i = lident_colon; t1 = ctyp LEVEL "star"; "->"; t2 = SELF ->
cvsextras be41c84
-          <:ctyp< ~ $i$ : $t1$ -> $t2$ >>
cvsextras be41c84
+          <:ctyp< ( ~ $i$ : $t1$ ) -> $t2$ >>
cvsextras be41c84
       | i = OPTLABEL; t1 = ctyp LEVEL "star"; "->"; t2 = SELF ->
cvsextras be41c84
-          <:ctyp< ? $i$ : $t1$ -> $t2$ >>
cvsextras be41c84
+          <:ctyp< ( ? $i$ : $t1$ ) -> $t2$ >>
cvsextras be41c84
       | i = QUESTIONIDENT; ":"; t1 = ctyp LEVEL "star"; "->"; t2 = SELF ->
cvsextras be41c84
-          <:ctyp< ? $i$ : $t1$ -> $t2$ >>
cvsextras be41c84
+          <:ctyp< ( ? $i$ : $t1$ ) -> $t2$ >>
cvsextras be41c84
       | "?"; i=lident_colon;t1 = ctyp LEVEL "star"; "->"; t2 = SELF ->
cvsextras be41c84
-          <:ctyp< ? $i$ : $t1$ -> $t2$ >> ] ]
cvsextras be41c84
+          <:ctyp< ( ? $i$ : $t1$ ) -> $t2$ >> ] ]
cvsextras be41c84
   ;
cvsextras be41c84
   ctyp: LEVEL "simple"
cvsextras be41c84
     [ [ "["; OPT "|"; rfl = LIST1 row_field SEP "|"; "]" ->
cvsextras be41c84
Index: csl/camlp4/meta/pa_r.ml
cvsextras be41c84
diff -u csl/camlp4/meta/pa_r.ml:1.53 csl/camlp4/meta/pa_r.ml:1.55
cvsextras be41c84
--- csl/camlp4/meta/pa_r.ml:1.53	Thu Sep 25 14:05:06 2003
cvsextras be41c84
+++ csl/camlp4/meta/pa_r.ml	Thu Oct  2 14:33:43 2003
cvsextras be41c84
@@ -10,7 +10,7 @@
cvsextras be41c84
 (*                                                                     *)
cvsextras be41c84
 (***********************************************************************)
cvsextras be41c84
 
cvsextras be41c84
-(* $Id: pa_r.ml,v 1.53 2003/09/25 12:05:06 mauny Exp $ *)
cvsextras be41c84
+(* $Id: pa_r.ml,v 1.55 2003/10/02 12:33:43 mauny Exp $ *)
cvsextras be41c84
 
cvsextras be41c84
 open Stdpp;
cvsextras be41c84
 open Pcaml;
cvsextras be41c84
@@ -542,6 +542,11 @@
cvsextras be41c84
           <:ctyp< ! $list:pl$ . $t$ >> ]
cvsextras be41c84
     | "arrow" RIGHTA
cvsextras be41c84
       [ t1 = SELF; "->"; t2 = SELF -> <:ctyp< $t1$ -> $t2$ >> ]
cvsextras be41c84
+    | "label" NONA
cvsextras be41c84
+      [ i = TILDEIDENT; ":"; t = SELF -> <:ctyp< ~ $i$ : $t$ >>
cvsextras be41c84
+      | i = LABEL; t =  SELF  -> <:ctyp< ~ $i$ : $t$ >>
cvsextras be41c84
+      | i = QUESTIONIDENT; ":"; t = SELF -> <:ctyp< ? $i$ : $t$ >>
cvsextras be41c84
+      | i = OPTLABEL; t = SELF -> <:ctyp< ? $i$ : $t$ >> ]
cvsextras be41c84
     | LEFTA
cvsextras be41c84
       [ t1 = SELF; t2 = SELF -> <:ctyp< $t1$ $t2$ >> ]
cvsextras be41c84
     | LEFTA
cvsextras be41c84
@@ -746,14 +751,6 @@
cvsextras be41c84
   class_longident:
cvsextras be41c84
     [ [ m = UIDENT; "."; l = SELF -> [m :: l]
cvsextras be41c84
       | i = LIDENT -> [i] ] ]
cvsextras be41c84
-  ;
cvsextras be41c84
-  (* Labels *)
cvsextras be41c84
-  ctyp: AFTER "arrow"
cvsextras be41c84
-    [ NONA
cvsextras be41c84
-      [ i = TILDEIDENT; ":"; t = SELF -> <:ctyp< ~ $i$ : $t$ >>
cvsextras be41c84
-      | i = LABEL; t = SELF -> <:ctyp< ~ $i$ : $t$ >>
cvsextras be41c84
-      | i = QUESTIONIDENT; ":"; t = SELF -> <:ctyp< ? $i$ : $t$ >> 
cvsextras be41c84
-      | i = OPTLABEL; t = SELF -> <:ctyp< ? $i$ : $t$ >> ] ]
cvsextras be41c84
   ;
cvsextras be41c84
   ctyp: LEVEL "simple"
cvsextras be41c84
     [ [ "["; "="; rfl = row_field_list; "]" ->
cvsextras be41c84
Index: csl/camlp4/meta/q_MLast.ml
cvsextras be41c84
diff -u csl/camlp4/meta/q_MLast.ml:1.51 csl/camlp4/meta/q_MLast.ml:1.53
cvsextras be41c84
--- csl/camlp4/meta/q_MLast.ml:1.51	Wed Jul 16 14:50:08 2003
cvsextras be41c84
+++ csl/camlp4/meta/q_MLast.ml	Thu Oct  2 14:33:43 2003
cvsextras be41c84
@@ -10,7 +10,7 @@
cvsextras be41c84
 (*                                                                     *)
cvsextras be41c84
 (***********************************************************************)
cvsextras be41c84
 
cvsextras be41c84
-(* $Id: q_MLast.ml,v 1.51 2003/07/16 12:50:08 mauny Exp $ *)
cvsextras be41c84
+(* $Id: q_MLast.ml,v 1.53 2003/10/02 12:33:43 mauny Exp $ *)
cvsextras be41c84
 
cvsextras be41c84
 value gram = Grammar.gcreate (Plexer.gmake ());
cvsextras be41c84
 
cvsextras be41c84
@@ -127,7 +127,9 @@
cvsextras be41c84
 value a_STRING = Grammar.Entry.create gram "a_STRING";
cvsextras be41c84
 value a_CHAR = Grammar.Entry.create gram "a_CHAR";
cvsextras be41c84
 value a_TILDEIDENT = Grammar.Entry.create gram "a_TILDEIDENT";
cvsextras be41c84
+value a_LABEL = Grammar.Entry.create gram "a_LABEL";
cvsextras be41c84
 value a_QUESTIONIDENT = Grammar.Entry.create gram "a_QUESTIONIDENT";
cvsextras be41c84
+value a_OPTLABEL = Grammar.Entry.create gram "a_OPTLABEL";
cvsextras be41c84
 
cvsextras be41c84
 value o2b =
cvsextras be41c84
   fun
cvsextras be41c84
@@ -793,6 +795,13 @@
cvsextras be41c84
           Qast.Node "TyPol" [Qast.Loc; pl; t] ]
cvsextras be41c84
     | "arrow" RIGHTA
cvsextras be41c84
       [ t1 = SELF; "->"; t2 = SELF -> Qast.Node "TyArr" [Qast.Loc; t1; t2] ]
cvsextras be41c84
+    | "label" NONA
cvsextras be41c84
+      [ i = a_TILDEIDENT; ":"; t = SELF -> Qast.Node "TyLab" [Qast.Loc; i; t]
cvsextras be41c84
+      | i = a_LABEL; t = SELF -> Qast.Node "TyLab" [Qast.Loc; i; t]
cvsextras be41c84
+      | i = a_QUESTIONIDENT; ":"; t = SELF ->
cvsextras be41c84
+          Qast.Node "TyOlb" [Qast.Loc; i; t]
cvsextras be41c84
+      | i = a_OPTLABEL; t = SELF ->
cvsextras be41c84
+          Qast.Node "TyOlb" [Qast.Loc; i; t] ]
cvsextras be41c84
     | LEFTA
cvsextras be41c84
       [ t1 = SELF; t2 = SELF -> Qast.Node "TyApp" [Qast.Loc; t1; t2] ]
cvsextras be41c84
     | LEFTA
cvsextras be41c84
@@ -1006,13 +1015,6 @@
cvsextras be41c84
     [ [ m = a_UIDENT; "."; l = SELF -> Qast.Cons m l
cvsextras be41c84
       | i = a_LIDENT -> Qast.List [i] ] ]
cvsextras be41c84
   ;
cvsextras be41c84
-  (* Labels *)
cvsextras be41c84
-  ctyp: AFTER "arrow"
cvsextras be41c84
-    [ NONA
cvsextras be41c84
-      [ i = a_TILDEIDENT; ":"; t = SELF -> Qast.Node "TyLab" [Qast.Loc; i; t]
cvsextras be41c84
-      | i = a_QUESTIONIDENT; ":"; t = SELF ->
cvsextras be41c84
-          Qast.Node "TyOlb" [Qast.Loc; i; t] ] ]
cvsextras be41c84
-  ;
cvsextras be41c84
   ctyp: LEVEL "simple"
cvsextras be41c84
     [ [ "["; "="; rfl = row_field_list; "]" ->
cvsextras be41c84
           Qast.Node "TyVrn" [Qast.Loc; rfl; Qast.Option None]
cvsextras be41c84
@@ -1044,11 +1046,16 @@
cvsextras be41c84
       | "#"; sl = mod_ident -> Qast.Node "PaTyp" [Qast.Loc; sl]
cvsextras be41c84
       | i = a_TILDEIDENT; ":"; p = SELF ->
cvsextras be41c84
           Qast.Node "PaLab" [Qast.Loc; i; Qast.Option (Some p)]
cvsextras be41c84
+      | i = a_LABEL; p = SELF ->
cvsextras be41c84
+          Qast.Node "PaLab" [Qast.Loc; i; Qast.Option (Some p)]
cvsextras be41c84
       | i = a_TILDEIDENT -> Qast.Node "PaLab" [Qast.Loc; i; Qast.Option None]
cvsextras be41c84
       | i = a_QUESTIONIDENT; ":"; "("; p = patt_tcon; eo = SOPT eq_expr;
cvsextras be41c84
         ")" ->
cvsextras be41c84
           Qast.Node "PaOlb"
cvsextras be41c84
             [Qast.Loc; i; Qast.Option (Some (Qast.Tuple [p; eo]))]
cvsextras be41c84
+      | i = a_OPTLABEL; "("; p = patt_tcon; eo = SOPT eq_expr; ")" ->
cvsextras be41c84
+          Qast.Node "PaOlb"
cvsextras be41c84
+            [Qast.Loc; i; Qast.Option (Some (Qast.Tuple [p; eo]))]
cvsextras be41c84
       | i = a_QUESTIONIDENT ->
cvsextras be41c84
           Qast.Node "PaOlb" [Qast.Loc; i; Qast.Option None]
cvsextras be41c84
       | "?"; "("; p = patt_tcon; eo = SOPT eq_expr; ")" ->
cvsextras be41c84
@@ -1063,11 +1070,16 @@
cvsextras be41c84
   ipatt:
cvsextras be41c84
     [ [ i = a_TILDEIDENT; ":"; p = SELF ->
cvsextras be41c84
           Qast.Node "PaLab" [Qast.Loc; i; Qast.Option (Some p)]
cvsextras be41c84
+      | i = a_LABEL; p = SELF ->
cvsextras be41c84
+          Qast.Node "PaLab" [Qast.Loc; i; Qast.Option (Some p)]
cvsextras be41c84
       | i = a_TILDEIDENT -> Qast.Node "PaLab" [Qast.Loc; i; Qast.Option None]
cvsextras be41c84
       | i = a_QUESTIONIDENT; ":"; "("; p = ipatt_tcon; eo = SOPT eq_expr;
cvsextras be41c84
         ")" ->
cvsextras be41c84
           Qast.Node "PaOlb"
cvsextras be41c84
             [Qast.Loc; i; Qast.Option (Some (Qast.Tuple [p; eo]))]
cvsextras be41c84
+      | i = a_OPTLABEL; "("; p = ipatt_tcon; eo = SOPT eq_expr; ")" ->
cvsextras be41c84
+          Qast.Node "PaOlb"
cvsextras be41c84
+            [Qast.Loc; i; Qast.Option (Some (Qast.Tuple [p; eo]))]
cvsextras be41c84
       | i = a_QUESTIONIDENT ->
cvsextras be41c84
           Qast.Node "PaOlb" [Qast.Loc; i; Qast.Option None]
cvsextras be41c84
       | "?"; "("; p = ipatt_tcon; eo = SOPT eq_expr; ")" ->
cvsextras be41c84
@@ -1086,9 +1098,13 @@
cvsextras be41c84
     [ "label" NONA
cvsextras be41c84
       [ i = a_TILDEIDENT; ":"; e = SELF ->
cvsextras be41c84
           Qast.Node "ExLab" [Qast.Loc; i; Qast.Option (Some e)]
cvsextras be41c84
+      | i = a_LABEL; e = SELF ->
cvsextras be41c84
+          Qast.Node "ExLab" [Qast.Loc; i; Qast.Option (Some e)]
cvsextras be41c84
       | i = a_TILDEIDENT -> Qast.Node "ExLab" [Qast.Loc; i; Qast.Option None]
cvsextras be41c84
       | i = a_QUESTIONIDENT; ":"; e = SELF ->
cvsextras be41c84
           Qast.Node "ExOlb" [Qast.Loc; i; Qast.Option (Some e)]
cvsextras be41c84
+      | i = a_OPTLABEL; e = SELF ->
cvsextras be41c84
+          Qast.Node "ExOlb" [Qast.Loc; i; Qast.Option (Some e)]
cvsextras be41c84
       | i = a_QUESTIONIDENT ->
cvsextras be41c84
           Qast.Node "ExOlb" [Qast.Loc; i; Qast.Option None] ] ]
cvsextras be41c84
   ;
cvsextras be41c84
@@ -1335,9 +1351,15 @@
cvsextras be41c84
     [ [ "~"; a = ANTIQUOT -> antiquot "" loc a
cvsextras be41c84
       | s = TILDEIDENT -> Qast.Str s ] ]
cvsextras be41c84
   ;
cvsextras be41c84
+  a_LABEL:
cvsextras be41c84
+    [ [ s = LABEL -> Qast.Str s ] ]
cvsextras be41c84
+  ;
cvsextras be41c84
   a_QUESTIONIDENT:
cvsextras be41c84
     [ [ "?"; a = ANTIQUOT -> antiquot "" loc a
cvsextras be41c84
       | s = QUESTIONIDENT -> Qast.Str s ] ]
cvsextras be41c84
+  ;
cvsextras be41c84
+  a_OPTLABEL:
cvsextras be41c84
+    [ [ s = OPTLABEL -> Qast.Str s ] ]
cvsextras be41c84
   ;
cvsextras be41c84
 END;
cvsextras be41c84
 
cvsextras be41c84
Index: csl/camlp4/ocaml_src/camlp4/ast2pt.ml
cvsextras be41c84
diff -u csl/camlp4/ocaml_src/camlp4/ast2pt.ml:1.24 csl/camlp4/ocaml_src/camlp4/ast2pt.ml:1.25
cvsextras be41c84
--- csl/camlp4/ocaml_src/camlp4/ast2pt.ml:1.24	Thu Jul 24 00:26:18 2003
cvsextras be41c84
+++ csl/camlp4/ocaml_src/camlp4/ast2pt.ml	Tue Sep 30 16:39:38 2003
cvsextras be41c84
@@ -169,10 +169,10 @@
cvsextras be41c84
   | TyObj (loc, fl, v) -> mktyp loc (Ptyp_object (meth_list loc fl v))
cvsextras be41c84
   | TyCls (loc, id) ->
cvsextras be41c84
       mktyp loc (Ptyp_class (long_id_of_string_list loc id, [], []))
cvsextras be41c84
-  | TyLab (loc, _, _) -> error loc "labeled type not allowed here"
cvsextras be41c84
+  | TyLab (loc, _, _) -> error loc "labelled type not allowed here"
cvsextras be41c84
   | TyLid (loc, s) -> mktyp loc (Ptyp_constr (lident s, []))
cvsextras be41c84
-  | TyMan (loc, _, _) -> error loc "type manifest not allowed here"
cvsextras be41c84
-  | TyOlb (loc, lab, _) -> error loc "labeled type not allowed here"
cvsextras be41c84
+  | TyMan (loc, _, _) -> error loc "manifest type not allowed here"
cvsextras be41c84
+  | TyOlb (loc, lab, _) -> error loc "labelled type not allowed here"
cvsextras be41c84
   | TyPol (loc, pl, t) -> mktyp loc (Ptyp_poly (pl, ctyp t))
cvsextras be41c84
   | TyQuo (loc, s) -> mktyp loc (Ptyp_var s)
cvsextras be41c84
   | TyRec (loc, _, _) -> error loc "record type not allowed here"
cvsextras be41c84
Index: csl/camlp4/ocaml_src/meta/pa_r.ml
cvsextras be41c84
diff -u csl/camlp4/ocaml_src/meta/pa_r.ml:1.48 csl/camlp4/ocaml_src/meta/pa_r.ml:1.50
cvsextras be41c84
--- csl/camlp4/ocaml_src/meta/pa_r.ml:1.48	Thu Sep 25 14:05:07 2003
cvsextras be41c84
+++ csl/camlp4/ocaml_src/meta/pa_r.ml	Thu Oct  2 14:33:44 2003
cvsextras be41c84
@@ -1540,6 +1540,25 @@
cvsextras be41c84
       Gramext.action
cvsextras be41c84
         (fun (t2 : 'ctyp) _ (t1 : 'ctyp) (loc : int * int) ->
cvsextras be41c84
            (MLast.TyArr (loc, t1, t2) : 'ctyp))];
cvsextras be41c84
+     Some "label", Some Gramext.NonA,
cvsextras be41c84
+     [[Gramext.Stoken ("OPTLABEL", ""); Gramext.Sself],
cvsextras be41c84
+      Gramext.action
cvsextras be41c84
+        (fun (t : 'ctyp) (i : string) (loc : int * int) ->
cvsextras be41c84
+           (MLast.TyOlb (loc, i, t) : 'ctyp));
cvsextras be41c84
+      [Gramext.Stoken ("QUESTIONIDENT", ""); Gramext.Stoken ("", ":");
cvsextras be41c84
+       Gramext.Sself],
cvsextras be41c84
+      Gramext.action
cvsextras be41c84
+        (fun (t : 'ctyp) _ (i : string) (loc : int * int) ->
cvsextras be41c84
+           (MLast.TyOlb (loc, i, t) : 'ctyp));
cvsextras be41c84
+      [Gramext.Stoken ("LABEL", ""); Gramext.Sself],
cvsextras be41c84
+      Gramext.action
cvsextras be41c84
+        (fun (t : 'ctyp) (i : string) (loc : int * int) ->
cvsextras be41c84
+           (MLast.TyLab (loc, i, t) : 'ctyp));
cvsextras be41c84
+      [Gramext.Stoken ("TILDEIDENT", ""); Gramext.Stoken ("", ":");
cvsextras be41c84
+       Gramext.Sself],
cvsextras be41c84
+      Gramext.action
cvsextras be41c84
+        (fun (t : 'ctyp) _ (i : string) (loc : int * int) ->
cvsextras be41c84
+           (MLast.TyLab (loc, i, t) : 'ctyp))];
cvsextras be41c84
      None, Some Gramext.LeftA,
cvsextras be41c84
      [[Gramext.Sself; Gramext.Sself],
cvsextras be41c84
       Gramext.action
cvsextras be41c84
@@ -2240,27 +2259,6 @@
cvsextras be41c84
       Gramext.action
cvsextras be41c84
         (fun (l : 'class_longident) _ (m : string) (loc : int * int) ->
cvsextras be41c84
            (m :: l : 'class_longident))]];
cvsextras be41c84
-    Grammar.Entry.obj (ctyp : 'ctyp Grammar.Entry.e),
cvsextras be41c84
-    Some (Gramext.After "arrow"),
cvsextras be41c84
-    [None, Some Gramext.NonA,
cvsextras be41c84
-     [[Gramext.Stoken ("OPTLABEL", ""); Gramext.Sself],
cvsextras be41c84
-      Gramext.action
cvsextras be41c84
-        (fun (t : 'ctyp) (i : string) (loc : int * int) ->
cvsextras be41c84
-           (MLast.TyOlb (loc, i, t) : 'ctyp));
cvsextras be41c84
-      [Gramext.Stoken ("QUESTIONIDENT", ""); Gramext.Stoken ("", ":");
cvsextras be41c84
-       Gramext.Sself],
cvsextras be41c84
-      Gramext.action
cvsextras be41c84
-        (fun (t : 'ctyp) _ (i : string) (loc : int * int) ->
cvsextras be41c84
-           (MLast.TyOlb (loc, i, t) : 'ctyp));
cvsextras be41c84
-      [Gramext.Stoken ("LABEL", ""); Gramext.Sself],
cvsextras be41c84
-      Gramext.action
cvsextras be41c84
-        (fun (t : 'ctyp) (i : string) (loc : int * int) ->
cvsextras be41c84
-           (MLast.TyLab (loc, i, t) : 'ctyp));
cvsextras be41c84
-      [Gramext.Stoken ("TILDEIDENT", ""); Gramext.Stoken ("", ":");
cvsextras be41c84
-       Gramext.Sself],
cvsextras be41c84
-      Gramext.action
cvsextras be41c84
-        (fun (t : 'ctyp) _ (i : string) (loc : int * int) ->
cvsextras be41c84
-           (MLast.TyLab (loc, i, t) : 'ctyp))]];
cvsextras be41c84
     Grammar.Entry.obj (ctyp : 'ctyp Grammar.Entry.e),
cvsextras be41c84
     Some (Gramext.Level "simple"),
cvsextras be41c84
     [None, None,
cvsextras be41c84
Index: csl/camlp4/ocaml_src/meta/q_MLast.ml
cvsextras be41c84
diff -u csl/camlp4/ocaml_src/meta/q_MLast.ml:1.56 csl/camlp4/ocaml_src/meta/q_MLast.ml:1.58
cvsextras be41c84
--- csl/camlp4/ocaml_src/meta/q_MLast.ml:1.56	Thu Jul 24 00:26:19 2003
cvsextras be41c84
+++ csl/camlp4/ocaml_src/meta/q_MLast.ml	Thu Oct  2 14:33:44 2003
cvsextras be41c84
@@ -153,7 +153,9 @@
cvsextras be41c84
 let a_STRING = Grammar.Entry.create gram "a_STRING";;
cvsextras be41c84
 let a_CHAR = Grammar.Entry.create gram "a_CHAR";;
cvsextras be41c84
 let a_TILDEIDENT = Grammar.Entry.create gram "a_TILDEIDENT";;
cvsextras be41c84
+let a_LABEL = Grammar.Entry.create gram "a_LABEL";;
cvsextras be41c84
 let a_QUESTIONIDENT = Grammar.Entry.create gram "a_QUESTIONIDENT";;
cvsextras be41c84
+let a_OPTLABEL = Grammar.Entry.create gram "a_OPTLABEL";;
cvsextras be41c84
 
cvsextras be41c84
 let o2b =
cvsextras be41c84
   function
cvsextras be41c84
@@ -626,7 +628,7 @@
cvsextras be41c84
                 Qast.Tuple [xx1; xx2; xx3] -> xx1, xx2, xx3
cvsextras be41c84
               | _ ->
cvsextras be41c84
                   match () with
cvsextras be41c84
-                  _ -> raise (Match_failure ("q_MLast.ml", 300, 19))
cvsextras be41c84
+                  _ -> raise (Match_failure ("q_MLast.ml", 302, 19))
cvsextras be41c84
             in
cvsextras be41c84
             Qast.Node ("StExc", [Qast.Loc; c; tl; b]) :
cvsextras be41c84
             'str_item));
cvsextras be41c84
@@ -896,7 +898,7 @@
cvsextras be41c84
                 Qast.Tuple [xx1; xx2; xx3] -> xx1, xx2, xx3
cvsextras be41c84
               | _ ->
cvsextras be41c84
                   match () with
cvsextras be41c84
-                  _ -> raise (Match_failure ("q_MLast.ml", 358, 19))
cvsextras be41c84
+                  _ -> raise (Match_failure ("q_MLast.ml", 360, 19))
cvsextras be41c84
             in
cvsextras be41c84
             Qast.Node ("SgExc", [Qast.Loc; c; tl]) :
cvsextras be41c84
             'sig_item));
cvsextras be41c84
@@ -2254,6 +2256,32 @@
cvsextras be41c84
       Gramext.action
cvsextras be41c84
         (fun (t2 : 'ctyp) _ (t1 : 'ctyp) (loc : int * int) ->
cvsextras be41c84
            (Qast.Node ("TyArr", [Qast.Loc; t1; t2]) : 'ctyp))];
cvsextras be41c84
+     Some "label", Some Gramext.NonA,
cvsextras be41c84
+     [[Gramext.Snterm
cvsextras be41c84
+         (Grammar.Entry.obj (a_OPTLABEL : 'a_OPTLABEL Grammar.Entry.e));
cvsextras be41c84
+       Gramext.Sself],
cvsextras be41c84
+      Gramext.action
cvsextras be41c84
+        (fun (t : 'ctyp) (i : 'a_OPTLABEL) (loc : int * int) ->
cvsextras be41c84
+           (Qast.Node ("TyOlb", [Qast.Loc; i; t]) : 'ctyp));
cvsextras be41c84
+      [Gramext.Snterm
cvsextras be41c84
+         (Grammar.Entry.obj
cvsextras be41c84
+            (a_QUESTIONIDENT : 'a_QUESTIONIDENT Grammar.Entry.e));
cvsextras be41c84
+       Gramext.Stoken ("", ":"); Gramext.Sself],
cvsextras be41c84
+      Gramext.action
cvsextras be41c84
+        (fun (t : 'ctyp) _ (i : 'a_QUESTIONIDENT) (loc : int * int) ->
cvsextras be41c84
+           (Qast.Node ("TyOlb", [Qast.Loc; i; t]) : 'ctyp));
cvsextras be41c84
+      [Gramext.Snterm
cvsextras be41c84
+         (Grammar.Entry.obj (a_LABEL : 'a_LABEL Grammar.Entry.e));
cvsextras be41c84
+       Gramext.Sself],
cvsextras be41c84
+      Gramext.action
cvsextras be41c84
+        (fun (t : 'ctyp) (i : 'a_LABEL) (loc : int * int) ->
cvsextras be41c84
+           (Qast.Node ("TyLab", [Qast.Loc; i; t]) : 'ctyp));
cvsextras be41c84
+      [Gramext.Snterm
cvsextras be41c84
+         (Grammar.Entry.obj (a_TILDEIDENT : 'a_TILDEIDENT Grammar.Entry.e));
cvsextras be41c84
+       Gramext.Stoken ("", ":"); Gramext.Sself],
cvsextras be41c84
+      Gramext.action
cvsextras be41c84
+        (fun (t : 'ctyp) _ (i : 'a_TILDEIDENT) (loc : int * int) ->
cvsextras be41c84
+           (Qast.Node ("TyLab", [Qast.Loc; i; t]) : 'ctyp))];
cvsextras be41c84
      None, Some Gramext.LeftA,
cvsextras be41c84
      [[Gramext.Sself; Gramext.Sself],
cvsextras be41c84
       Gramext.action
cvsextras be41c84
@@ -3345,22 +3373,6 @@
cvsextras be41c84
         (fun (l : 'class_longident) _ (m : 'a_UIDENT) (loc : int * int) ->
cvsextras be41c84
            (Qast.Cons (m, l) : 'class_longident))]];
cvsextras be41c84
     Grammar.Entry.obj (ctyp : 'ctyp Grammar.Entry.e),
cvsextras be41c84
-    Some (Gramext.After "arrow"),
cvsextras be41c84
-    [None, Some Gramext.NonA,
cvsextras be41c84
-     [[Gramext.Snterm
cvsextras be41c84
-         (Grammar.Entry.obj
cvsextras be41c84
-            (a_QUESTIONIDENT : 'a_QUESTIONIDENT Grammar.Entry.e));
cvsextras be41c84
-       Gramext.Stoken ("", ":"); Gramext.Sself],
cvsextras be41c84
-      Gramext.action
cvsextras be41c84
-        (fun (t : 'ctyp) _ (i : 'a_QUESTIONIDENT) (loc : int * int) ->
cvsextras be41c84
-           (Qast.Node ("TyOlb", [Qast.Loc; i; t]) : 'ctyp));
cvsextras be41c84
-      [Gramext.Snterm
cvsextras be41c84
-         (Grammar.Entry.obj (a_TILDEIDENT : 'a_TILDEIDENT Grammar.Entry.e));
cvsextras be41c84
-       Gramext.Stoken ("", ":"); Gramext.Sself],
cvsextras be41c84
-      Gramext.action
cvsextras be41c84
-        (fun (t : 'ctyp) _ (i : 'a_TILDEIDENT) (loc : int * int) ->
cvsextras be41c84
-           (Qast.Node ("TyLab", [Qast.Loc; i; t]) : 'ctyp))]];
cvsextras be41c84
-    Grammar.Entry.obj (ctyp : 'ctyp Grammar.Entry.e),
cvsextras be41c84
     Some (Gramext.Level "simple"),
cvsextras be41c84
     [None, None,
cvsextras be41c84
      [[Gramext.Stoken ("", "["); Gramext.Stoken ("", "<");
cvsextras be41c84
@@ -3518,6 +3530,30 @@
cvsextras be41c84
         (fun (i : 'a_QUESTIONIDENT) (loc : int * int) ->
cvsextras be41c84
            (Qast.Node ("PaOlb", [Qast.Loc; i; Qast.Option None]) : 'patt));
cvsextras be41c84
       [Gramext.Snterm
cvsextras be41c84
+         (Grammar.Entry.obj (a_OPTLABEL : 'a_OPTLABEL Grammar.Entry.e));
cvsextras be41c84
+       Gramext.Stoken ("", "(");
cvsextras be41c84
+       Gramext.Snterm
cvsextras be41c84
+         (Grammar.Entry.obj (patt_tcon : 'patt_tcon Grammar.Entry.e));
cvsextras be41c84
+       Gramext.srules
cvsextras be41c84
+         [[Gramext.Sopt
cvsextras be41c84
+             (Gramext.Snterm
cvsextras be41c84
+                (Grammar.Entry.obj (eq_expr : 'eq_expr Grammar.Entry.e)))],
cvsextras be41c84
+          Gramext.action
cvsextras be41c84
+            (fun (a : 'eq_expr option) (loc : int * int) ->
cvsextras be41c84
+               (Qast.Option a : 'a_opt));
cvsextras be41c84
+          [Gramext.Snterm
cvsextras be41c84
+             (Grammar.Entry.obj (a_opt : 'a_opt Grammar.Entry.e))],
cvsextras be41c84
+          Gramext.action
cvsextras be41c84
+            (fun (a : 'a_opt) (loc : int * int) -> (a : 'a_opt))];
cvsextras be41c84
+       Gramext.Stoken ("", ")")],
cvsextras be41c84
+      Gramext.action
cvsextras be41c84
+        (fun _ (eo : 'a_opt) (p : 'patt_tcon) _ (i : 'a_OPTLABEL)
cvsextras be41c84
+           (loc : int * int) ->
cvsextras be41c84
+           (Qast.Node
cvsextras be41c84
+              ("PaOlb",
cvsextras be41c84
+               [Qast.Loc; i; Qast.Option (Some (Qast.Tuple [p; eo]))]) :
cvsextras be41c84
+            'patt));
cvsextras be41c84
+      [Gramext.Snterm
cvsextras be41c84
          (Grammar.Entry.obj
cvsextras be41c84
             (a_QUESTIONIDENT : 'a_QUESTIONIDENT Grammar.Entry.e));
cvsextras be41c84
        Gramext.Stoken ("", ":"); Gramext.Stoken ("", "(");
cvsextras be41c84
@@ -3548,6 +3584,13 @@
cvsextras be41c84
         (fun (i : 'a_TILDEIDENT) (loc : int * int) ->
cvsextras be41c84
            (Qast.Node ("PaLab", [Qast.Loc; i; Qast.Option None]) : 'patt));
cvsextras be41c84
       [Gramext.Snterm
cvsextras be41c84
+         (Grammar.Entry.obj (a_LABEL : 'a_LABEL Grammar.Entry.e));
cvsextras be41c84
+       Gramext.Sself],
cvsextras be41c84
+      Gramext.action
cvsextras be41c84
+        (fun (p : 'patt) (i : 'a_LABEL) (loc : int * int) ->
cvsextras be41c84
+           (Qast.Node ("PaLab", [Qast.Loc; i; Qast.Option (Some p)]) :
cvsextras be41c84
+            'patt));
cvsextras be41c84
+      [Gramext.Snterm
cvsextras be41c84
          (Grammar.Entry.obj (a_TILDEIDENT : 'a_TILDEIDENT Grammar.Entry.e));
cvsextras be41c84
        Gramext.Stoken ("", ":"); Gramext.Sself],
cvsextras be41c84
       Gramext.action
cvsextras be41c84
@@ -3606,6 +3649,30 @@
cvsextras be41c84
         (fun (i : 'a_QUESTIONIDENT) (loc : int * int) ->
cvsextras be41c84
            (Qast.Node ("PaOlb", [Qast.Loc; i; Qast.Option None]) : 'ipatt));
cvsextras be41c84
       [Gramext.Snterm
cvsextras be41c84
+         (Grammar.Entry.obj (a_OPTLABEL : 'a_OPTLABEL Grammar.Entry.e));
cvsextras be41c84
+       Gramext.Stoken ("", "(");
cvsextras be41c84
+       Gramext.Snterm
cvsextras be41c84
+         (Grammar.Entry.obj (ipatt_tcon : 'ipatt_tcon Grammar.Entry.e));
cvsextras be41c84
+       Gramext.srules
cvsextras be41c84
+         [[Gramext.Sopt
cvsextras be41c84
+             (Gramext.Snterm
cvsextras be41c84
+                (Grammar.Entry.obj (eq_expr : 'eq_expr Grammar.Entry.e)))],
cvsextras be41c84
+          Gramext.action
cvsextras be41c84
+            (fun (a : 'eq_expr option) (loc : int * int) ->
cvsextras be41c84
+               (Qast.Option a : 'a_opt));
cvsextras be41c84
+          [Gramext.Snterm
cvsextras be41c84
+             (Grammar.Entry.obj (a_opt : 'a_opt Grammar.Entry.e))],
cvsextras be41c84
+          Gramext.action
cvsextras be41c84
+            (fun (a : 'a_opt) (loc : int * int) -> (a : 'a_opt))];
cvsextras be41c84
+       Gramext.Stoken ("", ")")],
cvsextras be41c84
+      Gramext.action
cvsextras be41c84
+        (fun _ (eo : 'a_opt) (p : 'ipatt_tcon) _ (i : 'a_OPTLABEL)
cvsextras be41c84
+           (loc : int * int) ->
cvsextras be41c84
+           (Qast.Node
cvsextras be41c84
+              ("PaOlb",
cvsextras be41c84
+               [Qast.Loc; i; Qast.Option (Some (Qast.Tuple [p; eo]))]) :
cvsextras be41c84
+            'ipatt));
cvsextras be41c84
+      [Gramext.Snterm
cvsextras be41c84
          (Grammar.Entry.obj
cvsextras be41c84
             (a_QUESTIONIDENT : 'a_QUESTIONIDENT Grammar.Entry.e));
cvsextras be41c84
        Gramext.Stoken ("", ":"); Gramext.Stoken ("", "(");
cvsextras be41c84
@@ -3636,6 +3703,13 @@
cvsextras be41c84
         (fun (i : 'a_TILDEIDENT) (loc : int * int) ->
cvsextras be41c84
            (Qast.Node ("PaLab", [Qast.Loc; i; Qast.Option None]) : 'ipatt));
cvsextras be41c84
       [Gramext.Snterm
cvsextras be41c84
+         (Grammar.Entry.obj (a_LABEL : 'a_LABEL Grammar.Entry.e));
cvsextras be41c84
+       Gramext.Sself],
cvsextras be41c84
+      Gramext.action
cvsextras be41c84
+        (fun (p : 'ipatt) (i : 'a_LABEL) (loc : int * int) ->
cvsextras be41c84
+           (Qast.Node ("PaLab", [Qast.Loc; i; Qast.Option (Some p)]) :
cvsextras be41c84
+            'ipatt));
cvsextras be41c84
+      [Gramext.Snterm
cvsextras be41c84
          (Grammar.Entry.obj (a_TILDEIDENT : 'a_TILDEIDENT Grammar.Entry.e));
cvsextras be41c84
        Gramext.Stoken ("", ":"); Gramext.Sself],
cvsextras be41c84
       Gramext.action
cvsextras be41c84
@@ -3669,6 +3743,13 @@
cvsextras be41c84
         (fun (i : 'a_QUESTIONIDENT) (loc : int * int) ->
cvsextras be41c84
            (Qast.Node ("ExOlb", [Qast.Loc; i; Qast.Option None]) : 'expr));
cvsextras be41c84
       [Gramext.Snterm
cvsextras be41c84
+         (Grammar.Entry.obj (a_OPTLABEL : 'a_OPTLABEL Grammar.Entry.e));
cvsextras be41c84
+       Gramext.Sself],
cvsextras be41c84
+      Gramext.action
cvsextras be41c84
+        (fun (e : 'expr) (i : 'a_OPTLABEL) (loc : int * int) ->
cvsextras be41c84
+           (Qast.Node ("ExOlb", [Qast.Loc; i; Qast.Option (Some e)]) :
cvsextras be41c84
+            'expr));
cvsextras be41c84
+      [Gramext.Snterm
cvsextras be41c84
          (Grammar.Entry.obj
cvsextras be41c84
             (a_QUESTIONIDENT : 'a_QUESTIONIDENT Grammar.Entry.e));
cvsextras be41c84
        Gramext.Stoken ("", ":"); Gramext.Sself],
cvsextras be41c84
@@ -3682,6 +3763,13 @@
cvsextras be41c84
         (fun (i : 'a_TILDEIDENT) (loc : int * int) ->
cvsextras be41c84
            (Qast.Node ("ExLab", [Qast.Loc; i; Qast.Option None]) : 'expr));
cvsextras be41c84
       [Gramext.Snterm
cvsextras be41c84
+         (Grammar.Entry.obj (a_LABEL : 'a_LABEL Grammar.Entry.e));
cvsextras be41c84
+       Gramext.Sself],
cvsextras be41c84
+      Gramext.action
cvsextras be41c84
+        (fun (e : 'expr) (i : 'a_LABEL) (loc : int * int) ->
cvsextras be41c84
+           (Qast.Node ("ExLab", [Qast.Loc; i; Qast.Option (Some e)]) :
cvsextras be41c84
+            'expr));
cvsextras be41c84
+      [Gramext.Snterm
cvsextras be41c84
          (Grammar.Entry.obj (a_TILDEIDENT : 'a_TILDEIDENT Grammar.Entry.e));
cvsextras be41c84
        Gramext.Stoken ("", ":"); Gramext.Sself],
cvsextras be41c84
       Gramext.action
cvsextras be41c84
@@ -4427,6 +4515,11 @@
cvsextras be41c84
      Gramext.action
cvsextras be41c84
        (fun (a : string) _ (loc : int * int) ->
cvsextras be41c84
           (antiquot "" loc a : 'a_TILDEIDENT))]];
cvsextras be41c84
+   Grammar.Entry.obj (a_LABEL : 'a_LABEL Grammar.Entry.e), None,
cvsextras be41c84
+   [None, None,
cvsextras be41c84
+    [[Gramext.Stoken ("LABEL", "")],
cvsextras be41c84
+     Gramext.action
cvsextras be41c84
+       (fun (s : string) (loc : int * int) -> (Qast.Str s : 'a_LABEL))]];
cvsextras be41c84
    Grammar.Entry.obj (a_QUESTIONIDENT : 'a_QUESTIONIDENT Grammar.Entry.e),
cvsextras be41c84
    None,
cvsextras be41c84
    [None, None,
cvsextras be41c84
@@ -4437,7 +4530,12 @@
cvsextras be41c84
      [Gramext.Stoken ("", "?"); Gramext.Stoken ("ANTIQUOT", "")],
cvsextras be41c84
      Gramext.action
cvsextras be41c84
        (fun (a : string) _ (loc : int * int) ->
cvsextras be41c84
-          (antiquot "" loc a : 'a_QUESTIONIDENT))]]];;
cvsextras be41c84
+          (antiquot "" loc a : 'a_QUESTIONIDENT))]];
cvsextras be41c84
+   Grammar.Entry.obj (a_OPTLABEL : 'a_OPTLABEL Grammar.Entry.e), None,
cvsextras be41c84
+   [None, None,
cvsextras be41c84
+    [[Gramext.Stoken ("OPTLABEL", "")],
cvsextras be41c84
+     Gramext.action
cvsextras be41c84
+       (fun (s : string) (loc : int * int) -> (Qast.Str s : 'a_OPTLABEL))]]];;
cvsextras be41c84
 
cvsextras be41c84
 let apply_entry e =
cvsextras be41c84
   let f s = Grammar.Entry.parse e (Stream.of_string s) in
cvsextras be41c84
Index: csl/emacs/Makefile
cvsextras be41c84
diff -u csl/emacs/Makefile:1.15 csl/emacs/Makefile:1.16
cvsextras be41c84
--- csl/emacs/Makefile:1.15	Fri Aug 29 17:38:28 2003
cvsextras be41c84
+++ csl/emacs/Makefile	Fri Oct 10 15:25:38 2003
cvsextras be41c84
@@ -1,4 +1,4 @@
cvsextras be41c84
-# $Id: Makefile,v 1.15 2003/08/29 15:38:28 doligez Exp $
cvsextras be41c84
+# $Id: Makefile,v 1.16 2003/10/10 13:25:38 remy Exp $
cvsextras be41c84
 
cvsextras be41c84
 include ../config/Makefile
cvsextras be41c84
 
cvsextras be41c84
@@ -24,6 +24,7 @@
cvsextras be41c84
               (byte-compile-file "caml.el") \
cvsextras be41c84
               (byte-compile-file "inf-caml.el") \
cvsextras be41c84
               (byte-compile-file "caml-help.el") \
cvsextras be41c84
+              (byte-compile-file "caml-types.el") \
cvsextras be41c84
               (byte-compile-file "camldebug.el"))
cvsextras be41c84
 
cvsextras be41c84
 install:
cvsextras be41c84
Index: csl/emacs/caml-emacs.el
cvsextras be41c84
diff -u csl/emacs/caml-emacs.el:1.4 csl/emacs/caml-emacs.el:1.5
cvsextras be41c84
--- csl/emacs/caml-emacs.el:1.4	Mon Aug 25 17:01:20 2003
cvsextras be41c84
+++ csl/emacs/caml-emacs.el	Fri Oct 10 15:25:38 2003
cvsextras be41c84
@@ -8,7 +8,7 @@
cvsextras be41c84
 (defun caml-event-window (e) (posn-window (event-start e)))
cvsextras be41c84
 (defun caml-event-point-start (e) (posn-point (event-start e)))
cvsextras be41c84
 (defun caml-event-point-end (e) (posn-point (event-end e)))
cvsextras be41c84
-(defalias 'caml-track-mouse 'track-mouse)
cvsextras be41c84
 (defalias 'caml-read-event 'read-event)
cvsextras be41c84
+(defmacro caml-track-mouse (&rest body) (cons 'track-mouse body))
cvsextras be41c84
 
cvsextras be41c84
 (provide 'caml-emacs)
cvsextras be41c84
Index: csl/emacs/caml-types.el
cvsextras be41c84
diff -u csl/emacs/caml-types.el:1.24 csl/emacs/caml-types.el:1.26
cvsextras be41c84
--- csl/emacs/caml-types.el:1.24	Fri Sep  5 20:01:46 2003
cvsextras be41c84
+++ csl/emacs/caml-types.el	Sat Oct 11 02:00:14 2003
cvsextras be41c84
@@ -10,7 +10,7 @@
cvsextras be41c84
 ;(*                                                                     *)
cvsextras be41c84
 ;(***********************************************************************)
cvsextras be41c84
 
cvsextras be41c84
-;(* $Id: caml-types.el,v 1.24 2003/09/05 18:01:46 remy Exp $ *)
cvsextras be41c84
+;(* $Id: caml-types.el,v 1.26 2003/10/11 00:00:14 doligez Exp $ *)
cvsextras be41c84
 
cvsextras be41c84
 ; An emacs-lisp complement to the "-dtypes" option of ocamlc and ocamlopt.
cvsextras be41c84
 
cvsextras be41c84
@@ -21,6 +21,8 @@
cvsextras be41c84
       (require 'caml-xemacs)
cvsextras be41c84
     (require 'caml-emacs)))
cvsextras be41c84
 
cvsextras be41c84
+
cvsextras be41c84
+
cvsextras be41c84
 (defvar caml-types-location-re nil "Regexp to parse *.annot files.
cvsextras be41c84
 
cvsextras be41c84
 Annotation files *.annot may be generated with the \"-dtypes\" option 
cvsextras be41c84
@@ -160,8 +162,10 @@
cvsextras be41c84
          (target-file (file-name-nondirectory (buffer-file-name)))
cvsextras be41c84
          (target-date (nth 5 (file-attributes target-file))))
cvsextras be41c84
     (unless (and caml-types-annotation-tree
cvsextras be41c84
+                 type-date
cvsextras be41c84
+                 caml-types-annotation-date
cvsextras be41c84
                  (not (caml-types-date< caml-types-annotation-date type-date)))
cvsextras be41c84
-      (if (caml-types-date< type-date target-date)
cvsextras be41c84
+      (if (and type-date target-date (caml-types-date< type-date target-date))
cvsextras be41c84
           (error (format "%s is more recent than %s" target-file type-file)))
cvsextras be41c84
       (message "Reading annotation file...")
cvsextras be41c84
       (let* ((type-buf (caml-types-find-file type-file))
cvsextras be41c84
@@ -376,10 +380,13 @@
cvsextras be41c84
      (with-current-buffer buf (toggle-read-only 1))
cvsextras be41c84
      )
cvsextras be41c84
    (t
cvsextras be41c84
-    (error "No annotation file. You may compile with \"-dtypes\" option"))
cvsextras be41c84
+    (error "No annotation file. You should compile with option \"-dtypes\"."))
cvsextras be41c84
     )
cvsextras be41c84
   buf))
cvsextras be41c84
 
cvsextras be41c84
+(defun caml-types-mouse-ignore (event)
cvsextras be41c84
+  (interactive "e")
cvsextras be41c84
+  nil)
cvsextras be41c84
 
cvsextras be41c84
 (defun caml-types-explore (event)
cvsextras be41c84
   "Explore type annotations by mouse dragging.
cvsextras be41c84
@@ -395,58 +402,79 @@
cvsextras be41c84
          (target-line) (target-bol)
cvsextras be41c84
          target-pos
cvsextras be41c84
          Left Right limits cnum node mes type
cvsextras be41c84
-         (tree caml-types-annotation-tree)
cvsextras be41c84
          region
cvsextras be41c84
+         target-tree
cvsextras be41c84
          )
cvsextras be41c84
-    (caml-types-preprocess type-file)
cvsextras be41c84
-    (unless caml-types-buffer 
cvsextras be41c84
-      (setq caml-types-buffer (get-buffer-create caml-types-buffer-name)))
cvsextras be41c84
-      ;; (message "Drag the mouse to explore types")
cvsextras be41c84
     (unwind-protect
cvsextras be41c84
-        (caml-track-mouse
cvsextras be41c84
-         (setq region
cvsextras be41c84
-               (caml-types-typed-make-overlay target-buf
cvsextras be41c84
-                                        (caml-event-point-start event)))
cvsextras be41c84
-         (while (and event
cvsextras be41c84
-                     (integer-or-marker-p
cvsextras be41c84
-                      (setq cnum (caml-event-point-end event))))
cvsextras be41c84
-           (if (and region (<= (car region) cnum) (<= cnum (cdr region)))
cvsextras be41c84
-               (if (and limits (>= cnum (car limits)) (< cnum (cdr limits)))
cvsextras be41c84
-                   (message mes)
cvsextras be41c84
-                 (setq target-bol
cvsextras be41c84
-                       (save-excursion (goto-char cnum)
cvsextras be41c84
-                                       (caml-line-beginning-position)))
cvsextras be41c84
-                 (setq target-line
cvsextras be41c84
-                       (1+ (count-lines (point-min) target-bol)))
cvsextras be41c84
-                 (setq target-pos (vector target-file target-line target-bol cnum))
cvsextras be41c84
-                 (save-excursion
cvsextras be41c84
-                   (setq node (caml-types-find-location target-pos () tree))
cvsextras be41c84
-                   (set-buffer caml-types-buffer)
cvsextras be41c84
-                   (erase-buffer)
cvsextras be41c84
-                   (cond
cvsextras be41c84
-                    (node
cvsextras be41c84
-                     (setq Left (caml-types-get-pos target-buf (elt node 0)))
cvsextras be41c84
-                     (setq Right (caml-types-get-pos target-buf (elt node 1)))
cvsextras be41c84
-                     (move-overlay caml-types-expr-ovl Left Right target-buf)
cvsextras be41c84
-                     (setq limits (caml-types-find-interval target-buf target-pos
cvsextras be41c84
-                                                            node))
cvsextras be41c84
-                     (setq type (elt node 2))
cvsextras be41c84
-                     )
cvsextras be41c84
-                    (t
cvsextras be41c84
-                     (delete-overlay caml-types-expr-ovl)
cvsextras be41c84
-                     (setq type "*no type information*")
cvsextras be41c84
-                     (setq limits (caml-types-find-interval target-buf target-pos
cvsextras be41c84
-                                                            tree))
cvsextras be41c84
-                     ))
cvsextras be41c84
-                   (message (setq mes (format "type: %s" type)))
cvsextras be41c84
-                   (insert type)
cvsextras be41c84
-                   )))
cvsextras be41c84
-             (setq event (caml-read-event))
cvsextras be41c84
-             (unless (mouse-movement-p event) (setq event nil))
cvsextras be41c84
-             )
cvsextras be41c84
-         )
cvsextras be41c84
-      (delete-overlay caml-types-expr-ovl)
cvsextras be41c84
-      (delete-overlay caml-types-typed-ovl)
cvsextras be41c84
+        (progn
cvsextras be41c84
+          (caml-types-preprocess type-file)
cvsextras be41c84
+          (setq target-tree caml-types-annotation-tree)
cvsextras be41c84
+          (unless caml-types-buffer 
cvsextras be41c84
+            (setq caml-types-buffer
cvsextras be41c84
+                  (get-buffer-create caml-types-buffer-name)))
cvsextras be41c84
+          ;; (message "Drag the mouse to explore types")
cvsextras be41c84
+          (unwind-protect
cvsextras be41c84
+              (caml-track-mouse
cvsextras be41c84
+               (setq region
cvsextras be41c84
+                     (caml-types-typed-make-overlay
cvsextras be41c84
+                      target-buf (caml-event-point-start event)))
cvsextras be41c84
+               (while (and event
cvsextras be41c84
+                           (integer-or-marker-p
cvsextras be41c84
+                            (setq cnum (caml-event-point-end event))))
cvsextras be41c84
+                 (if (and region (<= (car region) cnum) (< cnum (cdr region)))
cvsextras be41c84
+                     (if (and limits
cvsextras be41c84
+                              (>= cnum (car limits)) (< cnum (cdr limits)))
cvsextras be41c84
+                         (message mes)
cvsextras be41c84
+                       (setq target-bol
cvsextras be41c84
+                             (save-excursion
cvsextras be41c84
+                               (goto-char cnum) (caml-line-beginning-position))
cvsextras be41c84
+                             target-line (1+ (count-lines (point-min)
cvsextras be41c84
+                                                          target-bol))
cvsextras be41c84
+                             target-pos
cvsextras be41c84
+                             (vector target-file target-line target-bol cnum))
cvsextras be41c84
+                       (save-excursion
cvsextras be41c84
+                         (setq node (caml-types-find-location
cvsextras be41c84
+                                     target-pos () target-tree))
cvsextras be41c84
+                         (set-buffer caml-types-buffer)
cvsextras be41c84
+                         (erase-buffer)
cvsextras be41c84
+                         (cond
cvsextras be41c84
+                          (node
cvsextras be41c84
+                           (setq Left
cvsextras be41c84
+                                 (caml-types-get-pos target-buf (elt node 0))
cvsextras be41c84
+                                 Right
cvsextras be41c84
+                                 (caml-types-get-pos target-buf (elt node 1)))
cvsextras be41c84
+                           (move-overlay
cvsextras be41c84
+                            caml-types-expr-ovl Left Right target-buf)
cvsextras be41c84
+                           (setq limits
cvsextras be41c84
+                                 (caml-types-find-interval target-buf
cvsextras be41c84
+                                                           target-pos node)
cvsextras be41c84
+                                 type (elt node 2))
cvsextras be41c84
+                           )
cvsextras be41c84
+                          (t
cvsextras be41c84
+                           (delete-overlay caml-types-expr-ovl)
cvsextras be41c84
+                           (setq type "*no type information*")
cvsextras be41c84
+                           (setq limits
cvsextras be41c84
+                                 (caml-types-find-interval
cvsextras be41c84
+                                  target-buf target-pos target-tree))
cvsextras be41c84
+                           ))
cvsextras be41c84
+                         (message (setq mes (format "type: %s" type)))
cvsextras be41c84
+                         (insert type)
cvsextras be41c84
+                         )))
cvsextras be41c84
+                 (setq event (caml-read-event))
cvsextras be41c84
+                 (unless (mouse-movement-p event) (setq event nil))
cvsextras be41c84
+                 )
cvsextras be41c84
+               )
cvsextras be41c84
+            (delete-overlay caml-types-expr-ovl)
cvsextras be41c84
+            (delete-overlay caml-types-typed-ovl)
cvsextras be41c84
+            ))
cvsextras be41c84
+      ;; the mouse is down. One should prevent against mouse release,
cvsextras be41c84
+      ;; which could do something undesirable.
cvsextras be41c84
+      ;; In most common cases, next event will be mouse release.
cvsextras be41c84
+      ;; However, it could also be a key stroke before mouse release.
cvsextras be41c84
+      ;; Will then execute the action for mouse release (if bound).
cvsextras be41c84
+      ;; Emacs does not allow to test whether mouse is up or down.
cvsextras be41c84
+      ;; Same problem may happen above while exploring
cvsextras be41c84
+      (if (and event (caml-read-event)))
cvsextras be41c84
       )))
cvsextras be41c84
 
cvsextras be41c84
 (defun caml-types-typed-make-overlay (target-buf pos)
cvsextras be41c84
@@ -459,7 +487,7 @@
cvsextras be41c84
         (if (and (equal target-buf (current-buffer))
cvsextras be41c84
                  (setq left (caml-types-get-pos target-buf (elt node 0))
cvsextras be41c84
                        right (caml-types-get-pos target-buf (elt node 1)))
cvsextras be41c84
-                 (<= left pos) (>= right pos)
cvsextras be41c84
+                 (<= left pos) (> right pos)
cvsextras be41c84
                  )
cvsextras be41c84
             (setq start (min start left)
cvsextras be41c84
                   end (max end right))
cvsextras be41c84
Index: csl/emacs/caml-xemacs.el
cvsextras be41c84
diff -u csl/emacs/caml-xemacs.el:1.3 csl/emacs/caml-xemacs.el:1.4
cvsextras be41c84
--- csl/emacs/caml-xemacs.el:1.3	Tue Jul 29 09:30:03 2003
cvsextras be41c84
+++ csl/emacs/caml-xemacs.el	Fri Oct 10 15:25:38 2003
cvsextras be41c84
@@ -12,8 +12,9 @@
cvsextras be41c84
 (defun caml-event-window (e) (event-window e))
cvsextras be41c84
 (defun caml-event-point-start (e) (event-closest-point e))
cvsextras be41c84
 (defun caml-event-point-end (e) (event-closest-point e))
cvsextras be41c84
-(defalias 'caml-track-mouse 'progn)
cvsextras be41c84
 (defalias 'caml-read-event 'next-event)
cvsextras be41c84
+(defmacro caml-track-mouse (&rest body) (cons 'progn body))
cvsextras be41c84
+
cvsextras be41c84
 (defun mouse-movement-p (e) (equal (event-type e) 'motion))
cvsextras be41c84
 
cvsextras be41c84
 (provide 'caml-xemacs)
cvsextras be41c84
Index: csl/emacs/caml.el
cvsextras be41c84
diff -u csl/emacs/caml.el:1.34 csl/emacs/caml.el:1.35
cvsextras be41c84
--- csl/emacs/caml.el:1.34	Mon Jul 28 20:06:49 2003
cvsextras be41c84
+++ csl/emacs/caml.el	Fri Oct 10 15:25:38 2003
cvsextras be41c84
@@ -283,6 +283,8 @@
cvsextras be41c84
 
cvsextras be41c84
   ;; caml-types
cvsextras be41c84
   (define-key caml-mode-map [?\C-c?\C-t] 'caml-types-show-type)
cvsextras be41c84
+  ;; to prevent misbehavior in case of error during exploration.
cvsextras be41c84
+  (define-key caml-mode-map [mouse-2] 'caml-types-mouse-ignore)
cvsextras be41c84
   (define-key caml-mode-map [down-mouse-2] 'caml-types-explore)
cvsextras be41c84
   ;; caml-help
cvsextras be41c84
   (define-key caml-mode-map [?\C-c?i] 'ocaml-add-path)
cvsextras be41c84
Index: csl/otherlibs/threads/scheduler.c
cvsextras be41c84
diff -u csl/otherlibs/threads/scheduler.c:1.56 csl/otherlibs/threads/scheduler.c:1.57
cvsextras be41c84
--- csl/otherlibs/threads/scheduler.c:1.56	Thu Mar 20 17:23:03 2003
cvsextras be41c84
+++ csl/otherlibs/threads/scheduler.c	Fri Oct 10 15:13:21 2003
cvsextras be41c84
@@ -11,7 +11,7 @@
cvsextras be41c84
 /*                                                                     */
cvsextras be41c84
 /***********************************************************************/
cvsextras be41c84
 
cvsextras be41c84
-/* $Id: scheduler.c,v 1.56 2003/03/20 16:23:03 xleroy Exp $ */
cvsextras be41c84
+/* $Id: scheduler.c,v 1.57 2003/10/10 13:13:21 doligez Exp $ */
cvsextras be41c84
 
cvsextras be41c84
 /* The thread scheduler */
cvsextras be41c84
 
cvsextras be41c84
@@ -72,10 +72,10 @@
cvsextras be41c84
 
cvsextras be41c84
 /* The thread descriptors */
cvsextras be41c84
 
cvsextras be41c84
-struct thread_struct {
cvsextras be41c84
+struct caml_thread_struct {
cvsextras be41c84
   value ident;                  /* Unique id (for equality comparisons) */
cvsextras be41c84
-  struct thread_struct * next;  /* Double linking of threads */
cvsextras be41c84
-  struct thread_struct * prev;
cvsextras be41c84
+  struct caml_thread_struct * next;  /* Double linking of threads */
cvsextras be41c84
+  struct caml_thread_struct * prev;
cvsextras be41c84
   value * stack_low;            /* The execution stack for this thread */
cvsextras be41c84
   value * stack_high;
cvsextras be41c84
   value * stack_threshold;
cvsextras be41c84
@@ -94,7 +94,7 @@
cvsextras be41c84
   value retval;                 /* Value to return when thread resumes */
cvsextras be41c84
 };
cvsextras be41c84
 
cvsextras be41c84
-typedef struct thread_struct * thread_t;
cvsextras be41c84
+typedef struct caml_thread_struct * caml_thread_t;
cvsextras be41c84
 
cvsextras be41c84
 #define RUNNABLE Val_int(0)
cvsextras be41c84
 #define KILLED Val_int(1)
cvsextras be41c84
@@ -122,7 +122,7 @@
cvsextras be41c84
 #define DELAY_INFTY 1E30        /* +infty, for this purpose */
cvsextras be41c84
 
cvsextras be41c84
 /* The thread currently active */
cvsextras be41c84
-static thread_t curr_thread = NULL;
cvsextras be41c84
+static caml_thread_t curr_thread = NULL;
cvsextras be41c84
 /* Identifier for next thread creation */
cvsextras be41c84
 static value next_ident = Val_int(0);
cvsextras be41c84
 
cvsextras be41c84
@@ -134,7 +134,7 @@
cvsextras be41c84
 
cvsextras be41c84
 static void thread_scan_roots(scanning_action action)
cvsextras be41c84
 {
cvsextras be41c84
-  thread_t th, start;
cvsextras be41c84
+  caml_thread_t th, start;
cvsextras be41c84
 
cvsextras be41c84
   /* Scan all active descriptors */
cvsextras be41c84
   start = curr_thread;
cvsextras be41c84
@@ -161,7 +161,8 @@
cvsextras be41c84
   if (curr_thread != NULL) return Val_unit;
cvsextras be41c84
   /* Create a descriptor for the current thread */
cvsextras be41c84
   curr_thread =
cvsextras be41c84
-    (thread_t) alloc_shr(sizeof(struct thread_struct) / sizeof(value), 0);
cvsextras be41c84
+    (caml_thread_t) alloc_shr(sizeof(struct caml_thread_struct)
cvsextras be41c84
+                              / sizeof(value), 0);
cvsextras be41c84
   curr_thread->ident = next_ident;
cvsextras be41c84
   next_ident = Val_int(Int_val(next_ident) + 1);
cvsextras be41c84
   curr_thread->next = curr_thread;
cvsextras be41c84
@@ -218,10 +219,11 @@
cvsextras be41c84
 
cvsextras be41c84
 value thread_new(value clos)          /* ML */
cvsextras be41c84
 {
cvsextras be41c84
-  thread_t th;
cvsextras be41c84
+  caml_thread_t th;
cvsextras be41c84
   /* Allocate the thread and its stack */
cvsextras be41c84
   Begin_root(clos);
cvsextras be41c84
-    th = (thread_t) alloc_shr(sizeof(struct thread_struct) / sizeof(value), 0);
cvsextras be41c84
+    th = (caml_thread_t) alloc_shr(sizeof(struct caml_thread_struct)
cvsextras be41c84
+                                   / sizeof(value), 0);
cvsextras be41c84
   End_roots();
cvsextras be41c84
   th->ident = next_ident;
cvsextras be41c84
   next_ident = Val_int(Int_val(next_ident) + 1);
cvsextras be41c84
@@ -268,7 +270,7 @@
cvsextras be41c84
 
cvsextras be41c84
 value thread_id(value th)             /* ML */
cvsextras be41c84
 {
cvsextras be41c84
-  return ((struct thread_struct *)th)->ident;
cvsextras be41c84
+  return ((caml_thread_t)th)->ident;
cvsextras be41c84
 }
cvsextras be41c84
 
cvsextras be41c84
 /* Return the current time as a floating-point number */
cvsextras be41c84
@@ -293,7 +295,7 @@
cvsextras be41c84
 
cvsextras be41c84
 static value schedule_thread(void)
cvsextras be41c84
 {
cvsextras be41c84
-  thread_t run_thread, th;
cvsextras be41c84
+  caml_thread_t run_thread, th;
cvsextras be41c84
   fd_set readfds, writefds, exceptfds;
cvsextras be41c84
   double delay, now;
cvsextras be41c84
   int need_select, need_wait;
cvsextras be41c84
@@ -353,7 +355,7 @@
cvsextras be41c84
       }
cvsextras be41c84
     }
cvsextras be41c84
     if (th->status & (BLOCKED_JOIN - 1)) {
cvsextras be41c84
-      if (((thread_t)(th->joining))->status == KILLED) {
cvsextras be41c84
+      if (((caml_thread_t)(th->joining))->status == KILLED) {
cvsextras be41c84
         th->status = RUNNABLE;
cvsextras be41c84
         Assign(th->retval, RESUMED_JOIN);
cvsextras be41c84
       }
cvsextras be41c84
@@ -682,7 +684,7 @@
cvsextras be41c84
 {
cvsextras be41c84
   check_callback();
cvsextras be41c84
   Assert(curr_thread != NULL);
cvsextras be41c84
-  if (((thread_t)th)->status == KILLED) return Val_unit;
cvsextras be41c84
+  if (((caml_thread_t)th)->status == KILLED) return Val_unit;
cvsextras be41c84
   curr_thread->status = BLOCKED_JOIN;
cvsextras be41c84
   Assign(curr_thread->joining, th);
cvsextras be41c84
   return schedule_thread();
cvsextras be41c84
@@ -703,7 +705,7 @@
cvsextras be41c84
 
cvsextras be41c84
 value thread_wakeup(value thread)     /* ML */
cvsextras be41c84
 {
cvsextras be41c84
-  thread_t th = (thread_t) thread;
cvsextras be41c84
+  caml_thread_t th = (caml_thread_t) thread;
cvsextras be41c84
   switch (th->status) {
cvsextras be41c84
   case SUSPENDED:
cvsextras be41c84
     th->status = RUNNABLE;
cvsextras be41c84
@@ -730,7 +732,7 @@
cvsextras be41c84
 value thread_kill(value thread)       /* ML */
cvsextras be41c84
 {
cvsextras be41c84
   value retval = Val_unit;
cvsextras be41c84
-  thread_t th = (thread_t) thread;
cvsextras be41c84
+  caml_thread_t th = (caml_thread_t) thread;
cvsextras be41c84
   if (th->status == KILLED) failwith("Thread.kill: killed thread");
cvsextras be41c84
   /* Don't paint ourselves in a corner */
cvsextras be41c84
   if (th == th->next) failwith("Thread.kill: cannot kill the last thread");
cvsextras be41c84
@@ -740,7 +742,7 @@
cvsextras be41c84
   if (th == curr_thread) {
cvsextras be41c84
     Begin_root(thread);
cvsextras be41c84
     retval = schedule_thread();
cvsextras be41c84
-    th = (thread_t) thread;
cvsextras be41c84
+    th = (caml_thread_t) thread;
cvsextras be41c84
     End_roots();
cvsextras be41c84
   }
cvsextras be41c84
   /* Remove thread from the doubly-linked list */
cvsextras be41c84
Index: csl/stdlib/buffer.mli
cvsextras be41c84
diff -u csl/stdlib/buffer.mli:1.16 csl/stdlib/buffer.mli:1.17
cvsextras be41c84
--- csl/stdlib/buffer.mli:1.16	Wed May 14 19:52:19 2003
cvsextras be41c84
+++ csl/stdlib/buffer.mli	Wed Oct  8 15:12:44 2003
cvsextras be41c84
@@ -74,7 +74,7 @@
cvsextras be41c84
    - a non empty sequence of alphanumeric or [_] characters,
cvsextras be41c84
    - an arbitrary sequence of characters enclosed by a pair of
cvsextras be41c84
    matching parentheses or curly brackets.
cvsextras be41c84
-   An escaped [$] character is a [$] that immediately folows a backslash
cvsextras be41c84
+   An escaped [$] character is a [$] that immediately follows a backslash
cvsextras be41c84
    character; it then stands for a plain [$].
cvsextras be41c84
    Raise [Not_found] if the closing character of a parenthesized variable
cvsextras be41c84
    cannot be found. *)
cvsextras be41c84
Index: csl/stdlib/pervasives.mli
cvsextras be41c84
diff -u csl/stdlib/pervasives.mli:1.93 csl/stdlib/pervasives.mli:1.94
cvsextras be41c84
--- csl/stdlib/pervasives.mli:1.93	Thu Sep  4 14:44:48 2003
cvsextras be41c84
+++ csl/stdlib/pervasives.mli	Wed Oct  8 15:13:33 2003
cvsextras be41c84
@@ -11,7 +11,7 @@
cvsextras be41c84
 (*                                                                     *)
cvsextras be41c84
 (***********************************************************************)
cvsextras be41c84
 
cvsextras be41c84
-(* $Id: pervasives.mli,v 1.93 2003/09/04 12:44:48 doligez Exp $ *)
cvsextras be41c84
+(* $Id: pervasives.mli,v 1.94 2003/10/08 13:13:33 weis Exp $ *)
cvsextras be41c84
 
cvsextras be41c84
 (** The initially opened module.
cvsextras be41c84
 
cvsextras be41c84
@@ -800,7 +800,7 @@
cvsextras be41c84
 
cvsextras be41c84
 external string_of_format :
cvsextras be41c84
   ('a, 'b, 'c, 'd) format4 -> string = "%identity"
cvsextras be41c84
-(** Converts a format string into a string.*)
cvsextras be41c84
+(** Converts a format string into a string. *)
cvsextras be41c84
 external format_of_string :
cvsextras be41c84
   ('a, 'b, 'c, 'd) format4 -> ('a, 'b, 'c, 'd) format4 = "%identity"
cvsextras be41c84
 (** [format_of_string s] returns a format string read from the string
cvsextras be41c84
Index: csl/stdlib/sys.ml
cvsextras be41c84
diff -u csl/stdlib/sys.ml:1.78 csl/stdlib/sys.ml:1.80
cvsextras be41c84
--- csl/stdlib/sys.ml:1.78	Fri Sep 12 09:46:23 2003
cvsextras be41c84
+++ csl/stdlib/sys.ml	Mon Oct 13 09:39:46 2003
cvsextras be41c84
@@ -11,7 +11,7 @@
cvsextras be41c84
 (*                                                                     *)
cvsextras be41c84
 (***********************************************************************)
cvsextras be41c84
 
cvsextras be41c84
-(* $Id: sys.ml,v 1.78 2003/09/12 07:46:23 xleroy Exp $ *)
cvsextras be41c84
+(* $Id: sys.ml,v 1.80 2003/10/13 07:39:46 xleroy Exp $ *)
cvsextras be41c84
 
cvsextras be41c84
 (* System interface *)
cvsextras be41c84
 
cvsextras be41c84
@@ -78,4 +78,4 @@
cvsextras be41c84
 
cvsextras be41c84
 (* OCaml version string, must be in the format described in sys.mli. *)
cvsextras be41c84
 
cvsextras be41c84
-let ocaml_version = "3.07";;
cvsextras be41c84
+let ocaml_version = "3.07+2";;