[ocaml-camlp5] Rebase to 6.12 prerelease which supports OCaml 4.02.
Richard W.M. Jones
rjones at fedoraproject.org
Fri Aug 1 09:33:16 UTC 2014
commit c6e3b00a580b5b070e306cb5f5d1473df43e3d49
Author: Richard W.M. Jones <rjones at redhat.com>
Date: Fri Aug 1 10:29:37 2014 +0100
Rebase to 6.12 prerelease which supports OCaml 4.02.
- OCaml 4.02.0 beta rebuild.
- New source URL.
camlp5-6.12-63a8c30f.patch |20986 ++++++++++++++++++++++++++++++++++++++++++++
ocaml-camlp5.spec | 22 +-
2 files changed, 21001 insertions(+), 7 deletions(-)
---
diff --git a/camlp5-6.12-63a8c30f.patch b/camlp5-6.12-63a8c30f.patch
new file mode 100644
index 0000000..1820949
--- /dev/null
+++ b/camlp5-6.12-63a8c30f.patch
@@ -0,0 +1,20986 @@
+diff -urN camlp5-6.11/boot/.cvsignore camlp5-6.12-63a8c30f/boot/.cvsignore
+--- camlp5-6.11/boot/.cvsignore 2010-09-15 17:00:18.000000000 +0100
++++ camlp5-6.12-63a8c30f/boot/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1,5 +0,0 @@
+-*.cm[oia]
+-camlp5
+-camlp5o
+-camlp5r
+-SAVED
+diff -urN camlp5-6.11/boot/.gitignore camlp5-6.12-63a8c30f/boot/.gitignore
+--- camlp5-6.11/boot/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/boot/.gitignore 2014-08-01 10:14:54.283065418 +0100
+@@ -0,0 +1,5 @@
++*.cm[oia]
++camlp5
++camlp5o
++camlp5r
++SAVED
+diff -urN camlp5-6.11/CHANGES camlp5-6.12-63a8c30f/CHANGES
+--- camlp5-6.11/CHANGES 2013-07-22 10:53:23.000000000 +0100
++++ camlp5-6.12-63a8c30f/CHANGES 2014-08-01 10:14:54.283065418 +0100
+@@ -1,3 +1,17 @@
++Camlp5 Version 6.12:
++--------------------
++
++* [17 Apr 14] Updated for ocaml trunk (4.02.0) svn rev 14621.
++* [14 Apr 14] Updated for ocaml version 4.01.1.
++* [19 Dec 13] Dummy line numbers are now 1 instead of -1 to prevent
++ errors that sometimes happen later at assembling phase.
++* [19 Dec 13] Fixed problem in top/Makefile when OCLIBDIR contains spaces.
++* [06 Sep 13] Added flag Grammar.utf8_print to print grammars entries
++ (with Grammar.Entry.print) displaying strings in utf-8 (default: True).
++ Usefull e.g. for Coq in command 'Print Grammar constr' when using utf8.
++* [27 Aug 13] Fixed bug in normal syntax: "let f { x } = ...", "{ x }"
++ and "let open ..." were refused.
++
+ Camlp5 Version 6.11:
+ --------------------
+
+diff -urN camlp5-6.11/compile/comp_head.ml.tpl camlp5-6.12-63a8c30f/compile/comp_head.ml.tpl
+--- camlp5-6.11/compile/comp_head.ml.tpl 2012-01-09 14:22:19.000000000 +0000
++++ camlp5-6.12-63a8c30f/compile/comp_head.ml.tpl 2014-08-01 10:14:54.284065419 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: comp_head.ml.tpl,v 6.5 2012-01-09 14:22:19 deraugla Exp $ *)
++(* comp_head.ml.tpl,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #load "q_MLast.cmo";
+diff -urN camlp5-6.11/compile/compile.ml camlp5-6.12-63a8c30f/compile/compile.ml
+--- camlp5-6.11/compile/compile.ml 2012-01-09 14:22:20.000000000 +0000
++++ camlp5-6.12-63a8c30f/compile/compile.ml 2014-08-01 10:14:54.284065419 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: compile.ml,v 6.6 2012-01-09 14:22:20 deraugla Exp $ *)
++(* compile.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #load "q_MLast.cmo";
+diff -urN camlp5-6.11/compile/.cvsignore camlp5-6.12-63a8c30f/compile/.cvsignore
+--- camlp5-6.11/compile/.cvsignore 2010-09-15 17:00:18.000000000 +0100
++++ camlp5-6.12-63a8c30f/compile/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1,7 +0,0 @@
+-*.cm[oix]
+-*.fast
+-*.fast.opt
+-o_fast.ml.tmp
+-r_fast.ml.tmp
+-pa_o_fast.ml
+-pa_r_fast.ml
+diff -urN camlp5-6.11/compile/.gitignore camlp5-6.12-63a8c30f/compile/.gitignore
+--- camlp5-6.11/compile/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/compile/.gitignore 2014-08-01 10:14:54.283065418 +0100
+@@ -0,0 +1,7 @@
++*.cm[oix]
++*.fast
++*.fast.opt
++o_fast.ml.tmp
++r_fast.ml.tmp
++pa_o_fast.ml
++pa_r_fast.ml
+diff -urN camlp5-6.11/compile/Makefile camlp5-6.12-63a8c30f/compile/Makefile
+--- camlp5-6.11/compile/Makefile 2012-03-07 08:55:31.000000000 +0000
++++ camlp5-6.12-63a8c30f/compile/Makefile 2014-08-01 10:14:54.283065418 +0100
+@@ -1,4 +1,4 @@
+-# $Id: Makefile,v 6.6 2012-03-07 08:55:31 deraugla Exp $
++# Makefile,v
+
+ TOP=..
+ include ../config/Makefile
+diff -urN camlp5-6.11/config/.cvsignore camlp5-6.12-63a8c30f/config/.cvsignore
+--- camlp5-6.11/config/.cvsignore 2010-09-15 17:00:18.000000000 +0100
++++ camlp5-6.12-63a8c30f/config/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1,2 +0,0 @@
+-Makefile.cnf
+-Makefile
+diff -urN camlp5-6.11/config/.gitignore camlp5-6.12-63a8c30f/config/.gitignore
+--- camlp5-6.11/config/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/config/.gitignore 2014-08-01 10:14:54.284065419 +0100
+@@ -0,0 +1,2 @@
++Makefile.cnf
++Makefile
+diff -urN camlp5-6.11/config/Makefile.tpl camlp5-6.12-63a8c30f/config/Makefile.tpl
+--- camlp5-6.11/config/Makefile.tpl 2012-03-02 18:49:56.000000000 +0000
++++ camlp5-6.12-63a8c30f/config/Makefile.tpl 2014-08-01 10:14:54.284065419 +0100
+@@ -1,4 +1,4 @@
+-# $Id: Makefile.tpl,v 6.4 2012-03-02 18:49:56 deraugla Exp $
++# Makefile.tpl,v
+
+ CAMLP5_COMM=OPT=$(OPT) EXE=$(EXE) OCAMLN=$(OCAMLN) MODE=$(MODE) COMPWITH=$(COMPWITH) CAMLP5N=$(CAMLP5N) ../tools/camlp5_comm.sh
+ OCAMLC=@OPT=$(OPT) EXE=$(EXE) OCAMLN=$(OCAMLN) ../tools/ocamlc.sh
+diff -urN camlp5-6.11/configure camlp5-6.12-63a8c30f/configure
+--- camlp5-6.11/configure 2012-07-01 02:27:07.000000000 +0100
++++ camlp5-6.12-63a8c30f/configure 2014-08-01 10:14:54.284065419 +0100
+@@ -1,5 +1,5 @@
+ #!/bin/sh
+-# $Id: configure,v 6.16 2012-07-01 01:27:07 deraugla Exp $
++# configure,v
+
+ prefix=''
+ bindir=''
+diff -urN camlp5-6.11/.cvsignore camlp5-6.12-63a8c30f/.cvsignore
+--- camlp5-6.11/.cvsignore 2010-09-15 17:00:18.000000000 +0100
++++ camlp5-6.12-63a8c30f/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-myconfig
+diff -urN camlp5-6.11/doc/.cvsignore camlp5-6.12-63a8c30f/doc/.cvsignore
+--- camlp5-6.11/doc/.cvsignore 2010-09-15 17:00:19.000000000 +0100
++++ camlp5-6.12-63a8c30f/doc/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1,6 +0,0 @@
+-*.aux
+-*.bbl
+-*.blg
+-*.dvi
+-*.log
+-*.toc
+diff -urN camlp5-6.11/doc/.gitignore camlp5-6.12-63a8c30f/doc/.gitignore
+--- camlp5-6.11/doc/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/doc/.gitignore 2014-08-01 10:14:54.284065419 +0100
+@@ -0,0 +1,6 @@
++*.aux
++*.bbl
++*.blg
++*.dvi
++*.log
++*.toc
+diff -urN camlp5-6.11/doc/html/.cvsignore camlp5-6.12-63a8c30f/doc/html/.cvsignore
+--- camlp5-6.11/doc/html/.cvsignore 2010-09-15 17:00:19.000000000 +0100
++++ camlp5-6.12-63a8c30f/doc/html/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1,2 +0,0 @@
+-*.html
+-rss
+diff -urN camlp5-6.11/doc/html/.gitignore camlp5-6.12-63a8c30f/doc/html/.gitignore
+--- camlp5-6.11/doc/html/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/doc/html/.gitignore 2014-08-01 10:14:54.284065419 +0100
+@@ -0,0 +1,2 @@
++*.html
++rss
+Binary files camlp5-6.11/doc/html/images/valid-xhtml11.png and camlp5-6.12-63a8c30f/doc/html/images/valid-xhtml11.png differ
+diff -urN camlp5-6.11/doc/html/styles/base.css camlp5-6.12-63a8c30f/doc/html/styles/base.css
+--- camlp5-6.11/doc/html/styles/base.css 2010-09-15 17:00:19.000000000 +0100
++++ camlp5-6.12-63a8c30f/doc/html/styles/base.css 2014-08-01 10:14:54.284065419 +0100
+@@ -1,4 +1,4 @@
+-/* $Id: base.css,v 6.1 2010-09-15 16:00:19 deraugla Exp $ */
++/* base.css,v */
+
+ body { margin: 0 0 1px 0; background-color: rgb(189,225,255) }
+ body { border: 0 }
+diff -urN camlp5-6.11/doc/htmlp/about.html camlp5-6.12-63a8c30f/doc/htmlp/about.html
+--- camlp5-6.11/doc/htmlp/about.html 2012-01-09 14:22:20.000000000 +0000
++++ camlp5-6.12-63a8c30f/doc/htmlp/about.html 2014-08-01 10:14:54.285065419 +0100
+@@ -2,7 +2,7 @@
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+- <!-- $Id: about.html,v 6.3 2012-01-09 14:22:20 deraugla Exp $ -->
++ <!-- about.html,v -->
+ <!-- Copyright (c) INRIA 2007-2012 -->
+ <title>About Camlp5</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+diff -urN camlp5-6.11/doc/htmlp/ast_strict.html camlp5-6.12-63a8c30f/doc/htmlp/ast_strict.html
+--- camlp5-6.11/doc/htmlp/ast_strict.html 2012-01-09 14:22:20.000000000 +0000
++++ camlp5-6.12-63a8c30f/doc/htmlp/ast_strict.html 2014-08-01 10:14:54.285065419 +0100
+@@ -2,7 +2,7 @@
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+- <!-- $Id: ast_strict.html,v 6.15 2012-01-09 14:22:20 deraugla Exp $ -->
++ <!-- ast_strict.html,v -->
+ <!-- Copyright (c) INRIA 2007-2012 -->
+ <title>AST - strict</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+diff -urN camlp5-6.11/doc/htmlp/ast_transi.html camlp5-6.12-63a8c30f/doc/htmlp/ast_transi.html
+--- camlp5-6.11/doc/htmlp/ast_transi.html 2012-01-09 14:22:20.000000000 +0000
++++ camlp5-6.12-63a8c30f/doc/htmlp/ast_transi.html 2014-08-01 10:14:54.286065420 +0100
+@@ -2,7 +2,7 @@
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+- <!-- $Id: ast_transi.html,v 6.32 2012-01-09 14:22:20 deraugla Exp $ -->
++ <!-- ast_transi.html,v -->
+ <!-- Copyright (c) INRIA 2007-2012 -->
+ <title>AST - transitional</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+diff -urN camlp5-6.11/doc/htmlp/bparsers.html camlp5-6.12-63a8c30f/doc/htmlp/bparsers.html
+--- camlp5-6.11/doc/htmlp/bparsers.html 2012-01-09 14:22:20.000000000 +0000
++++ camlp5-6.12-63a8c30f/doc/htmlp/bparsers.html 2014-08-01 10:14:54.286065420 +0100
+@@ -2,7 +2,7 @@
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+- <!-- $Id: bparsers.html,v 6.3 2012-01-09 14:22:20 deraugla Exp $ -->
++ <!-- bparsers.html,v -->
+ <!-- Copyright (c) INRIA 2007-2012 -->
+ <title>backtracking parsers</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+diff -urN camlp5-6.11/doc/htmlp/commands.html camlp5-6.12-63a8c30f/doc/htmlp/commands.html
+--- camlp5-6.11/doc/htmlp/commands.html 2012-01-09 14:22:20.000000000 +0000
++++ camlp5-6.12-63a8c30f/doc/htmlp/commands.html 2014-08-01 10:14:54.286065420 +0100
+@@ -2,7 +2,7 @@
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+- <!-- $Id: commands.html,v 6.3 2012-01-09 14:22:20 deraugla Exp $ -->
++ <!-- commands.html,v -->
+ <!-- Copyright (c) INRIA 2007-2012 -->
+ <title>Commands and Files</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+diff -urN camlp5-6.11/doc/htmlp/conclusion.html camlp5-6.12-63a8c30f/doc/htmlp/conclusion.html
+--- camlp5-6.11/doc/htmlp/conclusion.html 2012-01-09 14:22:20.000000000 +0000
++++ camlp5-6.12-63a8c30f/doc/htmlp/conclusion.html 2014-08-01 10:14:54.286065420 +0100
+@@ -2,7 +2,7 @@
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+- <!-- $Id: conclusion.html,v 6.3 2012-01-09 14:22:20 deraugla Exp $ -->
++ <!-- conclusion.html,v -->
+ <!-- Copyright (c) INRIA 2007-2012 -->
+ <title>Conclusion</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+diff -urN camlp5-6.11/doc/htmlp/.cvsignore camlp5-6.12-63a8c30f/doc/htmlp/.cvsignore
+--- camlp5-6.11/doc/htmlp/.cvsignore 2010-09-15 17:00:19.000000000 +0100
++++ camlp5-6.12-63a8c30f/doc/htmlp/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1,9 +0,0 @@
+-camlp5.aux
+-camlp5.dvi
+-camlp5.info*
+-camlp5.log
+-camlp5.pdf
+-camlp5.ps
+-camlp5.tex
+-camlp5.texi
+-camlp5.toc
+diff -urN camlp5-6.11/doc/htmlp/directives.html camlp5-6.12-63a8c30f/doc/htmlp/directives.html
+--- camlp5-6.11/doc/htmlp/directives.html 2012-01-09 14:22:20.000000000 +0000
++++ camlp5-6.12-63a8c30f/doc/htmlp/directives.html 2014-08-01 10:14:54.286065420 +0100
+@@ -2,7 +2,7 @@
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+- <!-- $Id: directives.html,v 6.3 2012-01-09 14:22:20 deraugla Exp $ -->
++ <!-- directives.html,v -->
+ <!-- Copyright (c) INRIA 2007-2012 -->
+ <title>Directives</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+diff -urN camlp5-6.11/doc/htmlp/extfun.html camlp5-6.12-63a8c30f/doc/htmlp/extfun.html
+--- camlp5-6.11/doc/htmlp/extfun.html 2012-01-09 14:22:20.000000000 +0000
++++ camlp5-6.12-63a8c30f/doc/htmlp/extfun.html 2014-08-01 10:14:54.286065420 +0100
+@@ -2,7 +2,7 @@
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+- <!-- $Id: extfun.html,v 6.3 2012-01-09 14:22:20 deraugla Exp $ -->
++ <!-- extfun.html,v -->
+ <!-- Copyright (c) INRIA 2007-2012 -->
+ <title>Extensible functions</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+diff -urN camlp5-6.11/doc/htmlp/fparsers.html camlp5-6.12-63a8c30f/doc/htmlp/fparsers.html
+--- camlp5-6.11/doc/htmlp/fparsers.html 2012-01-09 14:22:20.000000000 +0000
++++ camlp5-6.12-63a8c30f/doc/htmlp/fparsers.html 2014-08-01 10:14:54.286065420 +0100
+@@ -2,7 +2,7 @@
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+- <!-- $Id: fparsers.html,v 6.3 2012-01-09 14:22:20 deraugla Exp $ -->
++ <!-- fparsers.html,v -->
+ <!-- Copyright (c) INRIA 2007-2012 -->
+ <title>functional parsers</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+diff -urN camlp5-6.11/doc/htmlp/.gitignore camlp5-6.12-63a8c30f/doc/htmlp/.gitignore
+--- camlp5-6.11/doc/htmlp/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/doc/htmlp/.gitignore 2014-08-01 10:14:54.284065419 +0100
+@@ -0,0 +1,9 @@
++camlp5.aux
++camlp5.dvi
++camlp5.info*
++camlp5.log
++camlp5.pdf
++camlp5.ps
++camlp5.tex
++camlp5.texi
++camlp5.toc
+diff -urN camlp5-6.11/doc/htmlp/grammars.html camlp5-6.12-63a8c30f/doc/htmlp/grammars.html
+--- camlp5-6.11/doc/htmlp/grammars.html 2012-01-09 14:22:20.000000000 +0000
++++ camlp5-6.12-63a8c30f/doc/htmlp/grammars.html 2014-08-01 10:14:54.287065420 +0100
+@@ -2,7 +2,7 @@
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+- <!-- $Id: grammars.html,v 6.4 2012-01-09 14:22:20 deraugla Exp $ -->
++ <!-- grammars.html,v -->
+ <!-- Copyright (c) INRIA 2007-2012 -->
+ <title>extensible grammars</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+diff -urN camlp5-6.11/doc/htmlp/html2latex camlp5-6.12-63a8c30f/doc/htmlp/html2latex
+--- camlp5-6.11/doc/htmlp/html2latex 2012-01-09 14:22:20.000000000 +0000
++++ camlp5-6.12-63a8c30f/doc/htmlp/html2latex 2014-08-01 10:14:54.287065420 +0100
+@@ -1,5 +1,5 @@
+ #!/bin/sh
+-# $Id: html2latex,v 6.4 2012-01-09 14:22:20 deraugla Exp $
++# html2latex,v
+
+ FILES1="index.html strict.html ptools.html"
+ FILES2="parsers.html lexers.html fparsers.html bparsers.html grammars.html"
+diff -urN camlp5-6.11/doc/htmlp/html2texi camlp5-6.12-63a8c30f/doc/htmlp/html2texi
+--- camlp5-6.11/doc/htmlp/html2texi 2010-09-15 17:00:19.000000000 +0100
++++ camlp5-6.12-63a8c30f/doc/htmlp/html2texi 2014-08-01 10:14:54.287065420 +0100
+@@ -1,5 +1,5 @@
+ #!/bin/sh
+-# $Id: html2texi,v 6.1 2010-09-15 16:00:19 deraugla Exp $
++# html2texi,v
+
+ FILES1="index.html strict.html ptools.html"
+ FILES2="parsers.html lexers.html fparsers.html bparsers.html grammars.html"
+diff -urN camlp5-6.11/doc/htmlp/htmlp2html camlp5-6.12-63a8c30f/doc/htmlp/htmlp2html
+--- camlp5-6.11/doc/htmlp/htmlp2html 2010-09-15 17:00:19.000000000 +0100
++++ camlp5-6.12-63a8c30f/doc/htmlp/htmlp2html 2014-08-01 10:14:54.287065420 +0100
+@@ -1,5 +1,5 @@
+ #!/bin/sh
+-# $Id: htmlp2html,v 6.1 2010-09-15 16:00:19 deraugla Exp $
++# htmlp2html,v
+
+ FILE=$1
+ VERSION="$(grep "value version =" ../../main/pcaml.ml | sed -e 's/^[^"]*"\([^"]*\).*$/\1/')"
+diff -urN camlp5-6.11/doc/htmlp/index.html camlp5-6.12-63a8c30f/doc/htmlp/index.html
+--- camlp5-6.11/doc/htmlp/index.html 2012-01-09 14:22:20.000000000 +0000
++++ camlp5-6.12-63a8c30f/doc/htmlp/index.html 2014-08-01 10:14:54.287065420 +0100
+@@ -2,7 +2,7 @@
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+- <!-- $Id: index.html,v 6.3 2012-01-09 14:22:20 deraugla Exp $ -->
++ <!-- index.html,v -->
+ <!-- Copyright (c) INRIA 2007-2012 -->
+ <title>Camlp5</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+diff -urN camlp5-6.11/doc/htmlp/lexers.html camlp5-6.12-63a8c30f/doc/htmlp/lexers.html
+--- camlp5-6.11/doc/htmlp/lexers.html 2012-01-09 14:22:20.000000000 +0000
++++ camlp5-6.12-63a8c30f/doc/htmlp/lexers.html 2014-08-01 10:14:54.287065420 +0100
+@@ -2,7 +2,7 @@
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+- <!-- $Id: lexers.html,v 6.4 2012-01-09 14:22:20 deraugla Exp $ -->
++ <!-- lexers.html,v -->
+ <!-- Copyright (c) INRIA 2007-2012 -->
+ <title>lexers</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+diff -urN camlp5-6.11/doc/htmlp/library.html camlp5-6.12-63a8c30f/doc/htmlp/library.html
+--- camlp5-6.11/doc/htmlp/library.html 2013-01-28 09:27:12.000000000 +0000
++++ camlp5-6.12-63a8c30f/doc/htmlp/library.html 2014-08-01 10:14:54.287065420 +0100
+@@ -2,7 +2,7 @@
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+- <!-- $Id: library.html,v 6.5 2013-01-28 09:27:12 deraugla Exp $ -->
++ <!-- library.html,v -->
+ <!-- Copyright (c) INRIA 2007-2012 -->
+ <title>Library</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+diff -urN camlp5-6.11/doc/htmlp/locations.html camlp5-6.12-63a8c30f/doc/htmlp/locations.html
+--- camlp5-6.11/doc/htmlp/locations.html 2012-01-09 14:22:20.000000000 +0000
++++ camlp5-6.12-63a8c30f/doc/htmlp/locations.html 2014-08-01 10:14:54.287065420 +0100
+@@ -2,7 +2,7 @@
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+- <!-- $Id: locations.html,v 6.3 2012-01-09 14:22:20 deraugla Exp $ -->
++ <!-- locations.html,v -->
+ <!-- Copyright (c) INRIA 2007-2012 -->
+ <title>Locations</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+diff -urN camlp5-6.11/doc/htmlp/macros.html camlp5-6.12-63a8c30f/doc/htmlp/macros.html
+--- camlp5-6.11/doc/htmlp/macros.html 2012-01-09 14:22:20.000000000 +0000
++++ camlp5-6.12-63a8c30f/doc/htmlp/macros.html 2014-08-01 10:14:54.288065421 +0100
+@@ -2,7 +2,7 @@
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+- <!-- $Id: macros.html,v 6.3 2012-01-09 14:22:20 deraugla Exp $ -->
++ <!-- macros.html,v -->
+ <!-- Copyright (c) INRIA 2007-2012 -->
+ <title>macros</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+diff -urN camlp5-6.11/doc/htmlp/Makefile camlp5-6.12-63a8c30f/doc/htmlp/Makefile
+--- camlp5-6.11/doc/htmlp/Makefile 2010-09-29 03:32:05.000000000 +0100
++++ camlp5-6.12-63a8c30f/doc/htmlp/Makefile 2014-08-01 10:14:54.285065419 +0100
+@@ -1,4 +1,4 @@
+-# $Id: Makefile,v 6.2 2010-09-29 02:32:05 deraugla Exp $
++# Makefile,v
+
+ H=../html
+ OBJS=$H/index.html $H/about.html $H/ast_strict.html $H/ast_transi.html $H/bparsers.html $H/commands.html $H/conclusion.html $H/directives.html $H/extfun.html $H/fparsers.html $H/grammars.html $H/lexers.html $H/library.html $H/locations.html $H/macros.html $H/ml_ast.html $H/opretty.html $H/parsers.html $H/pcaml.html $H/pprintf.html $H/pragma.html $H/pretty.html $H/printers.html $H/ptools.html $H/q_ast.html $H/quot.html $H/redef.html $H/revsynt.html $H/scheme.html $H/sources.html $H/strict.html $H/syntext.html
+diff -urN camlp5-6.11/doc/htmlp/mkstri.sh camlp5-6.12-63a8c30f/doc/htmlp/mkstri.sh
+--- camlp5-6.11/doc/htmlp/mkstri.sh 2012-01-09 14:22:20.000000000 +0000
++++ camlp5-6.12-63a8c30f/doc/htmlp/mkstri.sh 2014-08-01 10:14:54.288065421 +0100
+@@ -1,5 +1,5 @@
+ #!/bin/sh
+-# $Id: mkstri.sh,v 6.16 2012-01-09 14:22:20 deraugla Exp $
++# mkstri.sh,v
+
+ top=../..
+ file=$top/test/quot_r.ml
+@@ -12,7 +12,7 @@
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+- <!-- $Id: mkstri.sh,v 6.16 2012-01-09 14:22:20 deraugla Exp $ -->
++ <!-- mkstri.sh,v -->
+ <!-- Copyright (c) INRIA 2007-2012 -->
+ <title>AST - strict</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+diff -urN camlp5-6.11/doc/htmlp/mktrans.sh camlp5-6.12-63a8c30f/doc/htmlp/mktrans.sh
+--- camlp5-6.11/doc/htmlp/mktrans.sh 2012-01-09 14:22:20.000000000 +0000
++++ camlp5-6.12-63a8c30f/doc/htmlp/mktrans.sh 2014-08-01 10:14:54.288065421 +0100
+@@ -1,5 +1,5 @@
+ #!/bin/sh
+-# $Id: mktrans.sh,v 6.17 2012-01-09 14:22:20 deraugla Exp $
++# mktrans.sh,v
+
+ top=../..
+ file=$top/test/quot_r.ml
+@@ -12,7 +12,7 @@
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+- <!-- $Id: mktrans.sh,v 6.17 2012-01-09 14:22:20 deraugla Exp $ -->
++ <!-- mktrans.sh,v -->
+ <!-- Copyright (c) INRIA 2007-2012 -->
+ <title>AST - transitional</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+diff -urN camlp5-6.11/doc/htmlp/ml_ast.html camlp5-6.12-63a8c30f/doc/htmlp/ml_ast.html
+--- camlp5-6.11/doc/htmlp/ml_ast.html 2012-01-09 14:22:20.000000000 +0000
++++ camlp5-6.12-63a8c30f/doc/htmlp/ml_ast.html 2014-08-01 10:14:54.288065421 +0100
+@@ -2,7 +2,7 @@
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+- <!-- $Id: ml_ast.html,v 6.3 2012-01-09 14:22:20 deraugla Exp $ -->
++ <!-- ml_ast.html,v -->
+ <!-- Copyright (c) INRIA 2007-2012 -->
+ <title>Abstract tree in concrete syntax</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+diff -urN camlp5-6.11/doc/htmlp/opretty.html camlp5-6.12-63a8c30f/doc/htmlp/opretty.html
+--- camlp5-6.11/doc/htmlp/opretty.html 2012-01-09 14:22:20.000000000 +0000
++++ camlp5-6.12-63a8c30f/doc/htmlp/opretty.html 2014-08-01 10:14:54.288065421 +0100
+@@ -2,7 +2,7 @@
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+- <!-- $Id: opretty.html,v 6.3 2012-01-09 14:22:20 deraugla Exp $ -->
++ <!-- opretty.html,v -->
+ <!-- Copyright (c) INRIA 2007-2012 -->
+ <title>Extensions of printing</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+diff -urN camlp5-6.11/doc/htmlp/parsers.html camlp5-6.12-63a8c30f/doc/htmlp/parsers.html
+--- camlp5-6.11/doc/htmlp/parsers.html 2012-01-09 14:22:20.000000000 +0000
++++ camlp5-6.12-63a8c30f/doc/htmlp/parsers.html 2014-08-01 10:14:54.288065421 +0100
+@@ -2,7 +2,7 @@
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+- <!-- $Id: parsers.html,v 6.4 2012-01-09 14:22:20 deraugla Exp $ -->
++ <!-- parsers.html,v -->
+ <!-- Copyright (c) INRIA 2007-2012 -->
+ <title>parsers</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+diff -urN camlp5-6.11/doc/htmlp/pcaml.html camlp5-6.12-63a8c30f/doc/htmlp/pcaml.html
+--- camlp5-6.11/doc/htmlp/pcaml.html 2012-01-09 14:22:20.000000000 +0000
++++ camlp5-6.12-63a8c30f/doc/htmlp/pcaml.html 2014-08-01 10:14:54.288065421 +0100
+@@ -2,7 +2,7 @@
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+- <!-- $Id: pcaml.html,v 6.3 2012-01-09 14:22:20 deraugla Exp $ -->
++ <!-- pcaml.html,v -->
+ <!-- Copyright (c) INRIA 2007-2012 -->
+ <title>Pcaml</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+diff -urN camlp5-6.11/doc/htmlp/pprintf.html camlp5-6.12-63a8c30f/doc/htmlp/pprintf.html
+--- camlp5-6.11/doc/htmlp/pprintf.html 2012-01-09 14:22:20.000000000 +0000
++++ camlp5-6.12-63a8c30f/doc/htmlp/pprintf.html 2014-08-01 10:14:54.288065421 +0100
+@@ -2,7 +2,7 @@
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+- <!-- $Id: pprintf.html,v 6.3 2012-01-09 14:22:20 deraugla Exp $ -->
++ <!-- pprintf.html,v -->
+ <!-- Copyright (c) INRIA 2007-2012 -->
+ <title>pprintf</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+diff -urN camlp5-6.11/doc/htmlp/pragma.html camlp5-6.12-63a8c30f/doc/htmlp/pragma.html
+--- camlp5-6.11/doc/htmlp/pragma.html 2012-01-09 14:22:20.000000000 +0000
++++ camlp5-6.12-63a8c30f/doc/htmlp/pragma.html 2014-08-01 10:14:54.289065422 +0100
+@@ -2,7 +2,7 @@
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+- <!-- $Id: pragma.html,v 6.3 2012-01-09 14:22:20 deraugla Exp $ -->
++ <!-- pragma.html,v -->
+ <!-- Copyright (c) INRIA 2007-2012 -->
+ <title>pragma</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+diff -urN camlp5-6.11/doc/htmlp/pretty.html camlp5-6.12-63a8c30f/doc/htmlp/pretty.html
+--- camlp5-6.11/doc/htmlp/pretty.html 2012-01-09 14:22:20.000000000 +0000
++++ camlp5-6.12-63a8c30f/doc/htmlp/pretty.html 2014-08-01 10:14:54.289065422 +0100
+@@ -2,7 +2,7 @@
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+- <!-- $Id: pretty.html,v 6.5 2012-01-09 14:22:20 deraugla Exp $ -->
++ <!-- pretty.html,v -->
+ <!-- Copyright (c) INRIA 2007-2012 -->
+ <title>Pretty print</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+diff -urN camlp5-6.11/doc/htmlp/printers.html camlp5-6.12-63a8c30f/doc/htmlp/printers.html
+--- camlp5-6.11/doc/htmlp/printers.html 2012-01-09 14:22:20.000000000 +0000
++++ camlp5-6.12-63a8c30f/doc/htmlp/printers.html 2014-08-01 10:14:54.289065422 +0100
+@@ -2,7 +2,7 @@
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+- <!-- $Id: printers.html,v 6.3 2012-01-09 14:22:20 deraugla Exp $ -->
++ <!-- printers.html,v -->
+ <!-- Copyright (c) INRIA 2007-2012 -->
+ <title>extensible printers</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+diff -urN camlp5-6.11/doc/htmlp/ptools.html camlp5-6.12-63a8c30f/doc/htmlp/ptools.html
+--- camlp5-6.11/doc/htmlp/ptools.html 2012-01-09 14:22:20.000000000 +0000
++++ camlp5-6.12-63a8c30f/doc/htmlp/ptools.html 2014-08-01 10:14:54.289065422 +0100
+@@ -2,7 +2,7 @@
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+- <!-- $Id: ptools.html,v 6.3 2012-01-09 14:22:20 deraugla Exp $ -->
++ <!-- ptools.html,v -->
+ <!-- Copyright (c) INRIA 2007-2012 -->
+ <title>parsing and printing tools</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+diff -urN camlp5-6.11/doc/htmlp/q_ast.html camlp5-6.12-63a8c30f/doc/htmlp/q_ast.html
+--- camlp5-6.11/doc/htmlp/q_ast.html 2012-01-09 14:22:20.000000000 +0000
++++ camlp5-6.12-63a8c30f/doc/htmlp/q_ast.html 2014-08-01 10:14:54.289065422 +0100
+@@ -2,7 +2,7 @@
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+- <!-- $Id: q_ast.html,v 6.3 2012-01-09 14:22:20 deraugla Exp $ -->
++ <!-- q_ast.html,v -->
+ <!-- Copyright (c) INRIA 2007-2012 -->
+ <title>q_ast.cmo</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+diff -urN camlp5-6.11/doc/htmlp/quot.html camlp5-6.12-63a8c30f/doc/htmlp/quot.html
+--- camlp5-6.11/doc/htmlp/quot.html 2012-01-09 14:22:20.000000000 +0000
++++ camlp5-6.12-63a8c30f/doc/htmlp/quot.html 2014-08-01 10:14:54.289065422 +0100
+@@ -2,7 +2,7 @@
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+- <!-- $Id: quot.html,v 6.3 2012-01-09 14:22:20 deraugla Exp $ -->
++ <!-- quot.html,v -->
+ <!-- Copyright (c) INRIA 2007-2012 -->
+ <title>quotations</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+diff -urN camlp5-6.11/doc/htmlp/redef.html camlp5-6.12-63a8c30f/doc/htmlp/redef.html
+--- camlp5-6.11/doc/htmlp/redef.html 2010-09-15 17:00:20.000000000 +0100
++++ camlp5-6.12-63a8c30f/doc/htmlp/redef.html 2014-08-01 10:14:54.289065422 +0100
+@@ -2,7 +2,7 @@
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+- <!-- $Id: redef.html,v 6.1 2010-09-15 16:00:20 deraugla Exp $ -->
++ <!-- redef.html,v -->
+ <!-- Copyright (c) INRIA 2010 -->
+ <title>Redefining OCaml syntax</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+diff -urN camlp5-6.11/doc/htmlp/revsynt.html camlp5-6.12-63a8c30f/doc/htmlp/revsynt.html
+--- camlp5-6.11/doc/htmlp/revsynt.html 2012-01-09 14:22:20.000000000 +0000
++++ camlp5-6.12-63a8c30f/doc/htmlp/revsynt.html 2014-08-01 10:14:54.289065422 +0100
+@@ -2,7 +2,7 @@
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+- <!-- $Id: revsynt.html,v 6.3 2012-01-09 14:22:20 deraugla Exp $ -->
++ <!-- revsynt.html,v -->
+ <!-- Copyright (c) INRIA 2007-2012 -->
+ <title>revised syntax</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+diff -urN camlp5-6.11/doc/htmlp/scheme.html camlp5-6.12-63a8c30f/doc/htmlp/scheme.html
+--- camlp5-6.11/doc/htmlp/scheme.html 2012-01-09 14:22:20.000000000 +0000
++++ camlp5-6.12-63a8c30f/doc/htmlp/scheme.html 2014-08-01 10:14:54.289065422 +0100
+@@ -2,7 +2,7 @@
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+- <!-- $Id: scheme.html,v 6.3 2012-01-09 14:22:20 deraugla Exp $ -->
++ <!-- scheme.html,v -->
+ <!-- Copyright (c) INRIA 2007-2012 -->
+ <title>Scheme</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+diff -urN camlp5-6.11/doc/htmlp/sources.html camlp5-6.12-63a8c30f/doc/htmlp/sources.html
+--- camlp5-6.11/doc/htmlp/sources.html 2012-01-09 14:22:20.000000000 +0000
++++ camlp5-6.12-63a8c30f/doc/htmlp/sources.html 2014-08-01 10:14:54.290065422 +0100
+@@ -2,7 +2,7 @@
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+- <!-- $Id: sources.html,v 6.3 2012-01-09 14:22:20 deraugla Exp $ -->
++ <!-- sources.html,v -->
+ <!-- Copyright (c) INRIA 2007-2012 -->
+ <title>Camlp5 sources</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+diff -urN camlp5-6.11/doc/htmlp/strict.html camlp5-6.12-63a8c30f/doc/htmlp/strict.html
+--- camlp5-6.11/doc/htmlp/strict.html 2012-01-09 14:22:20.000000000 +0000
++++ camlp5-6.12-63a8c30f/doc/htmlp/strict.html 2014-08-01 10:14:54.290065422 +0100
+@@ -2,7 +2,7 @@
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+- <!-- $Id: strict.html,v 6.3 2012-01-09 14:22:20 deraugla Exp $ -->
++ <!-- strict.html,v -->
+ <!-- Copyright (c) INRIA 2007-2012 -->
+ <title>Camlp5</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+diff -urN camlp5-6.11/doc/htmlp/syntext.html camlp5-6.12-63a8c30f/doc/htmlp/syntext.html
+--- camlp5-6.11/doc/htmlp/syntext.html 2012-01-09 14:22:20.000000000 +0000
++++ camlp5-6.12-63a8c30f/doc/htmlp/syntext.html 2014-08-01 10:14:54.290065422 +0100
+@@ -2,7 +2,7 @@
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+- <!-- $Id: syntext.html,v 6.3 2012-01-09 14:22:20 deraugla Exp $ -->
++ <!-- syntext.html,v -->
+ <!-- Copyright (c) INRIA 2007-2012 -->
+ <title>Extensions of syntax</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+diff -urN camlp5-6.11/doc/htmlp/trailer.html camlp5-6.12-63a8c30f/doc/htmlp/trailer.html
+--- camlp5-6.11/doc/htmlp/trailer.html 2012-01-09 14:22:20.000000000 +0000
++++ camlp5-6.12-63a8c30f/doc/htmlp/trailer.html 2014-08-01 10:14:54.290065422 +0100
+@@ -5,7 +5,6 @@
+
+ <p class="bottom">
+ <a href="http://validator.w3.org/check?uri=referer"><img
+- src="images/valid-xhtml11.png" style="border:0"
+ alt="Valid XHTML 1.1" height="31" width="88" /></a>
+ </p>
+
+diff -urN camlp5-6.11/etc/.cvsignore camlp5-6.12-63a8c30f/etc/.cvsignore
+--- camlp5-6.11/etc/.cvsignore 2010-09-15 17:00:20.000000000 +0100
++++ camlp5-6.12-63a8c30f/etc/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1,7 +0,0 @@
+-*.cm[oiax]
+-camlp5o
+-camlp5sch
+-camlp5o.opt
+-mkcamlp5.sh
+-mkcamlp5.opt.sh
+-META
+diff -urN camlp5-6.11/etc/elexer.ml camlp5-6.12-63a8c30f/etc/elexer.ml
+--- camlp5-6.11/etc/elexer.ml 2012-01-09 14:22:20.000000000 +0000
++++ camlp5-6.12-63a8c30f/etc/elexer.ml 2014-08-01 10:14:54.290065422 +0100
+@@ -1,11 +1,13 @@
+ (* camlp5r *)
+-(* $Id: elexer.ml,v 6.3 2012-01-09 14:22:20 deraugla Exp $ *)
++(* elexer.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (* lexer written with extensible grammars; experimental *)
+
+ #load "pa_extend.cmo";
+
++open Versdep;
++
+ value lexlex cs = (cs, fun i -> Plexing.make_loc (i, i + 1));
+
+ value next_char s i =
+@@ -100,7 +102,7 @@
+ ;
+
+ value implode l =
+- let s = String.create (List.length l) in
++ let s = string_create (List.length l) in
+ loop 0 l where rec loop i =
+ fun
+ [ [c :: l] -> do { String.unsafe_set s i c; loop (i + 1) l }
+diff -urN camlp5-6.11/etc/.gitignore camlp5-6.12-63a8c30f/etc/.gitignore
+--- camlp5-6.11/etc/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/etc/.gitignore 2014-08-01 10:14:54.290065422 +0100
+@@ -0,0 +1,7 @@
++*.cm[oiax]
++camlp5o
++camlp5sch
++camlp5o.opt
++mkcamlp5.sh
++mkcamlp5.opt.sh
++META
+diff -urN camlp5-6.11/etc/lib.sml camlp5-6.12-63a8c30f/etc/lib.sml
+--- camlp5-6.11/etc/lib.sml 2010-09-15 17:00:21.000000000 +0100
++++ camlp5-6.12-63a8c30f/etc/lib.sml 2014-08-01 10:14:54.290065422 +0100
+@@ -1,4 +1,4 @@
+-(* $Id: lib.sml,v 6.1 2010-09-15 16:00:21 deraugla Exp $ *)
++(* lib.sml,v *)
+
+ datatype 'a option = SOME of 'a | NONE
+ exception Fail of string
+diff -urN camlp5-6.11/etc/Makefile camlp5-6.12-63a8c30f/etc/Makefile
+--- camlp5-6.11/etc/Makefile 2012-03-03 02:47:04.000000000 +0000
++++ camlp5-6.12-63a8c30f/etc/Makefile 2014-08-01 10:14:54.290065422 +0100
+@@ -1,4 +1,4 @@
+-# $Id: Makefile,v 6.7 2012-03-03 02:47:04 deraugla Exp $
++# Makefile,v
+
+ include ../config/Makefile
+
+diff -urN camlp5-6.11/etc/Makefile.withnew camlp5-6.12-63a8c30f/etc/Makefile.withnew
+--- camlp5-6.11/etc/Makefile.withnew 2010-09-15 17:00:21.000000000 +0100
++++ camlp5-6.12-63a8c30f/etc/Makefile.withnew 2014-08-01 10:14:54.290065422 +0100
+@@ -1,4 +1,4 @@
+-# $Id: Makefile.withnew,v 6.1 2010-09-15 16:00:21 deraugla Exp $
++# Makefile.withnew,v
+
+ include ../config/Makefile
+
+diff -urN camlp5-6.11/etc/mkcamlp5.opt.sh.tpl camlp5-6.12-63a8c30f/etc/mkcamlp5.opt.sh.tpl
+--- camlp5-6.11/etc/mkcamlp5.opt.sh.tpl 2012-03-03 02:47:04.000000000 +0000
++++ camlp5-6.12-63a8c30f/etc/mkcamlp5.opt.sh.tpl 2014-08-01 10:14:54.290065422 +0100
+@@ -1,5 +1,5 @@
+ #!/bin/sh
+-# $Id: mkcamlp5.opt.sh.tpl,v 6.2 2012-03-03 02:47:04 deraugla Exp $
++# mkcamlp5.opt.sh.tpl,v
+
+ OLIB=`OCAMLNc -where`
+ LIB=LIBDIR/CAMLP5N
+diff -urN camlp5-6.11/etc/mkcamlp5.sh.tpl camlp5-6.12-63a8c30f/etc/mkcamlp5.sh.tpl
+--- camlp5-6.11/etc/mkcamlp5.sh.tpl 2012-03-03 02:47:04.000000000 +0000
++++ camlp5-6.12-63a8c30f/etc/mkcamlp5.sh.tpl 2014-08-01 10:14:54.290065422 +0100
+@@ -1,5 +1,5 @@
+ #!/bin/sh
+-# $Id: mkcamlp5.sh.tpl,v 6.2 2012-03-03 02:47:04 deraugla Exp $
++# mkcamlp5.sh.tpl,v
+
+ OLIB=`OCAMLNc -where`
+ LIB=LIBDIR/CAMLP5N
+diff -urN camlp5-6.11/etc/pa_extfold.ml camlp5-6.12-63a8c30f/etc/pa_extfold.ml
+--- camlp5-6.11/etc/pa_extfold.ml 2010-09-15 17:00:21.000000000 +0100
++++ camlp5-6.12-63a8c30f/etc/pa_extfold.ml 2014-08-01 10:14:54.290065422 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: pa_extfold.ml,v 6.1 2010-09-15 16:00:21 deraugla Exp $ *)
++(* pa_extfold.ml,v *)
+
+ #load "pa_extend.cmo";
+ #load "q_MLast.cmo";
+diff -urN camlp5-6.11/etc/pa_extfun.ml camlp5-6.12-63a8c30f/etc/pa_extfun.ml
+--- camlp5-6.11/etc/pa_extfun.ml 2012-01-09 14:22:20.000000000 +0000
++++ camlp5-6.12-63a8c30f/etc/pa_extfun.ml 2014-08-01 10:14:54.291065423 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: pa_extfun.ml,v 6.3 2012-01-09 14:22:20 deraugla Exp $ *)
++(* pa_extfun.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #load "q_MLast.cmo";
+diff -urN camlp5-6.11/etc/pa_extprint.ml camlp5-6.12-63a8c30f/etc/pa_extprint.ml
+--- camlp5-6.11/etc/pa_extprint.ml 2012-01-09 14:22:20.000000000 +0000
++++ camlp5-6.12-63a8c30f/etc/pa_extprint.ml 2014-08-01 10:14:54.291065423 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: pa_extprint.ml,v 6.3 2012-01-09 14:22:20 deraugla Exp $ *)
++(* pa_extprint.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #load "pa_extend.cmo";
+diff -urN camlp5-6.11/etc/pa_lefteval.ml camlp5-6.12-63a8c30f/etc/pa_lefteval.ml
+--- camlp5-6.11/etc/pa_lefteval.ml 2013-07-02 17:12:43.000000000 +0100
++++ camlp5-6.12-63a8c30f/etc/pa_lefteval.ml 2014-08-01 10:14:54.291065423 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: pa_lefteval.ml,v 6.4 2013-07-02 16:12:43 deraugla Exp $ *)
++(* pa_lefteval.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #load "q_MLast.cmo";
+diff -urN camlp5-6.11/etc/pa_lex.ml camlp5-6.12-63a8c30f/etc/pa_lex.ml
+--- camlp5-6.11/etc/pa_lex.ml 2012-01-09 14:22:20.000000000 +0000
++++ camlp5-6.12-63a8c30f/etc/pa_lex.ml 2014-08-01 10:14:54.291065423 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: pa_lex.ml,v 6.3 2012-01-09 14:22:20 deraugla Exp $ *)
++(* pa_lex.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #load "pa_extend.cmo";
+diff -urN camlp5-6.11/etc/pa_lisp.ml camlp5-6.12-63a8c30f/etc/pa_lisp.ml
+--- camlp5-6.11/etc/pa_lisp.ml 2012-01-09 14:22:20.000000000 +0000
++++ camlp5-6.12-63a8c30f/etc/pa_lisp.ml 2014-08-01 10:14:54.291065423 +0100
+@@ -1,8 +1,9 @@
+ ;; camlp5 ./pa_lispr.cmo pa_extend.cmo q_MLast.cmo pr_dump.cmo
+-;; $Id: pa_lisp.ml,v 6.9 2012-01-09 14:22:20 deraugla Exp $
++;; pa_lisp.ml,v
+ ;; Copyright (c) INRIA 2007-2012
+
+ (open Pcaml)
++(open Versdep)
+
+ (type (choice 'a 'b) (sum (Left 'a) (Right 'b)))
+
+@@ -10,13 +11,13 @@
+
+ (module Buff
+ (struct
+- (value buff (ref (String.create 80)))
++ (value buff (ref (string_create 80)))
+ (value store (lambda (len x)
+ (if (>= len (String.length buff.val))
+ (:= buff.val
+ (^ buff.val
+- (String.create (String.length buff.val)))))
+- (:= ([] buff.val len) x)
++ (string_create (String.length buff.val)))))
++ (string_set buff.val len x)
+ (succ len)))
+ (value get (lambda len (String.sub buff.val 0 len)))))
+
+diff -urN camlp5-6.11/etc/pa_lispr.ml camlp5-6.12-63a8c30f/etc/pa_lispr.ml
+--- camlp5-6.11/etc/pa_lispr.ml 2013-05-20 06:56:33.000000000 +0100
++++ camlp5-6.12-63a8c30f/etc/pa_lispr.ml 2014-08-01 10:14:54.291065423 +0100
+@@ -1,8 +1,9 @@
+ (* camlp5 pa_r.cmo pa_rp.cmo pa_extend.cmo q_MLast.cmo pr_dump.cmo *)
+-(* File generated by pretty print; do not edit! *)
++(* pa_lisp.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Pcaml;
++open Versdep;
+
+ type choice α β =
+ [ Left of α
+@@ -13,12 +14,12 @@
+
+ module Buff =
+ struct
+- value buff = ref (String.create 80);
++ value buff = ref (string_create 80);
+ value store len x = do {
+ if len >= String.length buff.val then
+- buff.val := buff.val ^ String.create (String.length buff.val)
++ buff.val := buff.val ^ string_create (String.length buff.val)
+ else ();
+- buff.val.[len] := x;
++ string_set buff.val len x;
+ succ len
+ };
+ value get len = String.sub buff.val 0 len;
+diff -urN camlp5-6.11/etc/pa_mkast.ml camlp5-6.12-63a8c30f/etc/pa_mkast.ml
+--- camlp5-6.11/etc/pa_mkast.ml 2012-03-06 14:57:58.000000000 +0000
++++ camlp5-6.12-63a8c30f/etc/pa_mkast.ml 2014-08-01 10:14:54.291065423 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: pa_mkast.ml,v 6.5 2012-03-06 14:57:58 deraugla Exp $ *)
++(* pa_mkast.ml,v *)
+
+ (*
+ meta/camlp5r etc/pa_mkast.cmo etc/pr_r.cmo -impl main/mLast.mli
+diff -urN camlp5-6.11/etc/pa_mktest.ml camlp5-6.12-63a8c30f/etc/pa_mktest.ml
+--- camlp5-6.11/etc/pa_mktest.ml 2010-11-12 23:23:59.000000000 +0000
++++ camlp5-6.12-63a8c30f/etc/pa_mktest.ml 2014-08-01 10:14:54.291065423 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: pa_mktest.ml,v 6.15 2010-11-12 23:23:59 deraugla Exp $ *)
++(* pa_mktest.ml,v *)
+
+ (*
+ meta/camlp5r etc/pa_mktest.cmo etc/pr_r.cmo -flag D -impl main/mLast.mli
+diff -urN camlp5-6.11/etc/pa_o.ml camlp5-6.12-63a8c30f/etc/pa_o.ml
+--- camlp5-6.11/etc/pa_o.ml 2013-07-02 17:12:43.000000000 +0100
++++ camlp5-6.12-63a8c30f/etc/pa_o.ml 2014-08-01 10:14:54.292065424 +0100
+@@ -1,9 +1,10 @@
+-(* camlp5r pa_macro.cmo *)
+-(* $Id: pa_o.ml,v 6.50 2013-07-02 16:12:43 deraugla Exp $ *)
++(* camlp5r *)
++(* pa_o.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #load "pa_extend.cmo";
+ #load "q_MLast.cmo";
++#load "pa_macro.cmo";
+
+ open Pcaml;
+
+@@ -253,7 +254,7 @@
+ [ Some (("UIDENT", _) | ("LIDENT", _) | ("", ".")) ->
+ test (lev + 1) strm
+ | Some ("ANTIQUOT_LOC", _) -> ()
+- | Some ("", "=") -> ()
++ | Some ("", "=" | ";" | "}") -> ()
+ | _ -> raise Stream.Failure ])
+ ;
+
+@@ -356,6 +357,13 @@
+ Reloc.expr floc 0 e
+ ;
+
++value expr_of_patt p =
++ let loc = MLast.loc_of_patt p in
++ match p with
++ [ <:patt< $lid:x$ >> -> <:expr< $lid:x$ >>
++ | _ -> Ploc.raise loc (Stream.Error "identifier expected") ]
++;
++
+ EXTEND
+ GLOBAL: sig_item str_item ctyp patt expr module_type module_expr
+ signature structure class_type class_expr class_sig_item class_str_item
+@@ -525,6 +533,8 @@
+ | "let"; "module"; m = V UIDENT; mb = mod_fun_binding; "in";
+ e = expr LEVEL "top" ->
+ <:expr< let module $_uid:m$ = $mb$ in $e$ >>
++ | "let"; "open"; m = V UIDENT; "in"; e = expr LEVEL "top" ->
++ <:expr< $_uid:m$ . ($e$) >>
+ | "function"; OPT "|"; l = V (LIST1 match_case SEP "|") ->
+ <:expr< fun [ $_list:l$ ] >>
+ | "fun"; p = patt LEVEL "simple"; (eo, e) = fun_def ->
+@@ -697,7 +707,8 @@
+ | le = lbl_expr -> [le] ] ]
+ ;
+ lbl_expr:
+- [ [ i = patt_label_ident; "="; e = expr LEVEL "expr1" -> (i, e) ] ]
++ [ [ i = patt_label_ident; "="; e = expr LEVEL "expr1" -> (i, e)
++ | i = patt_label_ident -> (i, expr_of_patt i) ] ]
+ ;
+ expr1_semi_list:
+ [ [ el = LIST1 (expr LEVEL "expr1") SEP ";" OPT_SEP -> el ] ]
+@@ -817,6 +828,7 @@
+ ;
+ lbl_patt:
+ [ [ i = patt_label_ident; "="; p = patt -> (i, p)
++ | i = patt_label_ident -> (i, i)
+ | "_" -> (<:patt< _ >>, <:patt< _ >>) ] ]
+ ;
+ patt_label_ident:
+diff -urN camlp5-6.11/etc/pa_oop.ml camlp5-6.12-63a8c30f/etc/pa_oop.ml
+--- camlp5-6.11/etc/pa_oop.ml 2012-01-09 14:22:21.000000000 +0000
++++ camlp5-6.12-63a8c30f/etc/pa_oop.ml 2014-08-01 10:14:54.292065424 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: pa_oop.ml,v 6.3 2012-01-09 14:22:21 deraugla Exp $ *)
++(* pa_oop.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #load "pa_extend.cmo";
+diff -urN camlp5-6.11/etc/pa_op.ml camlp5-6.12-63a8c30f/etc/pa_op.ml
+--- camlp5-6.11/etc/pa_op.ml 2012-01-09 14:22:21.000000000 +0000
++++ camlp5-6.12-63a8c30f/etc/pa_op.ml 2014-08-01 10:14:54.292065424 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: pa_op.ml,v 6.3 2012-01-09 14:22:21 deraugla Exp $ *)
++(* pa_op.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #load "pa_extend.cmo";
+diff -urN camlp5-6.11/etc/pa_pprintf.ml camlp5-6.12-63a8c30f/etc/pa_pprintf.ml
+--- camlp5-6.11/etc/pa_pprintf.ml 2012-01-09 14:22:21.000000000 +0000
++++ camlp5-6.12-63a8c30f/etc/pa_pprintf.ml 2014-08-01 10:14:54.292065424 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: pa_pprintf.ml,v 6.4 2012-01-09 14:22:21 deraugla Exp $ *)
++(* pa_pprintf.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #load "pa_extend.cmo";
+@@ -7,6 +7,7 @@
+ #load "q_MLast.cmo";
+
+ open Pcaml;
++open Versdep;
+
+ (** Types and Functions for the [pprintf] statement *)
+
+@@ -33,10 +34,10 @@
+ ;
+
+ value implode l =
+- let s = String.create (List.length l) in
++ let s = string_create (List.length l) in
+ loop 0 l where rec loop i =
+ fun
+- [ [c :: l] -> do { String.set s i c; loop (i + 1) l }
++ [ [c :: l] -> do { string_set s i c; loop (i + 1) l }
+ | [] -> s ]
+ ;
+
+diff -urN camlp5-6.11/etc/pa_pragma.ml camlp5-6.12-63a8c30f/etc/pa_pragma.ml
+--- camlp5-6.11/etc/pa_pragma.ml 2012-01-09 14:22:21.000000000 +0000
++++ camlp5-6.12-63a8c30f/etc/pa_pragma.ml 2014-08-01 10:14:54.292065424 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: pa_pragma.ml,v 6.6 2012-01-09 14:22:21 deraugla Exp $ *)
++(* pa_pragma.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #load "pa_macro.cmo";
+@@ -999,7 +999,7 @@
+ ("String.set",
+ fun loc ->
+ {ctyp = <:ctyp< string -> int -> char -> unit >>;
+- expr = Obj.repr String.set;
++ expr = Obj.repr string_set;
+ patt = no_patt loc});
+ ("String.sub",
+ fun loc ->
+diff -urN camlp5-6.11/etc/pa_reloc.ml camlp5-6.12-63a8c30f/etc/pa_reloc.ml
+--- camlp5-6.11/etc/pa_reloc.ml 2012-03-06 14:57:58.000000000 +0000
++++ camlp5-6.12-63a8c30f/etc/pa_reloc.ml 2014-08-01 10:14:54.292065424 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: pa_reloc.ml,v 6.6 2012-03-06 14:57:58 deraugla Exp $ *)
++(* pa_reloc.ml,v *)
+
+ (*
+ meta/camlp5r etc/pa_reloc.cmo etc/pr_r.cmo -impl main/mLast.mli
+diff -urN camlp5-6.11/etc/pa_scheme.ml camlp5-6.12-63a8c30f/etc/pa_scheme.ml
+--- camlp5-6.11/etc/pa_scheme.ml 2013-07-02 17:12:43.000000000 +0100
++++ camlp5-6.12-63a8c30f/etc/pa_scheme.ml 2014-08-01 10:14:54.293065424 +0100
+@@ -1,9 +1,10 @@
+ ; camlp5 ./pa_schemer.cmo pa_extend.cmo q_MLast.cmo pr_dump.cmo
+-; $Id: pa_scheme.ml,v 6.10 2013-07-02 16:12:43 deraugla Exp $
++; pa_scheme.ml,v
+ ; Copyright (c) INRIA 2007-2012
+
+ (open Pcaml)
+ (open Exparser)
++(open Versdep)
+
+ (type (choice 'a 'b)
+ (sum
+@@ -14,12 +15,12 @@
+
+ (module Buff
+ (struct
+- (define buff (ref (String.create 80)))
++ (define buff (ref (string_create 80)))
+ (define (store len x)
+ (begin
+ (if (>= len (String.length buff.val))
+- (:= buff.val (^ buff.val (String.create (String.length buff.val)))))
+- (:= buff.val.[len] x)
++ (:= buff.val (^ buff.val (string_create (String.length buff.val)))))
++ (string_set buff.val len x)
+ (succ len)))
+ (define (mstore len s)
+ (letrec
+diff -urN camlp5-6.11/etc/pa_schemer.ml camlp5-6.12-63a8c30f/etc/pa_schemer.ml
+--- camlp5-6.11/etc/pa_schemer.ml 2013-07-02 17:12:43.000000000 +0100
++++ camlp5-6.12-63a8c30f/etc/pa_schemer.ml 2014-08-01 10:14:54.293065424 +0100
+@@ -1,9 +1,10 @@
+ (* camlp5 pa_r.cmo pa_rp.cmo pa_extend.cmo q_MLast.cmo pr_dump.cmo *)
+-(* File generated by pretty print; do not edit! *)
++(* pa_scheme.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Pcaml;
+ open Exparser;
++open Versdep;
+
+ type choice α β =
+ [ Left of α
+@@ -14,12 +15,12 @@
+
+ module Buff =
+ struct
+- value buff = ref (String.create 80);
++ value buff = ref (string_create 80);
+ value store len x = do {
+ if len >= String.length buff.val then
+- buff.val := buff.val ^ String.create (String.length buff.val)
++ buff.val := buff.val ^ string_create (String.length buff.val)
+ else ();
+- buff.val.[len] := x;
++ string_set buff.val len x;
+ succ len
+ };
+ value mstore len s =
+diff -urN camlp5-6.11/etc/pa_sml.ml camlp5-6.12-63a8c30f/etc/pa_sml.ml
+--- camlp5-6.11/etc/pa_sml.ml 2013-07-02 17:12:43.000000000 +0100
++++ camlp5-6.12-63a8c30f/etc/pa_sml.ml 2014-08-01 10:14:54.293065424 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: pa_sml.ml,v 6.7 2013-07-02 16:12:43 deraugla Exp $ *)
++(* pa_sml.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #load "pa_extend.cmo";
+diff -urN camlp5-6.11/etc/pr_depend.ml camlp5-6.12-63a8c30f/etc/pr_depend.ml
+--- camlp5-6.11/etc/pr_depend.ml 2013-07-02 17:12:43.000000000 +0100
++++ camlp5-6.12-63a8c30f/etc/pr_depend.ml 2014-08-01 10:14:54.293065424 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: pr_depend.ml,v 6.17 2013-07-02 16:12:43 deraugla Exp $ *)
++(* pr_depend.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #load "pa_macro.cmo";
+diff -urN camlp5-6.11/etc/pr_extend.ml camlp5-6.12-63a8c30f/etc/pr_extend.ml
+--- camlp5-6.11/etc/pr_extend.ml 2012-03-09 14:01:54.000000000 +0000
++++ camlp5-6.12-63a8c30f/etc/pr_extend.ml 2014-08-01 10:14:54.293065424 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: pr_extend.ml,v 6.5 2012-03-09 14:01:54 deraugla Exp $ *)
++(* pr_extend.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #directory ".";
+diff -urN camlp5-6.11/etc/pr_extfun.ml camlp5-6.12-63a8c30f/etc/pr_extfun.ml
+--- camlp5-6.11/etc/pr_extfun.ml 2012-01-09 14:22:21.000000000 +0000
++++ camlp5-6.12-63a8c30f/etc/pr_extfun.ml 2014-08-01 10:14:54.294065425 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: pr_extfun.ml,v 6.3 2012-01-09 14:22:21 deraugla Exp $ *)
++(* pr_extfun.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #directory ".";
+diff -urN camlp5-6.11/etc/pr_extprint.ml camlp5-6.12-63a8c30f/etc/pr_extprint.ml
+--- camlp5-6.11/etc/pr_extprint.ml 2012-01-09 14:22:21.000000000 +0000
++++ camlp5-6.12-63a8c30f/etc/pr_extprint.ml 2014-08-01 10:14:54.294065425 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: pr_extprint.ml,v 6.4 2012-01-09 14:22:21 deraugla Exp $ *)
++(* pr_extprint.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #directory ".";
+diff -urN camlp5-6.11/etc/pr_null.ml camlp5-6.12-63a8c30f/etc/pr_null.ml
+--- camlp5-6.11/etc/pr_null.ml 2012-01-09 14:22:21.000000000 +0000
++++ camlp5-6.12-63a8c30f/etc/pr_null.ml 2014-08-01 10:14:54.294065425 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: pr_null.ml,v 6.3 2012-01-09 14:22:21 deraugla Exp $ *)
++(* pr_null.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ Pcaml.print_interf.val := fun _ -> ();
+diff -urN camlp5-6.11/etc/pr_o.ml camlp5-6.12-63a8c30f/etc/pr_o.ml
+--- camlp5-6.11/etc/pr_o.ml 2013-07-02 17:12:43.000000000 +0100
++++ camlp5-6.12-63a8c30f/etc/pr_o.ml 2014-08-01 10:14:54.294065425 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: pr_o.ml,v 6.63 2013-07-02 16:12:43 deraugla Exp $ *)
++(* pr_o.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #directory ".";
+@@ -251,7 +251,7 @@
+ if i = String.length s then String.sub s 0 j
+ else if s.[i] = '_' then loop (i + 1) j
+ else do {
+- s.[j] := s.[i];
++ string_set s j s.[i];
+ loop (i + 1) (j + 1)
+ }
+ };
+diff -urN camlp5-6.11/etc/pr_op.ml camlp5-6.12-63a8c30f/etc/pr_op.ml
+--- camlp5-6.11/etc/pr_op.ml 2012-01-09 14:22:21.000000000 +0000
++++ camlp5-6.12-63a8c30f/etc/pr_op.ml 2014-08-01 10:14:54.294065425 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: pr_op.ml,v 6.3 2012-01-09 14:22:21 deraugla Exp $ *)
++(* pr_op.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #directory ".";
+diff -urN camlp5-6.11/etc/pr_r.ml camlp5-6.12-63a8c30f/etc/pr_r.ml
+--- camlp5-6.11/etc/pr_r.ml 2013-07-02 17:12:43.000000000 +0100
++++ camlp5-6.12-63a8c30f/etc/pr_r.ml 2014-08-01 10:14:54.295065425 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: pr_r.ml,v 6.79 2013-07-02 16:12:43 deraugla Exp $ *)
++(* pr_r.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #directory ".";
+diff -urN camlp5-6.11/etc/pr_ro.ml camlp5-6.12-63a8c30f/etc/pr_ro.ml
+--- camlp5-6.11/etc/pr_ro.ml 2012-03-09 12:43:14.000000000 +0000
++++ camlp5-6.12-63a8c30f/etc/pr_ro.ml 2014-08-01 10:14:54.295065425 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: pr_ro.ml,v 6.20 2012-03-09 12:43:14 deraugla Exp $ *)
++(* pr_ro.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #directory ".";
+diff -urN camlp5-6.11/etc/pr_rp.ml camlp5-6.12-63a8c30f/etc/pr_rp.ml
+--- camlp5-6.11/etc/pr_rp.ml 2013-03-15 16:17:17.000000000 +0000
++++ camlp5-6.12-63a8c30f/etc/pr_rp.ml 2014-08-01 10:14:54.295065425 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: pr_rp.ml,v 6.12 2013-03-15 16:17:17 deraugla Exp $ *)
++(* pr_rp.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #directory ".";
+diff -urN camlp5-6.11/etc/pr_scheme.ml camlp5-6.12-63a8c30f/etc/pr_scheme.ml
+--- camlp5-6.11/etc/pr_scheme.ml 2013-07-02 17:12:43.000000000 +0100
++++ camlp5-6.12-63a8c30f/etc/pr_scheme.ml 2014-08-01 10:14:54.296065426 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: pr_scheme.ml,v 6.9 2013-07-02 16:12:43 deraugla Exp $ *)
++(* pr_scheme.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #directory ".";
+@@ -1445,12 +1445,12 @@
+
+ module Buff =
+ struct
+- value buff = ref (String.create 80);
++ value buff = ref (string_create 80);
+ value store len x = do {
+ if len >= String.length buff.val then
+- buff.val := buff.val ^ String.create (String.length buff.val)
++ buff.val := buff.val ^ string_create (String.length buff.val)
+ else ();
+- buff.val.[len] := x;
++ string_set buff.val len x;
+ succ len
+ };
+ value mstore len s =
+diff -urN camlp5-6.11/etc/pr_schemep.ml camlp5-6.12-63a8c30f/etc/pr_schemep.ml
+--- camlp5-6.11/etc/pr_schemep.ml 2012-01-09 14:22:21.000000000 +0000
++++ camlp5-6.12-63a8c30f/etc/pr_schemep.ml 2014-08-01 10:14:54.296065426 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: pr_schemep.ml,v 6.3 2012-01-09 14:22:21 deraugla Exp $ *)
++(* pr_schemep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #directory ".";
+diff -urN camlp5-6.11/etc/q_phony.ml camlp5-6.12-63a8c30f/etc/q_phony.ml
+--- camlp5-6.11/etc/q_phony.ml 2012-01-09 14:22:21.000000000 +0000
++++ camlp5-6.12-63a8c30f/etc/q_phony.ml 2014-08-01 10:14:54.296065426 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: q_phony.ml,v 6.3 2012-01-09 14:22:21 deraugla Exp $ *)
++(* q_phony.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #directory ".";
+diff -urN camlp5-6.11/.gitignore camlp5-6.12-63a8c30f/.gitignore
+--- camlp5-6.11/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/.gitignore 2014-08-01 10:14:54.283065418 +0100
+@@ -0,0 +1,2 @@
++*.o
++myconfig
+diff -urN camlp5-6.11/ICHANGES camlp5-6.12-63a8c30f/ICHANGES
+--- camlp5-6.11/ICHANGES 2010-12-05 00:58:48.000000000 +0000
++++ camlp5-6.12-63a8c30f/ICHANGES 2014-08-01 10:14:54.283065418 +0100
+@@ -1,6 +1,12 @@
+ Internal, very small, undocumented, or invisible changes
+ ********************************************************
+
++Camlp5 Version 6.12:
++--------------------
++* [20 Jan 14] Removed W3C icon image (in documentation) that should
++ not be in Camlp5 distribution (violates Debian guidelines, in
++ particular).
++
+ Camlp5 Version 6.02.1:
+ ----------------------
+
+diff -urN camlp5-6.11/lib/.cvsignore camlp5-6.12-63a8c30f/lib/.cvsignore
+--- camlp5-6.11/lib/.cvsignore 2010-09-15 17:00:22.000000000 +0100
++++ camlp5-6.12-63a8c30f/lib/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1,4 +0,0 @@
+-*.a
+-*.cm[oiax]
+-*.cmxa
+-*.lib
+diff -urN camlp5-6.11/lib/.depend camlp5-6.12-63a8c30f/lib/.depend
+--- camlp5-6.11/lib/.depend 2010-09-15 17:00:22.000000000 +0100
++++ camlp5-6.12-63a8c30f/lib/.depend 2014-08-01 10:14:54.296065426 +0100
+@@ -19,8 +19,8 @@
+ plexer.cmo: plexer.cmi plexing.cmi ploc.cmi versdep.cmo
+ plexer.cmx: plexer.cmi plexing.cmx ploc.cmx versdep.cmx
+ plexer.cmi: plexing.cmi
+-plexing.cmo: plexing.cmi ploc.cmi
+-plexing.cmx: plexing.cmi ploc.cmx
++plexing.cmo: plexing.cmi ploc.cmi versdep.cmo
++plexing.cmx: plexing.cmi ploc.cmx versdep.cmx
+ plexing.cmi: ploc.cmi
+ ploc.cmo: ploc.cmi
+ ploc.cmx: ploc.cmi
+diff -urN camlp5-6.11/lib/diff.ml camlp5-6.12-63a8c30f/lib/diff.ml
+--- camlp5-6.11/lib/diff.ml 2012-01-09 14:22:21.000000000 +0000
++++ camlp5-6.12-63a8c30f/lib/diff.ml 2014-08-01 10:14:54.296065426 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: diff.ml,v 6.3 2012-01-09 14:22:21 deraugla Exp $ *)
++(* diff.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (* Parts of Code of GNU diff (analyze.c) translated from C to OCaml
+diff -urN camlp5-6.11/lib/diff.mli camlp5-6.12-63a8c30f/lib/diff.mli
+--- camlp5-6.11/lib/diff.mli 2012-01-09 14:22:21.000000000 +0000
++++ camlp5-6.12-63a8c30f/lib/diff.mli 2014-08-01 10:14:54.296065426 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: diff.mli,v 6.3 2012-01-09 14:22:21 deraugla Exp $ *)
++(* diff.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (** Differences between two arrays. *)
+diff -urN camlp5-6.11/lib/eprinter.ml camlp5-6.12-63a8c30f/lib/eprinter.ml
+--- camlp5-6.11/lib/eprinter.ml 2012-03-08 10:43:30.000000000 +0000
++++ camlp5-6.12-63a8c30f/lib/eprinter.ml 2014-08-01 10:14:54.296065426 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: eprinter.ml,v 6.4 2012-03-08 10:43:30 deraugla Exp $ *)
++(* eprinter.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #load "pa_macro.cmo";
+diff -urN camlp5-6.11/lib/eprinter.mli camlp5-6.12-63a8c30f/lib/eprinter.mli
+--- camlp5-6.11/lib/eprinter.mli 2012-01-09 14:22:21.000000000 +0000
++++ camlp5-6.12-63a8c30f/lib/eprinter.mli 2014-08-01 10:14:54.296065426 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: eprinter.mli,v 6.3 2012-01-09 14:22:21 deraugla Exp $ *)
++(* eprinter.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (** Extensible printers.
+diff -urN camlp5-6.11/lib/extfold.ml camlp5-6.12-63a8c30f/lib/extfold.ml
+--- camlp5-6.11/lib/extfold.ml 2012-01-09 14:22:21.000000000 +0000
++++ camlp5-6.12-63a8c30f/lib/extfold.ml 2014-08-01 10:14:54.296065426 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: extfold.ml,v 6.3 2012-01-09 14:22:21 deraugla Exp $ *)
++(* extfold.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ type t 'te 'a 'b =
+diff -urN camlp5-6.11/lib/extfold.mli camlp5-6.12-63a8c30f/lib/extfold.mli
+--- camlp5-6.11/lib/extfold.mli 2012-01-09 14:22:21.000000000 +0000
++++ camlp5-6.12-63a8c30f/lib/extfold.mli 2014-08-01 10:14:54.296065426 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: extfold.mli,v 6.3 2012-01-09 14:22:21 deraugla Exp $ *)
++(* extfold.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ type t 'te 'a 'b =
+diff -urN camlp5-6.11/lib/extfun.ml camlp5-6.12-63a8c30f/lib/extfun.ml
+--- camlp5-6.11/lib/extfun.ml 2012-03-08 14:01:06.000000000 +0000
++++ camlp5-6.12-63a8c30f/lib/extfun.ml 2014-08-01 10:14:54.296065426 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: extfun.ml,v 6.4 2012-03-08 14:01:06 deraugla Exp $ *)
++(* extfun.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (* Extensible Functions *)
+diff -urN camlp5-6.11/lib/extfun.mli camlp5-6.12-63a8c30f/lib/extfun.mli
+--- camlp5-6.11/lib/extfun.mli 2012-01-09 14:22:21.000000000 +0000
++++ camlp5-6.12-63a8c30f/lib/extfun.mli 2014-08-01 10:14:54.296065426 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: extfun.mli,v 6.3 2012-01-09 14:22:21 deraugla Exp $ *)
++(* extfun.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (** Extensible functions.
+diff -urN camlp5-6.11/lib/fstream.ml camlp5-6.12-63a8c30f/lib/fstream.ml
+--- camlp5-6.11/lib/fstream.ml 2012-01-09 14:22:21.000000000 +0000
++++ camlp5-6.12-63a8c30f/lib/fstream.ml 2014-08-01 10:14:54.296065426 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: fstream.ml,v 6.3 2012-01-09 14:22:21 deraugla Exp $ *)
++(* fstream.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ type mlazy_c 'a =
+diff -urN camlp5-6.11/lib/fstream.mli camlp5-6.12-63a8c30f/lib/fstream.mli
+--- camlp5-6.11/lib/fstream.mli 2012-01-09 14:22:21.000000000 +0000
++++ camlp5-6.12-63a8c30f/lib/fstream.mli 2014-08-01 10:14:54.297065427 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: fstream.mli,v 6.3 2012-01-09 14:22:21 deraugla Exp $ *)
++(* fstream.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (* Module [Fstream]: functional streams *)
+diff -urN camlp5-6.11/lib/.gitignore camlp5-6.12-63a8c30f/lib/.gitignore
+--- camlp5-6.11/lib/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/lib/.gitignore 2014-08-01 10:14:54.296065426 +0100
+@@ -0,0 +1,4 @@
++*.a
++*.cm[oiax]
++*.cmxa
++*.lib
+diff -urN camlp5-6.11/lib/gramext.ml camlp5-6.12-63a8c30f/lib/gramext.ml
+--- camlp5-6.11/lib/gramext.ml 2013-01-28 09:27:12.000000000 +0000
++++ camlp5-6.12-63a8c30f/lib/gramext.ml 2014-08-01 10:14:54.297065427 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: gramext.ml,v 6.8 2013-01-28 09:27:12 deraugla Exp $ *)
++(* gramext.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Printf;
+diff -urN camlp5-6.11/lib/gramext.mli camlp5-6.12-63a8c30f/lib/gramext.mli
+--- camlp5-6.11/lib/gramext.mli 2012-01-09 14:22:21.000000000 +0000
++++ camlp5-6.12-63a8c30f/lib/gramext.mli 2014-08-01 10:14:54.297065427 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: gramext.mli,v 6.4 2012-01-09 14:22:21 deraugla Exp $ *)
++(* gramext.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ type parser_t 'a = Stream.t 'a -> Obj.t;
+diff -urN camlp5-6.11/lib/grammar.ml camlp5-6.12-63a8c30f/lib/grammar.ml
+--- camlp5-6.11/lib/grammar.ml 2012-01-09 14:22:21.000000000 +0000
++++ camlp5-6.12-63a8c30f/lib/grammar.ml 2014-08-01 10:14:54.297065427 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: grammar.ml,v 6.6 2012-01-09 14:22:21 deraugla Exp $ *)
++(* grammar.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #load "pa_fstream.cmo";
+@@ -17,7 +17,32 @@
+ List.map (fun l -> [n :: l]) (flatten_tree s) @ flatten_tree b ]
+ ;
+
+-value print_str ppf s = fprintf ppf "\"%s\"" (String.escaped s);
++value utf8_print = ref True;
++
++value utf8_string_escaped s =
++ let b = Buffer.create (String.length s) in
++ loop 0 where rec loop i =
++ if i = String.length s then Buffer.contents b
++ else do {
++ match s.[i] with
++ | '"' → Buffer.add_string b "\\\""
++ | '\\' → Buffer.add_string b "\\\\"
++ | '\n' → Buffer.add_string b "\\n"
++ | '\t' → Buffer.add_string b "\\t"
++ | '\r' → Buffer.add_string b "\\r"
++ | '\b' → Buffer.add_string b "\\b"
++ | c → Buffer.add_char b c
++ end;
++ loop (i + 1)
++ }
++;
++
++value string_escaped s =
++ if utf8_print.val then utf8_string_escaped s
++ else String.escaped s
++;
++
++value print_str ppf s = fprintf ppf "\"%s\"" (string_escaped s);
+
+ value rec print_symbol ppf =
+ fun
+diff -urN camlp5-6.11/lib/grammar.mli camlp5-6.12-63a8c30f/lib/grammar.mli
+--- camlp5-6.11/lib/grammar.mli 2012-01-09 14:22:21.000000000 +0000
++++ camlp5-6.12-63a8c30f/lib/grammar.mli 2014-08-01 10:14:54.297065427 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: grammar.mli,v 6.4 2012-01-09 14:22:21 deraugla Exp $ *)
++(* grammar.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (** Extensible grammars.
+@@ -201,6 +201,10 @@
+ (** Flag to apply strict parsing, without trying to recover errors;
+ default = [False] *)
+
++value utf8_print : ref bool;
++ (** Flag to consider strings as utf8-encoded when printing them;
++ default = [True] *)
++
+ value print_entry : Format.formatter -> Gramext.g_entry 'te -> unit;
+ (** General printer for all kinds of entries (obj entries) *)
+
+diff -urN camlp5-6.11/lib/Makefile camlp5-6.12-63a8c30f/lib/Makefile
+--- camlp5-6.11/lib/Makefile 2012-03-01 03:33:18.000000000 +0000
++++ camlp5-6.12-63a8c30f/lib/Makefile 2014-08-01 10:14:54.296065426 +0100
+@@ -1,4 +1,4 @@
+-# $Id: Makefile,v 6.2 2012-03-01 03:33:18 deraugla Exp $
++# Makefile,v
+
+ TOP=..
+ include $(TOP)/config/Makefile
+diff -urN camlp5-6.11/lib/plexer.ml camlp5-6.12-63a8c30f/lib/plexer.ml
+--- camlp5-6.11/lib/plexer.ml 2013-07-03 02:43:10.000000000 +0100
++++ camlp5-6.12-63a8c30f/lib/plexer.ml 2014-08-01 10:14:54.298065427 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: plexer.ml,v 6.19 2013-07-03 01:43:10 deraugla Exp $ *)
++(* plexer.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #load "pa_lexer.cmo";
+@@ -39,10 +39,10 @@
+ ;
+
+ value rev_implode l =
+- let s = String.create (List.length l) in
++ let s = string_create (List.length l) in
+ loop (String.length s - 1) l where rec loop i =
+ fun
+- [ [c :: l] -> do { String.unsafe_set s i c; loop (i - 1) l }
++ [ [c :: l] -> do { string_unsafe_set s i c; loop (i - 1) l }
+ | [] -> s ]
+ ;
+
+diff -urN camlp5-6.11/lib/plexer.mli camlp5-6.12-63a8c30f/lib/plexer.mli
+--- camlp5-6.11/lib/plexer.mli 2013-06-14 04:03:31.000000000 +0100
++++ camlp5-6.12-63a8c30f/lib/plexer.mli 2014-08-01 10:14:54.298065427 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: plexer.mli,v 6.4 2013-06-14 03:03:31 deraugla Exp $ *)
++(* plexer.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (** This module contains the lexer used for ocaml syntax (revised and
+diff -urN camlp5-6.11/lib/plexing.ml camlp5-6.12-63a8c30f/lib/plexing.ml
+--- camlp5-6.11/lib/plexing.ml 2012-01-09 14:22:21.000000000 +0000
++++ camlp5-6.12-63a8c30f/lib/plexing.ml 2014-08-01 10:14:54.298065427 +0100
+@@ -1,7 +1,9 @@
+ (* camlp5r *)
+-(* $Id: plexing.ml,v 6.4 2012-01-09 14:22:21 deraugla Exp $ *)
++(* plexing.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
++open Versdep;
++
+ type pattern = (string * string);
+
+ exception Error of string;
+@@ -75,7 +77,8 @@
+ let lb =
+ Lexing.from_function
+ (fun s n ->
+- try do { s.[0] := Stream.next cs; 1 } with [ Stream.Failure -> 0 ])
++ try do { string_set s 0 (Stream.next cs); 1 } with
++ [ Stream.Failure -> 0 ])
+ in
+ let next_token_loc _ =
+ let tok = lexfun lb in
+@@ -87,12 +90,12 @@
+
+ (* Char and string tokens to real chars and string *)
+
+-value buff = ref (String.create 80);
++value buff = ref (string_create 80);
+ value store len x = do {
+ if len >= String.length buff.val then
+- buff.val := buff.val ^ String.create (String.length buff.val)
++ buff.val := buff.val ^ string_create (String.length buff.val)
+ else ();
+- buff.val.[len] := x;
++ string_set buff.val len x;
+ succ len
+ };
+ value get_buff len = String.sub buff.val 0 len;
+@@ -215,10 +218,10 @@
+ (* The lexing buffer used by pa_lexer.cmo *)
+
+ value rev_implode l =
+- let s = String.create (List.length l) in
++ let s = string_create (List.length l) in
+ loop (String.length s - 1) l where rec loop i =
+ fun
+- [ [c :: l] -> do { String.unsafe_set s i c; loop (i - 1) l }
++ [ [c :: l] -> do { string_unsafe_set s i c; loop (i - 1) l }
+ | [] -> s ]
+ ;
+
+diff -urN camlp5-6.11/lib/plexing.mli camlp5-6.12-63a8c30f/lib/plexing.mli
+--- camlp5-6.11/lib/plexing.mli 2012-01-09 14:22:21.000000000 +0000
++++ camlp5-6.12-63a8c30f/lib/plexing.mli 2014-08-01 10:14:54.298065427 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: plexing.mli,v 6.5 2012-01-09 14:22:21 deraugla Exp $ *)
++(* plexing.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (** Lexing for Camlp5 grammars.
+diff -urN camlp5-6.11/lib/ploc.ml camlp5-6.12-63a8c30f/lib/ploc.ml
+--- camlp5-6.11/lib/ploc.ml 2012-03-09 12:43:14.000000000 +0000
++++ camlp5-6.12-63a8c30f/lib/ploc.ml 2014-08-01 10:14:54.298065427 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: ploc.ml,v 6.13 2012-03-09 12:43:14 deraugla Exp $ *)
++(* ploc.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #load "pa_macro.cmo";
+@@ -23,12 +23,12 @@
+ ;
+
+ value make_unlined (bp, ep) =
+- {fname = ""; line_nb = -1; bol_pos = 0; line_nb_last = -1; bol_pos_last = 0;
++ {fname = ""; line_nb = 1; bol_pos = 0; line_nb_last = -1; bol_pos_last = 0;
+ bp = bp; ep = ep; comm = ""; ecomm = ""}
+ ;
+
+ value dummy =
+- {fname = ""; line_nb = -1; bol_pos = 0; line_nb_last = -1; bol_pos_last = 0;
++ {fname = ""; line_nb = 1; bol_pos = 0; line_nb_last = -1; bol_pos_last = 0;
+ bp = 0; ep = 0; comm = ""; ecomm = ""}
+ ;
+
+diff -urN camlp5-6.11/lib/ploc.mli camlp5-6.12-63a8c30f/lib/ploc.mli
+--- camlp5-6.11/lib/ploc.mli 2012-03-09 11:03:05.000000000 +0000
++++ camlp5-6.12-63a8c30f/lib/ploc.mli 2014-08-01 10:14:54.298065427 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: ploc.mli,v 6.9 2012-03-09 11:03:05 deraugla Exp $ *)
++(* ploc.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (** Locations and some pervasive type and value. *)
+diff -urN camlp5-6.11/lib/pprintf.ml camlp5-6.12-63a8c30f/lib/pprintf.ml
+--- camlp5-6.11/lib/pprintf.ml 2012-01-09 14:22:21.000000000 +0000
++++ camlp5-6.12-63a8c30f/lib/pprintf.ml 2014-08-01 10:14:54.298065427 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: pprintf.ml,v 6.3 2012-01-09 14:22:21 deraugla Exp $ *)
++(* pprintf.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #load "pa_macro.cmo";
+diff -urN camlp5-6.11/lib/pprintf.mli camlp5-6.12-63a8c30f/lib/pprintf.mli
+--- camlp5-6.11/lib/pprintf.mli 2012-01-09 14:22:21.000000000 +0000
++++ camlp5-6.12-63a8c30f/lib/pprintf.mli 2014-08-01 10:14:54.298065427 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: pprintf.mli,v 6.3 2012-01-09 14:22:21 deraugla Exp $ *)
++(* pprintf.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (** Definitions for pprintf statement.
+diff -urN camlp5-6.11/lib/pretty.ml camlp5-6.12-63a8c30f/lib/pretty.ml
+--- camlp5-6.11/lib/pretty.ml 2012-01-09 14:22:21.000000000 +0000
++++ camlp5-6.12-63a8c30f/lib/pretty.ml 2014-08-01 10:14:54.298065427 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: pretty.ml,v 6.4 2012-01-09 14:22:21 deraugla Exp $ *)
++(* pretty.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #load "pa_macro.cmo";
+diff -urN camlp5-6.11/lib/pretty.mli camlp5-6.12-63a8c30f/lib/pretty.mli
+--- camlp5-6.11/lib/pretty.mli 2012-01-09 14:22:21.000000000 +0000
++++ camlp5-6.12-63a8c30f/lib/pretty.mli 2014-08-01 10:14:54.298065427 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: pretty.mli,v 6.3 2012-01-09 14:22:21 deraugla Exp $ *)
++(* pretty.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (** Pretty printing on strings *)
+diff -urN camlp5-6.11/lib/stdpp.ml camlp5-6.12-63a8c30f/lib/stdpp.ml
+--- camlp5-6.11/lib/stdpp.ml 2012-03-03 09:06:39.000000000 +0000
++++ camlp5-6.12-63a8c30f/lib/stdpp.ml 2014-08-01 10:14:54.298065427 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: stdpp.ml,v 6.7 2012-03-03 09:06:39 deraugla Exp $ *)
++(* stdpp.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ type location = Ploc.t;
+diff -urN camlp5-6.11/lib/stdpp.mli camlp5-6.12-63a8c30f/lib/stdpp.mli
+--- camlp5-6.11/lib/stdpp.mli 2012-03-15 07:05:39.000000000 +0000
++++ camlp5-6.12-63a8c30f/lib/stdpp.mli 2014-08-01 10:14:54.299065428 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: stdpp.mli,v 6.5 2012-03-15 07:05:39 deraugla Exp $ *)
++(* stdpp.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (** Module deprecated since Camlp5 version 5.00. Use now module Ploc.
+diff -urN camlp5-6.11/lib/token.ml camlp5-6.12-63a8c30f/lib/token.ml
+--- camlp5-6.11/lib/token.ml 2012-01-09 14:22:21.000000000 +0000
++++ camlp5-6.12-63a8c30f/lib/token.ml 2014-08-01 10:14:54.299065428 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: token.ml,v 6.3 2012-01-09 14:22:21 deraugla Exp $ *)
++(* token.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ type pattern = Plexing.pattern;
+diff -urN camlp5-6.11/lib/token.mli camlp5-6.12-63a8c30f/lib/token.mli
+--- camlp5-6.11/lib/token.mli 2012-01-09 14:22:21.000000000 +0000
++++ camlp5-6.12-63a8c30f/lib/token.mli 2014-08-01 10:14:54.299065428 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: token.mli,v 6.3 2012-01-09 14:22:21 deraugla Exp $ *)
++(* token.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (** Module deprecated since Camlp5 version 5.00. Use now module Plexing.
+diff -urN camlp5-6.11/lib/versdep.ml camlp5-6.12-63a8c30f/lib/versdep.ml
+--- camlp5-6.11/lib/versdep.ml 2013-06-10 16:57:21.000000000 +0100
++++ camlp5-6.12-63a8c30f/lib/versdep.ml 2014-08-01 10:14:54.299065428 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* $Id: versdep.ml,v 6.36 2013-06-10 15:57:21 deraugla Exp $ *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;
+@@ -94,22 +94,72 @@
+ | [] -> Some (List.rev rev_l) ]
+ ;
+
+-value ocaml_value_description t p =
++value ocaml_value_description vn t p =
+ IFDEF OCAML_VERSION < OCAML_4_00 THEN {pval_type = t; pval_prim = p}
+- ELSE {pval_type = t; pval_prim = p; pval_loc = t.ptyp_loc} END
++ ELSIFDEF OCAML_VERSION < OCAML_4_02_0 THEN
++ {pval_type = t; pval_prim = p; pval_loc = t.ptyp_loc}
++ ELSE
++ {pval_type = t; pval_prim = p; pval_loc = t.ptyp_loc;
++ pval_name = mkloc t.ptyp_loc vn; pval_attributes = []}
++ END
+ ;
+
+ value ocaml_class_type_field loc ctfd =
+ IFDEF OCAML_VERSION < OCAML_4_00 THEN ctfd
+- ELSE {pctf_desc = ctfd; pctf_loc = loc} END
++ ELSIFDEF OCAML_VERSION < OCAML_4_02_0 THEN
++ {pctf_desc = ctfd; pctf_loc = loc}
++ ELSE
++ {pctf_desc = ctfd; pctf_loc = loc; pctf_attributes = []}
++ END
+ ;
+
+ value ocaml_class_field loc cfd =
+ IFDEF OCAML_VERSION < OCAML_4_00 THEN cfd
+- ELSE {pcf_desc = cfd; pcf_loc = loc} END
++ ELSIFDEF OCAML_VERSION < OCAML_4_02_0 THEN {pcf_desc = cfd; pcf_loc = loc}
++ ELSE {pcf_desc = cfd; pcf_loc = loc; pcf_attributes = []} END
++;
++
++value ocaml_mktyp loc x =
++ IFDEF OCAML_VERSION < OCAML_4_02_0 THEN {ptyp_desc = x; ptyp_loc = loc}
++ ELSE {ptyp_desc = x; ptyp_loc = loc; ptyp_attributes = []} END
++;
++value ocaml_mkpat loc x =
++ IFDEF OCAML_VERSION < OCAML_4_02_0 THEN {ppat_desc = x; ppat_loc = loc}
++ ELSE {ppat_desc = x; ppat_loc = loc; ppat_attributes = []} END
++;
++value ocaml_mkexp loc x =
++ IFDEF OCAML_VERSION < OCAML_4_02_0 THEN {pexp_desc = x; pexp_loc = loc}
++ ELSE {pexp_desc = x; pexp_loc = loc; pexp_attributes = []} END
++;
++value ocaml_mkmty loc x =
++ IFDEF OCAML_VERSION < OCAML_4_02_0 THEN {pmty_desc = x; pmty_loc = loc}
++ ELSE {pmty_desc = x; pmty_loc = loc; pmty_attributes = []} END
++;
++value ocaml_mkmod loc x =
++ IFDEF OCAML_VERSION < OCAML_4_02_0 THEN {pmod_desc = x; pmod_loc = loc}
++ ELSE {pmod_desc = x; pmod_loc = loc; pmod_attributes = []} END
++;
++value ocaml_mkfield loc (lab, x) fl =
++ IFDEF OCAML_VERSION < OCAML_4_02_0 THEN
++ [{pfield_desc = Pfield lab x; pfield_loc = loc} :: fl]
++ ELSE [(lab, x) :: fl] END
++;
++value ocaml_mkfield_var loc =
++ IFDEF OCAML_VERSION < OCAML_4_02_0 THEN
++ [{pfield_desc = Pfield_var; pfield_loc = loc}]
++ ELSE [] END
+ ;
+
+-value ocaml_type_declaration params cl tk pf tm loc variance =
++IFDEF OCAML_VERSION >= OCAML_4_02_0 THEN
++ value variance_of_bool_bool =
++ fun
++ [ (False, True) -> Contravariant
++ | (True, False) -> Covariant
++ | _ -> Invariant ]
++ ;
++END;
++
++value ocaml_type_declaration tn params cl tk pf tm loc variance =
+ IFDEF OCAML_VERSION = OCAML_3_13_0_gadt THEN
+ Right
+ {ptype_params = params; ptype_cstrs = cl; ptype_kind = tk;
+@@ -147,12 +197,28 @@
+ {ptype_params = params; ptype_cstrs = cl; ptype_kind = tk;
+ ptype_private = pf; ptype_manifest = tm; ptype_loc = loc;
+ ptype_variance = variance}
+- ELSE
+- let params = List.map (fun os -> Some (mknoloc os)) params in
++ ELSIFDEF OCAML_VERSION < OCAML_4_02_0 THEN
++ let params = List.map (fun os -> Some (mkloc loc os)) params in
+ Right
+ {ptype_params = params; ptype_cstrs = cl; ptype_kind = tk;
+ ptype_private = pf; ptype_manifest = tm; ptype_loc = loc;
+ ptype_variance = variance}
++ ELSE
++ let _ =
++ if List.length params <> List.length variance then
++ failwith "internal error: ocaml_type_declaration"
++ else ()
++ in
++ let params =
++ List.map2
++ (fun os va ->
++ (ocaml_mktyp loc (Ptyp_var os), variance_of_bool_bool va))
++ params variance
++ in
++ Right
++ {ptype_params = params; ptype_cstrs = cl; ptype_kind = tk;
++ ptype_private = pf; ptype_manifest = tm; ptype_loc = loc;
++ ptype_name = mkloc loc tn; ptype_attributes = []}
+ END
+ | None -> Left "no '_' type param in this ocaml version" ]
+ END
+@@ -160,22 +226,35 @@
+
+ value ocaml_class_type =
+ IFDEF OCAML_VERSION <= OCAML_1_07 THEN None
+- ELSE Some (fun d loc -> {pcty_desc = d; pcty_loc = loc}) END
++ ELSIFDEF OCAML_VERSION < OCAML_4_02_0 THEN
++ Some (fun d loc -> {pcty_desc = d; pcty_loc = loc})
++ ELSE
++ Some (fun d loc -> {pcty_desc = d; pcty_loc = loc; pcty_attributes = []})
++ END
+ ;
+
+ value ocaml_class_expr =
+ IFDEF OCAML_VERSION <= OCAML_1_07 THEN None
+- ELSE Some (fun d loc -> {pcl_desc = d; pcl_loc = loc}) END
++ ELSIFDEF OCAML_VERSION < OCAML_4_02_0 THEN
++ Some (fun d loc -> {pcl_desc = d; pcl_loc = loc})
++ ELSE
++ Some (fun d loc -> {pcl_desc = d; pcl_loc = loc; pcl_attributes = []})
++ END
+ ;
+
+ value ocaml_class_structure p cil =
+ IFDEF OCAML_VERSION <= OCAML_4_00 THEN (p, cil)
+- ELSE {pcstr_pat = p; pcstr_fields = cil} END
++ ELSIFDEF OCAML_VERSION < OCAML_4_02_0 THEN
++ {pcstr_pat = p; pcstr_fields = cil}
++ ELSE {pcstr_self = p; pcstr_fields = cil} END
+ ;
+
+ value ocaml_pmty_ident loc li = Pmty_ident (mkloc loc li);
+
+-value ocaml_pmty_functor sloc s mt1 mt2 = Pmty_functor (mkloc sloc s) mt1 mt2;
++value ocaml_pmty_functor sloc s mt1 mt2 =
++ IFDEF OCAML_VERSION < OCAML_4_02_0 THEN Pmty_functor (mkloc sloc s) mt1 mt2
++ ELSE Pmty_functor (mkloc sloc s) (Some mt1) mt2 END
++;
+
+ value ocaml_pmty_typeof =
+ IFDEF OCAML_VERSION < OCAML_3_12 THEN None
+@@ -183,8 +262,12 @@
+ ;
+
+ value ocaml_pmty_with mt lcl =
+- let lcl = List.map (fun (s, c) → (mknoloc s, c)) lcl in
+- Pmty_with mt lcl
++ IFDEF OCAML_VERSION < OCAML_4_02_0 THEN
++ let lcl = List.map (fun (s, c) → (mknoloc s, c)) lcl in
++ Pmty_with mt lcl
++ ELSE
++ let lcl = List.map snd lcl in Pmty_with mt lcl
++ END
+ ;
+
+ value ocaml_ptype_abstract =
+@@ -209,9 +292,16 @@
+ Ptype_record ltl priv
+ ELSIFDEF OCAML_VERSION < OCAML_4_00 THEN
+ Ptype_record ltl
+- ELSE
++ ELSIFDEF OCAML_VERSION < OCAML_4_02_0 THEN
+ Ptype_record
+ (List.map (fun (s, mf, ct, loc) → (mkloc loc s, mf, ct, loc)) ltl)
++ ELSE
++ Ptype_record
++ (List.map
++ (fun (s, mf, ct, loc) ->
++ {pld_name = mkloc loc s; pld_mutable = mf; pld_type = ct;
++ pld_loc = loc; pld_attributes = []})
++ ltl)
+ END
+ ;
+
+@@ -250,7 +340,7 @@
+ ctl
+ in
+ Some (Ptype_variant ctl)
+- ELSE
++ ELSIFDEF OCAML_VERSION < OCAML_4_02_0 THEN
+ let ctl =
+ List.map
+ (fun (c, tl, rto, loc) ->
+@@ -258,6 +348,17 @@
+ ctl
+ in
+ Some (Ptype_variant ctl)
++ ELSE
++ let ctl =
++ List.map
++ (fun (c, tl, rto, loc) ->
++ if rto <> None then raise Exit
++ else
++ {pcd_name = mkloc loc c; pcd_args = tl; pcd_res = None;
++ pcd_loc = loc; pcd_attributes = []})
++ ctl
++ in
++ Some (Ptype_variant ctl)
+ END
+ with
+ [ Exit -> None ]
+@@ -271,10 +372,19 @@
+
+ value ocaml_ptyp_class li tl ll =
+ IFDEF OCAML_VERSION <= OCAML_2_04 THEN Ptyp_class li tl
+- ELSE Ptyp_class (mknoloc li) tl ll END
++ ELSIFDEF OCAML_VERSION < OCAML_4_02_0 THEN Ptyp_class (mknoloc li) tl ll
++ ELSE Ptyp_class (mknoloc li) tl END
+ ;
+
+-value ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li) tl;
++value ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li) tl;
++
++value ocaml_ptyp_object ml =
++ IFDEF OCAML_VERSION < OCAML_4_02_0 THEN Ptyp_object ml
++ ELSE
++ let ml = List.map (fun (s, t) -> (s, [], t)) ml in
++ Ptyp_object ml Closed
++ END
++;
+
+ value ocaml_ptyp_package =
+ IFDEF OCAML_VERSION < OCAML_3_12_0 THEN None
+@@ -283,7 +393,15 @@
+
+ value ocaml_ptyp_poly =
+ IFDEF OCAML_VERSION <= OCAML_3_04 THEN None
+- ELSE Some (fun cl t -> Ptyp_poly cl t) END
++ ELSIFDEF OCAML_VERSION < OCAML_4_02_0 THEN
++ Some (fun cl t -> Ptyp_poly cl t)
++ ELSE
++ Some
++ (fun cl t ->
++ match cl with
++ [ [] -> t.ptyp_desc
++ | _ -> Ptyp_poly cl t ])
++ END
+ ;
+
+ value ocaml_ptyp_variant catl clos sl_opt =
+@@ -301,7 +419,7 @@
+ Some (Ptyp_variant catl clos sl)
+ with
+ [ Exit -> None ]
+- ELSE
++ ELSIFDEF OCAML_VERSION < OCAML_4_02_0 THEN
+ let catl =
+ List.map
+ (fun
+@@ -310,6 +428,16 @@
+ catl
+ in
+ Some (Ptyp_variant catl clos sl_opt)
++ ELSE
++ let catl =
++ List.map
++ (fun
++ [ Left (c, a, tl) -> Rtag c [] a tl
++ | Right t -> Rinherit t ])
++ catl
++ in
++ let clos = if clos then Closed else Open in
++ Some (Ptyp_variant catl clos sl_opt)
+ END
+ ;
+
+@@ -317,6 +445,11 @@
+ (mknoloc li, List.map (fun (li, t) → (mkloc t.ptyp_loc li, t)) ltl)
+ ;
+
++value ocaml_const_string s =
++ IFDEF OCAML_VERSION < OCAML_4_02_0 THEN Const_string s
++ ELSE Const_string s None END
++;
++
+ value ocaml_const_int32 =
+ IFDEF OCAML_VERSION <= OCAML_3_06 THEN None
+ ELSE Some (fun s -> Const_int32 (Int32.of_string s)) END
+@@ -350,7 +483,11 @@
+ let bucket = ghexp (Pexp_construct excep (Some triple) False) in
+ let raise_ = ghexp (Pexp_ident (Ldot (Lident "Pervasives") "raise")) in
+ ocaml_pexp_apply raise_ [("", bucket)]
+- ELSE Pexp_assertfalse END
++ ELSIFDEF OCAML_VERSION < OCAML_4_02_0 THEN Pexp_assertfalse
++ ELSE
++ Pexp_assert
++ (ocaml_mkexp loc (Pexp_construct (mkloc loc (Lident "false")) None))
++ END
+ ;
+
+ value ocaml_pexp_assert fname loc e =
+@@ -377,17 +514,84 @@
+ ELSE Pexp_assert e END
+ ;
+
++value ocaml_pexp_constraint e ot1 ot2 =
++ IFDEF OCAML_VERSION < OCAML_4_02_0 THEN Pexp_constraint e ot1 ot2
++ ELSE
++ match ot2 with
++ | Some t2 -> Pexp_coerce e ot1 t2
++ | None ->
++ match ot1 with
++ | Some t1 -> Pexp_constraint e t1
++ | None -> failwith "internal error: ocaml_pexp_constraint"
++ end
++ end
++ END
++;
++
+ value ocaml_pexp_construct loc li po chk_arity =
+- Pexp_construct (mkloc loc li) po chk_arity
++ IFDEF OCAML_VERSION < OCAML_4_02_0 THEN
++ Pexp_construct (mkloc loc li) po chk_arity
++ ELSE
++ Pexp_construct (mkloc loc li) po
++ END
++;
++
++value ocaml_pexp_construct_args =
++ IFDEF OCAML_VERSION < OCAML_4_00_0 THEN
++ fun
++ [ Pexp_construct li po chk_arity -> Some (li, 0, po, chk_arity)
++ | _ -> None ]
++ ELSIFDEF OCAML_VERSION < OCAML_4_02_0 THEN
++ fun
++ [ Pexp_construct li po chk_arity -> Some (li.txt, li.loc, po, chk_arity)
++ | _ -> None ]
++ ELSE
++ fun
++ [ Pexp_construct li po -> Some (li.txt, li.loc, po, 0)
++ | _ -> None ]
++ END
++;
++
++value mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ IFDEF OCAML_VERSION < OCAML_4_02_0 THEN
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) True)
++ ELSE
++ {pexp_desc = ocaml_pexp_construct li_loc li (Some a) True;
++ pexp_loc = loc;
++ pexp_attributes = [(mkloc loc "ocaml.explicit_arity", PStr [])]}
++ END
+ ;
+
+ value ocaml_pexp_field loc e li = Pexp_field e (mkloc loc li);
+
+-value ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i) e1 e2 df e;
++value ocaml_pexp_for i e1 e2 df e =
++ IFDEF OCAML_VERSION < OCAML_4_02_0 THEN Pexp_for (mknoloc i) e1 e2 df e
++ ELSE Pexp_for (ocaml_mkpat loc_none (Ppat_var (mknoloc i))) e1 e2 df e END
++;
++
++value ocaml_case (p, wo, loc, e) =
++ IFDEF OCAML_VERSION < OCAML_4_02_0 THEN
++ match wo with
++ | Some w -> (p, ocaml_mkexp loc (Pexp_when w e))
++ | None -> (p, e)
++ end
++ ELSE
++ {pc_lhs = p; pc_guard = wo; pc_rhs = e}
++ END
++;
+
+ value ocaml_pexp_function lab eo pel =
+ IFDEF OCAML_VERSION <= OCAML_2_04 THEN Pexp_function pel
+- ELSE Pexp_function lab eo pel END
++ ELSIFDEF OCAML_VERSION < OCAML_4_02_0 THEN Pexp_function lab eo pel
++ ELSE
++ match pel with
++ | [{pc_lhs = p; pc_guard = None; pc_rhs = e}] -> Pexp_fun lab eo p e
++ | pel ->
++ if lab = "" && eo = None then Pexp_function pel
++ else failwith "internal error: bad ast in ocaml_pexp_function"
++ end
++ END
+ ;
+
+ value ocaml_pexp_lazy =
+@@ -469,6 +673,11 @@
+ END
+ ;
+
++value ocaml_value_binding loc p e =
++ IFDEF OCAML_VERSION < OCAML_4_02_0 THEN (p, e)
++ ELSE {pvb_pat = p; pvb_expr = e; pvb_loc = loc; pvb_attributes = []} END
++;
++
+ value ocaml_ppat_alias p i iloc = Ppat_alias p (mkloc iloc i);
+
+ value ocaml_ppat_array =
+@@ -476,20 +685,40 @@
+ ELSE Some (fun pl -> Ppat_array pl) END
+ ;
+
+-value ocaml_ppat_construct li li_loc po chk_arity =
++value ocaml_ppat_construct loc li po chk_arity =
+ IFDEF OCAML_VERSION < OCAML_4_00 THEN
+ Ppat_construct li po chk_arity
++ ELSIFDEF OCAML_VERSION < OCAML_4_02_0 THEN
++ Ppat_construct (mkloc loc li) po chk_arity
+ ELSE
+- Ppat_construct (mkloc li_loc li) po chk_arity
++ Ppat_construct (mkloc loc li) po
+ END
+ ;
+
+ value ocaml_ppat_construct_args =
+- fun
+- [ Ppat_construct li po chk_arity ->
+- IFDEF OCAML_VERSION < OCAML_4_00 THEN Some (li, 0, po, chk_arity)
+- ELSE Some (li.txt, li.loc, po, chk_arity) END
+- | _ -> None ]
++ IFDEF OCAML_VERSION < OCAML_4_02_0 THEN
++ fun
++ [ Ppat_construct li po chk_arity ->
++ IFDEF OCAML_VERSION < OCAML_4_00 THEN Some (li, 0, po, chk_arity)
++ ELSE Some (li.txt, li.loc, po, chk_arity) END
++ | _ -> None ]
++ ELSE
++ fun
++ [ Ppat_construct li po -> Some (li.txt, li.loc, po, 0)
++ | _ -> None ]
++ END
++;
++
++value mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ IFDEF OCAML_VERSION < OCAML_4_02_0 THEN
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) True)
++ ELSE
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ {ppat_desc = ocaml_ppat_construct li_loc li (Some a) True;
++ ppat_loc = loc;
++ ppat_attributes = [(mkloc loc "ocaml.explicit_arity", PStr [])]}
++ END
+ ;
+
+ value ocaml_ppat_lazy =
+@@ -535,80 +764,206 @@
+ ELSE Some (fun ctl -> Psig_class_type ctl) END
+ ;
+
+-value ocaml_psig_exception s ed = Psig_exception (mknoloc s) ed;
++value ocaml_psig_exception loc s ed =
++ IFDEF OCAML_VERSION < OCAML_4_02_0 THEN Psig_exception (mkloc loc s) ed
++ ELSE
++ Psig_exception
++ {pext_name = mkloc loc s; pext_kind = Pext_decl ed None;
++ pext_loc = loc; pext_attributes = []}
++ END
++;
++
++value ocaml_psig_include loc mt =
++ IFDEF OCAML_VERSION < OCAML_4_02_0 THEN Psig_include mt
++ ELSE
++ Psig_include {pincl_mod = mt; pincl_loc = loc; pincl_attributes = []}
++ END
++;
+
+-value ocaml_psig_module s mt = Psig_module (mknoloc s) mt;
++value ocaml_psig_module loc s mt =
++ IFDEF OCAML_VERSION < OCAML_4_02_0 THEN Psig_module (mknoloc s) mt
++ ELSE
++ Psig_module
++ {pmd_name = mkloc loc s; pmd_type = mt; pmd_attributes = [];
++ pmd_loc = loc}
++ END
++;
+
+-value ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s) mtd;
++value ocaml_psig_modtype loc s mto =
++ IFDEF OCAML_VERSION < OCAML_4_02_0 THEN
++ let mtd =
++ match mto with
++ | None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ end
++ in
++ Psig_modtype (mknoloc s) mtd
++ ELSE
++ let pmtd =
++ {pmtd_name = mkloc loc s; pmtd_type = mto; pmtd_attributes = [];
++ pmtd_loc = loc}
++ in
++ Psig_modtype pmtd
++ END
++;
+
+-value ocaml_psig_open li =
+- IFDEF OCAML_VERSION < OCAML_4_01 THEN Psig_open (mknoloc li)
+- ELSE Psig_open Fresh (mknoloc li) END
++value ocaml_psig_open loc li =
++ IFDEF OCAML_VERSION < OCAML_4_01 THEN Psig_open (mkloc loc li)
++ ELSIFDEF OCAML_VERSION < OCAML_4_02_0 THEN Psig_open Fresh (mkloc loc li)
++ ELSE
++ Psig_open
++ {popen_lid = mknoloc li; popen_override = Fresh; popen_loc = loc;
++ popen_attributes = []}
++ END
+ ;
+
+ value ocaml_psig_recmodule =
+ IFDEF OCAML_VERSION <= OCAML_3_06 THEN None
+- ELSE
++ ELSIFDEF OCAML_VERSION < OCAML_4_02_0 THEN
+ let f ntl =
+ let ntl = List.map (fun (s, mt) → (mknoloc s, mt)) ntl in
+ Psig_recmodule ntl
+ in
+ Some f
++ ELSE
++ let f ntl =
++ let ntl =
++ List.map
++ (fun (s, mt) ->
++ {pmd_name = mknoloc s; pmd_type = mt; pmd_attributes = [];
++ pmd_loc = loc_none})
++ ntl
++ in
++ Psig_recmodule ntl
++ in
++ Some f
+ END
+ ;
+
+ value ocaml_psig_type stl =
+- let stl = List.map (fun (s, t) → (mknoloc s, t)) stl in
+- Psig_type stl
++ IFDEF OCAML_VERSION < OCAML_4_02_0 THEN
++ let stl = List.map (fun (s, t) → (mknoloc s, t)) stl in
++ Psig_type stl
++ ELSE
++ let stl = List.map (fun (s, t) -> t) stl in Psig_type stl
++ END
+ ;
+
+-value ocaml_psig_value s vd = Psig_value (mknoloc s) vd;
++value ocaml_psig_value s vd =
++ IFDEF OCAML_VERSION < OCAML_4_02_0 THEN Psig_value (mknoloc s) vd
++ ELSE Psig_value vd END
++;
+
+ value ocaml_pstr_class_type =
+ IFDEF OCAML_VERSION <= OCAML_1_07 THEN None
+ ELSE Some (fun ctl -> Pstr_class_type ctl) END
+ ;
+
+-value ocaml_pstr_exception s ed = Pstr_exception (mknoloc s) ed;
++value ocaml_pstr_eval e =
++ IFDEF OCAML_VERSION < OCAML_4_02_0 THEN Pstr_eval e
++ ELSE Pstr_eval e [] END
++;
++
++value ocaml_pstr_exception loc s ed =
++ IFDEF OCAML_VERSION < OCAML_4_02_0 THEN Pstr_exception (mkloc loc s) ed
++ ELSE
++ Pstr_exception
++ {pext_name = mkloc loc s; pext_kind = Pext_decl ed None;
++ pext_loc = loc; pext_attributes = []}
++ END
++;
+
+ value ocaml_pstr_exn_rebind =
+ IFDEF OCAML_VERSION <= OCAML_2_99 THEN None
+- ELSE Some (fun s li -> Pstr_exn_rebind (mknoloc s) (mknoloc li)) END
++ ELSIFDEF OCAML_VERSION < OCAML_4_02_0 THEN
++ Some (fun loc s li -> Pstr_exn_rebind (mkloc loc s) (mkloc loc li))
++ ELSE
++ Some
++ (fun loc s li ->
++ Pstr_exception
++ {pext_name = mkloc loc s; pext_kind = Pext_rebind (mkloc loc li);
++ pext_loc = loc; pext_attributes = []})
++ END
+ ;
+
+ value ocaml_pstr_include =
+ IFDEF OCAML_VERSION <= OCAML_3_00 THEN None
+- ELSE Some (fun me -> Pstr_include me) END
++ ELSIFDEF OCAML_VERSION < OCAML_4_02_0 THEN
++ Some (fun loc me -> Pstr_include me)
++ ELSE
++ Some
++ (fun loc me ->
++ Pstr_include
++ {pincl_mod = me; pincl_loc = loc; pincl_attributes = []})
++ END
+ ;
+
+-value ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s) mt;
++value ocaml_pstr_modtype loc s mt =
++ IFDEF OCAML_VERSION < OCAML_4_02_0 THEN Pstr_modtype (mkloc loc s) mt
++ ELSE
++ let pmtd =
++ {pmtd_name = mkloc loc s; pmtd_type = Some mt; pmtd_attributes = [];
++ pmtd_loc = loc}
++ in
++ Pstr_modtype pmtd
++ END
++;
+
+-value ocaml_pstr_module s me = Pstr_module (mknoloc s) me;
++value ocaml_pstr_module loc s me =
++ IFDEF OCAML_VERSION < OCAML_4_02_0 THEN Pstr_module (mkloc loc s) me
++ ELSE
++ let mb =
++ {pmb_name = mkloc loc s; pmb_expr = me; pmb_attributes = [];
++ pmb_loc = loc}
++ in
++ Pstr_module mb
++ END
++;
+
+-value ocaml_pstr_open li =
++value ocaml_pstr_open loc li =
+ IFDEF OCAML_VERSION < OCAML_4_01 THEN Pstr_open (mknoloc li)
+- ELSE Pstr_open Fresh (mknoloc li) END
++ ELSIFDEF OCAML_VERSION < OCAML_4_02_0 THEN Pstr_open Fresh (mknoloc li)
++ ELSE
++ Pstr_open
++ {popen_lid = mknoloc li; popen_override = Fresh; popen_loc = loc;
++ popen_attributes = []}
++ END
+ ;
+
+-value ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s) vd;
++value ocaml_pstr_primitive s vd =
++ IFDEF OCAML_VERSION < OCAML_4_02_0 THEN Pstr_primitive (mknoloc s) vd
++ ELSE Pstr_primitive vd END
++;
+
+ value ocaml_pstr_recmodule =
+ IFDEF OCAML_VERSION <= OCAML_3_06 THEN None
+ ELSIFDEF OCAML_VERSION < OCAML_4_00 THEN
+ Some (fun nel -> Pstr_recmodule nel)
+- ELSE
++ ELSIFDEF OCAML_VERSION < OCAML_4_02_0 THEN
+ let f nel =
+ Pstr_recmodule (List.map (fun (s, mt, me) → (mknoloc s, mt, me)) nel)
+ in
+ Some f
++ ELSE
++ let f nel =
++ Pstr_recmodule
++ (List.map
++ (fun (s, mt, me) ->
++ {pmb_name = mknoloc s; pmb_expr = me; pmb_attributes = [];
++ pmb_loc = loc_none})
++ nel)
++ in
++ Some f
+ END
+ ;
+
+ value ocaml_pstr_type stl =
+ IFDEF OCAML_VERSION < OCAML_4_00 THEN Pstr_type stl
+- ELSE
++ ELSIFDEF OCAML_VERSION < OCAML_4_02_0 THEN
+ let stl = List.map (fun (s, t) → (mknoloc s, t)) stl in
+ Pstr_type stl
++ ELSE
++ let stl = List.map (fun (s, t) -> t) stl in Pstr_type stl
+ END
+ ;
+
+@@ -619,18 +974,37 @@
+ (fun virt params name expr loc variance ->
+ {pci_virt = virt; pci_params = params; pci_name = name;
+ pci_expr = expr; pci_loc = loc})
+- ELSE
++ ELSIFDEF OCAML_VERSION < OCAML_4_02_0 THEN
+ Some
+ (fun virt (sl, sloc) name expr loc variance ->
+ let params = (List.map (fun s → mkloc loc s) sl, sloc) in
+ {pci_virt = virt; pci_params = params; pci_name = mkloc loc name;
+ pci_expr = expr; pci_loc = loc; pci_variance = variance})
++ ELSE
++ Some
++ (fun virt (sl, sloc) name expr loc variance ->
++ let _ =
++ if List.length sl <> List.length variance then
++ failwith "internal error: ocaml_class_infos"
++ else ()
++ in
++ let params =
++ List.map2
++ (fun os va ->
++ (ocaml_mktyp loc (Ptyp_var os), variance_of_bool_bool va))
++ sl variance
++ in
++ {pci_virt = virt; pci_params = params; pci_name = mkloc loc name;
++ pci_expr = expr; pci_loc = loc; pci_attributes = []})
+ END
+ ;
+
+ value ocaml_pmod_ident li = Pmod_ident (mknoloc li);
+
+-value ocaml_pmod_functor s mt me = Pmod_functor (mknoloc s) mt me;
++value ocaml_pmod_functor s mt me =
++ IFDEF OCAML_VERSION < OCAML_4_02_0 THEN Pmod_functor (mknoloc s) mt me
++ ELSE Pmod_functor (mknoloc s) (Some mt) me END
++;
+
+ value ocaml_pmod_unpack =
+ IFDEF OCAML_VERSION < OCAML_3_12 THEN None
+@@ -646,41 +1020,58 @@
+ IFDEF OCAML_VERSION <= OCAML_1_07 THEN None
+ ELSIFDEF OCAML_VERSION < OCAML_4_00 THEN
+ Some (fun (t1, t2, loc) -> Pcf_cstr (t1, t2, loc))
+- ELSE Some (fun (t1, t2, loc) -> Pcf_constr (t1, t2)) END
++ ELSIFDEF OCAML_VERSION < OCAML_4_02_0 THEN
++ Some (fun (t1, t2, loc) -> Pcf_constr (t1, t2))
++ ELSE
++ Some (fun (t1, t2, loc) -> Pcf_constraint (t1, t2))
++ END
+ ;
+
+ value ocaml_pcf_inher =
+ IFDEF OCAML_VERSION <= OCAML_1_07 THEN
+ fun (id, cl, el, loc) pb -> Pcf_inher (id, cl, el, pb, loc)
+- ELSIFDEF OCAML_VERSION >= OCAML_3_12 THEN
++ ELSIFDEF OCAML_VERSION < OCAML_3_12 THEN
++ fun ce pb -> Pcf_inher ce pb
++ ELSIFDEF OCAML_VERSION < OCAML_4_02_0 THEN
+ fun ce pb -> Pcf_inher Fresh ce pb
+ ELSE
+- fun ce pb -> Pcf_inher ce pb
++ fun ce pb -> Pcf_inherit Fresh ce pb
+ END
+ ;
+
+ value ocaml_pcf_init =
+ IFDEF OCAML_VERSION <= OCAML_1_07 THEN None
+- ELSE Some (fun e -> Pcf_init e) END
++ ELSIFDEF OCAML_VERSION < OCAML_4_02_0 THEN Some (fun e -> Pcf_init e)
++ ELSE Some (fun e -> Pcf_initializer e) END
+ ;
+
+ value ocaml_pcf_meth (s, pf, ovf, e, loc) =
+ let pf = if pf then Private else Public in
+- IFDEF OCAML_VERSION >= OCAML_3_12 THEN
++ IFDEF OCAML_VERSION < OCAML_3_12 THEN Pcf_meth (s, pf, e, loc)
++ ELSE
+ let ovf = if ovf then Override else Fresh in
+ IFDEF OCAML_VERSION < OCAML_4_00 THEN Pcf_meth (s, pf, ovf, e, loc)
+- ELSE Pcf_meth (mkloc loc s, pf, ovf, e) END
+- ELSE Pcf_meth (s, pf, e, loc) END
++ ELSIFDEF OCAML_VERSION < OCAML_4_02_0 THEN
++ Pcf_meth (mkloc loc s, pf, ovf, e)
++ ELSE
++ Pcf_method (mkloc loc s, pf, Cfk_concrete ovf e)
++ END
++ END
+ ;
+
+ value ocaml_pcf_val (s, mf, ovf, e, loc) =
+ let mf = if mf then Mutable else Immutable in
+ IFDEF OCAML_VERSION <= OCAML_1_07 THEN Pcf_val (s, Public, mf, Some e, loc)
+- ELSIFDEF OCAML_VERSION >= OCAML_3_12 THEN
++ ELSIFDEF OCAML_VERSION < OCAML_3_12 THEN Pcf_val (s, mf, e, loc)
++ ELSE
+ let ovf = if ovf then Override else Fresh in
+ IFDEF OCAML_VERSION < OCAML_4_00 THEN Pcf_val (s, mf, ovf, e, loc)
+- ELSE Pcf_val (mkloc loc s, mf, ovf, e) END
+- ELSE Pcf_val (s, mf, e, loc) END
++ ELSIFDEF OCAML_VERSION < OCAML_4_02_0 THEN
++ Pcf_val (mkloc loc s, mf, ovf, e)
++ ELSE
++ Pcf_val (mkloc loc s, mf, Cfk_concrete ovf e)
++ END
++ END
+ ;
+
+ value ocaml_pcf_valvirt =
+@@ -689,7 +1080,9 @@
+ let ocaml_pcf (s, mf, t, loc) =
+ let mf = if mf then Mutable else Immutable in
+ IFDEF OCAML_VERSION < OCAML_4_00 THEN Pcf_valvirt (s, mf, t, loc)
+- ELSE Pcf_valvirt (mkloc loc s, mf, t) END
++ ELSIFDEF OCAML_VERSION < OCAML_4_02_0 THEN
++ Pcf_valvirt (mkloc loc s, mf, t)
++ ELSE Pcf_val (mkloc loc s, mf, Cfk_virtual t) END
+ in
+ Some ocaml_pcf
+ END
+@@ -697,7 +1090,8 @@
+
+ value ocaml_pcf_virt (s, pf, t, loc) =
+ IFDEF OCAML_VERSION < OCAML_4_00 THEN Pcf_virt (s, pf, t, loc)
+- ELSE Pcf_virt (mkloc loc s, pf, t) END
++ ELSIFDEF OCAML_VERSION < OCAML_4_02_0 THEN Pcf_virt (mkloc loc s, pf, t)
++ ELSE Pcf_val (mkloc loc s, Immutable, Cfk_virtual t) END
+ ;
+
+ value ocaml_pcl_apply =
+@@ -743,13 +1137,22 @@
+ IFDEF OCAML_VERSION <= OCAML_1_07 THEN None
+ ELSIFDEF OCAML_VERSION < OCAML_4_00 THEN
+ Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc))
++ ELSIFDEF OCAML_VERSION < OCAML_4_02_0 THEN
++ Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2))
+ ELSE
+- Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2)) END
++ Some (fun (t1, t2, loc) -> Pctf_constraint (t1, t2))
++ END
++;
++
++value ocaml_pctf_inher ct =
++ IFDEF OCAML_VERSION < OCAML_4_02_0 THEN Pctf_inher ct
++ ELSE Pctf_inherit ct END
+ ;
+
+ value ocaml_pctf_meth (s, pf, t, loc) =
+ IFDEF OCAML_VERSION < OCAML_4_00 THEN Pctf_meth (s, pf, t, loc)
+- ELSE Pctf_meth (s, pf, t) END
++ ELSIFDEF OCAML_VERSION < OCAML_4_02_0 THEN Pctf_meth (s, pf, t)
++ ELSE Pctf_method (s, pf, Concrete, t) END
+ ;
+
+ value ocaml_pctf_val (s, mf, t, loc) =
+@@ -761,7 +1164,8 @@
+
+ value ocaml_pctf_virt (s, pf, t, loc) =
+ IFDEF OCAML_VERSION < OCAML_4_00 THEN Pctf_virt (s, pf, t, loc)
+- ELSE Pctf_virt (s, pf, t) END
++ ELSIFDEF OCAML_VERSION < OCAML_4_02_0 THEN Pctf_virt (s, pf, t)
++ ELSE Pctf_val (s, Immutable, Virtual, t) END
+ ;
+
+ value ocaml_pcty_constr =
+@@ -774,8 +1178,11 @@
+ None
+ ELSIFDEF OCAML_VERSION <= OCAML_2_04 THEN
+ Some (fun lab t ct -> Pcty_fun t ct)
++ ELSIFDEF OCAML_VERSION < OCAML_4_02_0 THEN
++ Some (fun lab t ct -> Pcty_fun lab t ct)
+ ELSE
+- Some (fun lab t ct -> Pcty_fun lab t ct) END
++ Some (fun lab t ct -> Pcty_arrow lab t ct)
++ END
+ ;
+
+ value ocaml_pcty_signature =
+@@ -785,7 +1192,11 @@
+ ELSE
+ let f (t, ctfl) =
+ let cs =
+- {pcsig_self = t; pcsig_fields = ctfl; pcsig_loc = t.ptyp_loc}
++ IFDEF OCAML_VERSION < OCAML_4_02_0 THEN
++ {pcsig_self = t; pcsig_fields = ctfl; pcsig_loc = t.ptyp_loc}
++ ELSE
++ {pcsig_self = t; pcsig_fields = ctfl}
++ END
+ in
+ Pcty_signature cs
+ in
+@@ -800,10 +1211,22 @@
+
+ value ocaml_pwith_modsubst =
+ IFDEF OCAML_VERSION < OCAML_3_12_0 THEN None
+- ELSE Some (fun loc me -> Pwith_modsubst (mkloc loc me)) END
++ ELSIFDEF OCAML_VERSION < OCAML_4_02_0 THEN
++ Some (fun loc me -> Pwith_modsubst (mkloc loc me))
++ ELSE
++ Some (fun loc me -> Pwith_modsubst (mkloc loc "") (mkloc loc me))
++ END
++;
++
++value ocaml_pwith_type loc (i, td) =
++ IFDEF OCAML_VERSION < OCAML_4_02_0 THEN Pwith_type td
++ ELSE Pwith_type (mkloc loc i) td END
+ ;
+
+-value ocaml_pwith_module loc me = Pwith_module (mkloc loc me);
++value ocaml_pwith_module loc me =
++ IFDEF OCAML_VERSION < OCAML_4_02_0 THEN Pwith_module (mkloc loc me)
++ ELSE Pwith_module (mkloc loc (Lident "")) (mkloc loc me) END
++;
+
+ value ocaml_pwith_typesubst =
+ IFDEF OCAML_VERSION < OCAML_3_12_0 THEN None
+@@ -1009,3 +1432,18 @@
+ String.contains
+ END
+ ;
++
++value string_create =
++ IFDEF OCAML_VERSION < OCAML_4_02_0 THEN String.create
++ ELSE Bytes.create END
++;
++
++value string_unsafe_set =
++ IFDEF OCAML_VERSION < OCAML_4_02_0 THEN String.unsafe_set
++ ELSE Bytes.unsafe_set END
++;
++
++value string_set =
++ IFDEF OCAML_VERSION < OCAML_4_02_0 THEN String.set
++ ELSE Bytes.set END
++;
+diff -urN camlp5-6.11/main/argl.ml camlp5-6.12-63a8c30f/main/argl.ml
+--- camlp5-6.11/main/argl.ml 2012-03-01 03:33:18.000000000 +0000
++++ camlp5-6.12-63a8c30f/main/argl.ml 2014-08-01 10:14:54.299065428 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: argl.ml,v 6.2 2012-03-01 03:33:18 deraugla Exp $ *)
++(* argl.ml,v *)
+
+ open Printf;
+ open Versdep;
+diff -urN camlp5-6.11/main/argl.mli camlp5-6.12-63a8c30f/main/argl.mli
+--- camlp5-6.11/main/argl.mli 2010-09-15 17:00:24.000000000 +0100
++++ camlp5-6.12-63a8c30f/main/argl.mli 2014-08-01 10:14:54.299065428 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: argl.mli,v 6.1 2010-09-15 16:00:24 deraugla Exp $ *)
++(* argl.mli,v *)
+
+ value usage :
+ list (string * Arg.spec * string) -> list (string * Arg.spec * string) ->
+diff -urN camlp5-6.11/main/ast2pt.ml camlp5-6.12-63a8c30f/main/ast2pt.ml
+--- camlp5-6.11/main/ast2pt.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/main/ast2pt.ml 2014-08-01 10:14:54.300065429 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: ast2pt.ml,v 6.53 2013-03-19 15:25:22 deraugla Exp $ *)
++(* ast2pt.ml,v *)
+
+ #load "q_MLast.cmo";
+
+@@ -62,14 +62,16 @@
+ ocaml_location (glob_fname.val, lnum, bolp, lnuml, bolpl, bp, ep)
+ ;
+
+-value mktyp loc d = {ptyp_desc = d; ptyp_loc = mkloc loc};
+-value mkpat loc d = {ppat_desc = d; ppat_loc = mkloc loc};
+-value mkexp loc d = {pexp_desc = d; pexp_loc = mkloc loc};
+-value mkmty loc d = {pmty_desc = d; pmty_loc = mkloc loc};
++value mktyp loc d = ocaml_mktyp (mkloc loc) d;
++value mkpat loc d = ocaml_mkpat (mkloc loc) d;
++value mkexp loc d = ocaml_mkexp (mkloc loc) d;
++value mkmty loc d = ocaml_mkmty (mkloc loc) d;
+ value mksig loc d = {psig_desc = d; psig_loc = mkloc loc};
+-value mkmod loc d = {pmod_desc = d; pmod_loc = mkloc loc};
++value mkmod loc d = ocaml_mkmod (mkloc loc) d;
+ value mkstr loc d = {pstr_desc = d; pstr_loc = mkloc loc};
+-value mkfield loc d = {pfield_desc = d; pfield_loc = mkloc loc};
++value mkfield loc d fl = ocaml_mkfield (mkloc loc) d fl;
++value mkfield_var loc = ocaml_mkfield_var (mkloc loc);
++
+ value mkcty loc d =
+ match ocaml_class_type with
+ [ Some class_type → class_type d (mkloc loc)
+@@ -87,9 +89,10 @@
+ let ghpat = mkpat loc in
+ let ghexp = mkexp loc in
+ let void_pat =
+- ghpat (ocaml_ppat_construct (Lident "()") (mkloc loc) None False)
++ ghpat (ocaml_ppat_construct (mkloc loc) (Lident "()") None False)
+ in
+- let f = ghexp (ocaml_pexp_function "" None [(void_pat, e)]) in
++ let pwe = ocaml_case (void_pat, None, mkloc loc, e) in
++ let f = ghexp (ocaml_pexp_function "" None [pwe]) in
+ let delayed = Ldot (Lident "Lazy") "Delayed" in
+ let cloc = mkloc loc in
+ let df = ghexp (ocaml_pexp_construct cloc delayed (Some f) False) in
+@@ -104,7 +107,7 @@
+ loop 0 0 where rec loop i j =
+ if i = String.length s then String.sub s 0 j
+ else if s.[i] = '_' then loop (i + 1) j
+- else do { s.[j] := s.[i]; loop (i + 1) (j + 1) }
++ else do { string_set s j s.[i]; loop (i + 1) (j + 1) }
+ | None → s ]
+ ;
+
+@@ -240,7 +243,7 @@
+ [ TyAcc loc _ _ as f →
+ let (is_cls, li) = ctyp_long_id f in
+ if is_cls then mktyp loc (ocaml_ptyp_class li [] [])
+- else mktyp loc (ocaml_ptyp_constr li [])
++ else mktyp loc (ocaml_ptyp_constr (mkloc loc) li [])
+ | TyAli loc t1 t2 →
+ let (t, i) =
+ match (t1, t2) with
+@@ -254,7 +257,7 @@
+ let (f, al) = ctyp_fa [] f in
+ let (is_cls, li) = ctyp_long_id f in
+ if is_cls then mktyp loc (ocaml_ptyp_class li (List.map ctyp al) [])
+- else mktyp loc (ocaml_ptyp_constr li (List.map ctyp al))
++ else mktyp loc (ocaml_ptyp_constr (mkloc loc) li (List.map ctyp al))
+ | TyArr loc (TyLab loc1 lab t1) t2 →
+ mktyp loc (ocaml_ptyp_arrow (uv lab) (ctyp t1) (ctyp t2))
+ | TyArr loc (TyOlb loc1 lab t1) t2 →
+@@ -264,11 +267,11 @@
+ in
+ mktyp loc (ocaml_ptyp_arrow ("?" ^ uv lab) (ctyp t1) (ctyp t2))
+ | TyArr loc t1 t2 → mktyp loc (ocaml_ptyp_arrow "" (ctyp t1) (ctyp t2))
+- | TyObj loc fl v → mktyp loc (Ptyp_object (meth_list loc (uv fl) v))
++ | TyObj loc fl v → mktyp loc (ocaml_ptyp_object (meth_list loc (uv fl) v))
+ | TyCls loc id →
+ mktyp loc (ocaml_ptyp_class (long_id_of_string_list loc (uv id)) [] [])
+ | TyLab loc _ _ → error loc "labeled type not allowed here"
+- | TyLid loc s → mktyp loc (ocaml_ptyp_constr (Lident (uv s)) [])
++ | TyLid loc s → mktyp loc (ocaml_ptyp_constr (mkloc loc) (Lident (uv s)) [])
+ | TyMan loc _ _ _ → error loc "type manifest not allowed here"
+ | TyOlb loc lab _ → error loc "labeled type not allowed here"
+ | TyPck loc mt →
+@@ -286,7 +289,7 @@
+ | TyRec loc _ → error loc "record type not allowed here"
+ | TySum loc _ → error loc "sum type not allowed here"
+ | TyTup loc tl → mktyp loc (Ptyp_tuple (List.map ctyp (uv tl)))
+- | TyUid loc s → mktyp loc (ocaml_ptyp_constr (Lident (uv s)) [])
++ | TyUid loc s → mktyp loc (ocaml_ptyp_constr (mkloc loc) (Lident (uv s)) [])
+ | TyVrn loc catl ool →
+ let catl =
+ List.map
+@@ -309,9 +312,9 @@
+ | TyXtr loc _ _ → error loc "bad ast TyXtr" ]
+ and meth_list loc fl v =
+ match fl with
+- [ [] → if uv v then [mkfield loc Pfield_var] else []
++ [ [] → if uv v then mkfield_var loc else []
+ | [(lab, t) :: fl] →
+- [mkfield loc (Pfield lab (add_polytype t)) :: meth_list loc fl v] ]
++ mkfield loc (lab, add_polytype t) (meth_list loc fl v) ]
+ and add_polytype t =
+ match ocaml_ptyp_poly with
+ [ Some ptyp_poly →
+@@ -363,11 +366,11 @@
+ | None → (False, False) ]
+ ;
+
+-value mktype loc tl cl tk pf tm =
++value mktype loc tn tl cl tk pf tm =
+ let (params, var_list) = List.split tl in
+ let variance = List.map variance_of_var var_list in
+ let params = List.map uv params in
+- match ocaml_type_declaration params cl tk pf tm (mkloc loc) variance with
++ match ocaml_type_declaration tn params cl tk pf tm (mkloc loc) variance with
+ [ Right td → td
+ | Left msg → error loc msg ]
+ ;
+@@ -407,18 +410,18 @@
+ | None → error loc "no generalized data types in this ocaml version" ]
+ ;
+
+-value type_decl tl priv cl =
++value type_decl tn tl priv cl =
+ fun
+ [ TyMan loc t pf <:ctyp< { $list:ltl$ } >> →
+ let priv = if uv pf then Private else Public in
+- mktype loc tl cl (mktrecord ltl (uv pf)) priv (Some (ctyp t))
++ mktype loc tn tl cl (mktrecord ltl (uv pf)) priv (Some (ctyp t))
+ | TyMan loc t pf <:ctyp< [ $list:ctl$ ] >> →
+ let priv = if uv pf then Private else Public in
+- mktype loc tl cl (mktvariant loc ctl (uv pf)) priv (Some (ctyp t))
++ mktype loc tn tl cl (mktvariant loc ctl (uv pf)) priv (Some (ctyp t))
+ | TyRec loc ltl →
+- mktype loc tl cl (mktrecord (uv ltl) False) priv None
++ mktype loc tn tl cl (mktrecord (uv ltl) False) priv None
+ | TySum loc ctl →
+- mktype loc tl cl (mktvariant loc (uv ctl) False) priv None
++ mktype loc tn tl cl (mktvariant loc (uv ctl) False) priv None
+ | t →
+ let m =
+ match t with
+@@ -427,10 +430,10 @@
+ else None
+ | _ → Some (ctyp t) ]
+ in
+- mktype (loc_of_ctyp t) tl cl Ptype_abstract priv m ]
++ mktype (loc_of_ctyp t) tn tl cl Ptype_abstract priv m ]
+ ;
+
+-value mkvalue_desc t p = ocaml_value_description (ctyp t) p;
++value mkvalue_desc vn t p = ocaml_value_description vn (ctyp t) p;
+
+ value option f =
+ fun
+@@ -456,14 +459,14 @@
+ | t → error (loc_of_module_expr t) "bad module expr long ident" ]
+ ;
+
+-value type_decl_of_with_type loc tpl pf ct =
++value type_decl_of_with_type loc tn tpl pf ct =
+ let (params, var_list) = List.split (uv tpl) in
+ let variance = List.map variance_of_var var_list in
+ let params = List.map uv params in
+ let ct = Some (ctyp ct) in
+ let tk = if pf then ocaml_ptype_abstract else Ptype_abstract in
+ let pf = if pf then Private else Public in
+- ocaml_type_declaration params [] tk pf ct (mkloc loc) variance
++ ocaml_type_declaration tn params [] tk pf ct (mkloc loc) variance
+ ;
+
+ value mkwithc =
+@@ -478,13 +481,14 @@
+ pwith_modsubst (mkloc loc) (module_expr_long_id m))
+ | None → error loc "no with module := in this ocaml version" ]
+ | WcTyp loc id tpl pf ct →
+- match type_decl_of_with_type loc tpl (uv pf) ct with
+- [ Right td → (long_id_of_string_list loc (uv id), Pwith_type td)
++ let li = long_id_of_string_list loc (uv id) in
++ match type_decl_of_with_type loc "" tpl (uv pf) ct with
++ [ Right td -> (li, ocaml_pwith_type (mkloc loc) (li, td))
+ | Left msg → error loc msg ]
+ | WcTys loc id tpl t →
+ match ocaml_pwith_typesubst with
+ [ Some pwith_typesubst →
+- match type_decl_of_with_type loc tpl False t with
++ match type_decl_of_with_type loc "" tpl False t with
+ [ Right td →
+ let li = long_id_of_string_list loc (uv id) in
+ (li, pwith_typesubst td)
+@@ -533,8 +537,8 @@
+ [ (<:patt:< $uid:i$ >>, il) →
+ match p2 with
+ [ <:patt< $uid:s$ >> →
+- ocaml_ppat_construct (mkli (conv_con s) [i :: il])
+- (mkloc loc) None (not Prtools.no_constructors_arity.val)
++ ocaml_ppat_construct (mkloc loc) (mkli (conv_con s) [i :: il])
++ None (not Prtools.no_constructors_arity.val)
+ | _ → error (loc_of_patt p2) "bad access pattern" ]
+ | _ → error (loc_of_patt p2) "bad pattern" ]
+ in
+@@ -558,13 +562,11 @@
+ if Prtools.no_constructors_arity.val then
+ let a =
+ match al with
+- [ [a] → a
+- | _ → mkpat loc (Ppat_tuple al) ]
++ [ [a] -> a
++ | _ -> mkpat loc (Ppat_tuple al) ]
+ in
+- mkpat loc (ocaml_ppat_construct li li_loc (Some a) False)
+- else
+- let a = mkpat loc (Ppat_tuple al) in
+- mkpat loc (ocaml_ppat_construct li li_loc (Some a) True)
++ mkpat loc (ocaml_ppat_construct li_loc li (Some a) False)
++ else mkpat_ocaml_ppat_construct_arity (mkloc loc) li_loc li al
+ | Some _ | None →
+ match ocaml_ppat_variant with
+ [ Some (ppat_variant_pat, ppat_variant) →
+@@ -620,7 +622,8 @@
+ mkpat loc (ocaml_ppat_record (List.map mklabpat lpl) is_closed)
+ | PaStr loc s →
+ mkpat loc
+- (Ppat_constant (Const_string (string_of_string_token loc (uv s))))
++ (Ppat_constant
++ (ocaml_const_string (string_of_string_token loc (uv s))))
+ | PaTup loc pl → mkpat loc (Ppat_tuple (List.map patt (uv pl)))
+ | PaTyc loc p t → mkpat loc (Ppat_constraint (patt p) (ctyp t))
+ | PaTyp loc sl →
+@@ -632,7 +635,7 @@
+ | PaUid loc s →
+ let ca = not Prtools.no_constructors_arity.val in
+ mkpat loc
+- (ocaml_ppat_construct (Lident (conv_con (uv s))) (mkloc loc) None ca)
++ (ocaml_ppat_construct (mkloc loc) (Lident (conv_con (uv s))) None ca)
+ | PaUnp loc s mto →
+ match ocaml_ppat_unpack with
+ [ Some (ppat_unpack, ptyp_package) →
+@@ -788,20 +791,20 @@
+ | _ → f ]
+ in
+ let al = List.rev (List.fold_left label_expr [] al) in
+- match (expr f).pexp_desc with
+- [ Pexp_construct li None _ →
++ match ocaml_pexp_construct_args (expr f).pexp_desc with
++ [ Some (li, li_loc, None, _) →
+ let al = List.map snd al in
+ if Prtools.no_constructors_arity.val then
+ let a =
+ match al with
+- [ [a] → a
+- | _ → mkexp loc (Pexp_tuple al) ]
++ [ [a] -> a
++ | _ -> mkexp loc (Pexp_tuple al) ]
+ in
+- mkexp loc (Pexp_construct li (Some a) False)
++ mkexp loc (ocaml_pexp_construct li_loc li (Some a) False)
+ else
+- let a = mkexp loc (Pexp_tuple al) in
+- mkexp loc (Pexp_construct li (Some a) True)
+- | e →
++ mkexp_ocaml_pexp_construct_arity (mkloc loc) li_loc li al
++ | Some _ | None →
++ let e = (expr f).pexp_desc in
+ match ocaml_pexp_variant with
+ [ Some (pexp_variant_pat, pexp_variant) →
+ match pexp_variant_pat e with
+@@ -861,7 +864,8 @@
+ | ExChr loc s →
+ mkexp loc (Pexp_constant (Const_char (char_of_char_token loc (uv s))))
+ | ExCoe loc e t1 t2 →
+- mkexp loc (Pexp_constraint (expr e) (option ctyp t1) (Some (ctyp t2)))
++ mkexp loc
++ (ocaml_pexp_constraint (expr e) (option ctyp t1) (Some (ctyp t2)))
+ | ExFlo loc s → mkexp loc (Pexp_constant (Const_float (uv s)))
+ | ExFor loc i e1 e2 df el →
+ let e3 = <:expr< do { $list:uv el$ } >> in
+@@ -870,16 +874,16 @@
+ | ExFun loc pel →
+ match uv pel with
+ [ [(PaLab ploc lppo, w, e)] →
+- List.fold_right
+- (fun (p, po) e →
+- let lab = label_of_patt p in
+- let p =
+- match uv po with
+- [ Some p → p
+- | None → p ]
+- in
+- mkexp loc (ocaml_pexp_function lab None [(patt p, e)]))
+- (uv lppo) (when_expr e (uv w))
++ match uv lppo with
++ [ [(p, po)] →
++ let lab = label_of_patt p in
++ let p =
++ match uv po with
++ [ Some p → p
++ | None → p ]
++ in
++ mkexp loc (ocaml_pexp_function lab None [mkpwe (p, w, e)])
++ | _ → error loc "bad AST" ]
+ | [(PaNty loc s, w, e)] →
+ match ocaml_pexp_newtype with
+ [ Some newtype →
+@@ -896,7 +900,7 @@
+ in
+ mkexp loc
+ (ocaml_pexp_function ("?" ^ lab) (option expr (uv eo))
+- [(patt p, when_expr e (uv w))])
++ [mkpwe (p, w, e)])
+ | pel →
+ let pel =
+ if split_or_patterns_with_bindings then
+@@ -972,7 +976,7 @@
+ match mto with
+ [ Some mt →
+ let pt = package_of_module_type loc mt in
+- Pexp_constraint (mkexp loc e)
++ ocaml_pexp_constraint (mkexp loc e)
+ (Some (mktyp loc (ptyp_package pt))) None
+ | None → e ]
+ in
+@@ -1036,10 +1040,12 @@
+ [("", expr e1); ("", expr e2)])
+ | ExStr loc s →
+ mkexp loc
+- (Pexp_constant (Const_string (string_of_string_token loc (uv s))))
++ (Pexp_constant
++ (ocaml_const_string (string_of_string_token loc (uv s))))
+ | ExTry loc e pel → mkexp loc (Pexp_try (expr e) (List.map mkpwe (uv pel)))
+ | ExTup loc el → mkexp loc (Pexp_tuple (List.map expr (uv el)))
+- | ExTyc loc e t → mkexp loc (Pexp_constraint (expr e) (Some (ctyp t)) None)
++ | ExTyc loc e t →
++ mkexp loc (ocaml_pexp_constraint (expr e) (Some (ctyp t)) None)
+ | ExUid loc s →
+ let ca = not Prtools.no_constructors_arity.val in
+ let cloc = mkloc loc in
+@@ -1091,7 +1097,7 @@
+ [ Some p → patt p
+ | None →
+ mkpat loc
+- (ocaml_ppat_construct (Lident "()") (mkloc loc) None
++ (ocaml_ppat_construct (mkloc loc) (Lident "()") None
+ False) ]
+ in
+ (mkloc locp, (mkloc loc, uv s), p))
+@@ -1102,6 +1108,7 @@
+ in
+ (mkloc jc.jcLoc, jcval)
+ and mkpe (p, e) =
++ let loc = Ploc.encl (loc_of_patt p) (loc_of_expr e) in
+ let (p, e) =
+ match e with
+ [ ExTyc loc e (TyPol _ _ _ as t) → (PaTyc loc p t, e)
+@@ -1113,7 +1120,7 @@
+ [ PaTyc loc p (TyPot loc1 nt ct) → expand_gadt_type loc p loc1 nt ct e
+ | p → (p, e) ]
+ in
+- (patt p, expr e)
++ ocaml_value_binding (mkloc loc) (patt p) (expr e)
+ and expand_gadt_type loc p loc1 nt ct e =
+ let nt = uv nt in
+ let e = <:expr< ($e$ : $ct$) >> in
+@@ -1125,11 +1132,8 @@
+ let tp = List.map (fun s → "&" ^ s) nt in
+ let ct = <:ctyp< ! $list:tp$ . $ct$ >> in
+ (<:patt< ($p$ : $ct$) >>, e)
+-and mkpwe (p, w, e) = (patt p, when_expr e (uv w))
+-and when_expr e =
+- fun
+- [ Some w → mkexp (loc_of_expr e) (Pexp_when (expr w) (expr e))
+- | None → expr e ]
++and mkpwe (p, w, e) =
++ ocaml_case (patt p, option expr (uv w), mkloc (loc_of_expr e), expr e)
+ and mklabexp (lab, e) =
+ (patt_label_long_id lab, mkloc (loc_of_patt lab), expr e)
+ and mkideexp (ide, e) = (ide, expr e)
+@@ -1142,7 +1146,8 @@
+ (ctyp t1, ctyp t2, mkloc loc))
+ (uv td.tdCon)
+ in
+- (uv (snd (uv td.tdNam)), type_decl (uv td.tdPrm) priv cl td.tdDef)
++ let tn = uv (snd (uv td.tdNam)) in
++ (tn, type_decl tn (uv td.tdPrm) priv cl td.tdDef)
+ and module_type =
+ fun
+ [ MtAcc loc _ _ as f →
+@@ -1179,15 +1184,20 @@
+ | SgDcl loc sl → List.fold_right sig_item (uv sl) l
+ | SgDir loc _ _ → l
+ | SgExc loc n tl →
+- [mksig loc (ocaml_psig_exception (uv n) (List.map ctyp (uv tl))) :: l]
++ [mksig loc
++ (ocaml_psig_exception (mkloc loc) (uv n) (List.map ctyp (uv tl))) ::
++ l]
+ | SgExt loc n t p →
+- [mksig loc (ocaml_psig_value (uv n) (mkvalue_desc t (uv p))) :: l]
+- | SgInc loc mt → [mksig loc (Psig_include (module_type mt)) :: l]
++ let vn = uv n in
++ [mksig loc (ocaml_psig_value vn (mkvalue_desc vn t (uv p))) :: l]
++ | SgInc loc mt →
++ [mksig loc (ocaml_psig_include (mkloc loc) (module_type mt)) :: l]
+ | SgMod loc rf ntl →
+ if not (uv rf) then
+ List.fold_right
+ (fun (n, mt) l →
+- [mksig loc (ocaml_psig_module (uv n) (module_type mt)) :: l])
++ [mksig loc
++ (ocaml_psig_module (mkloc loc) (uv n) (module_type mt)) :: l])
+ (uv ntl) l
+ else
+ match ocaml_psig_recmodule with
+@@ -1198,21 +1208,25 @@
+ [mksig loc (psig_recmodule ntl) :: l]
+ | None → error loc "no recursive module in this ocaml version" ]
+ | SgMty loc n mt →
+- let si =
++ let mto =
+ match mt with
+- [ MtQuo _ _ → Pmodtype_abstract
+- | _ → Pmodtype_manifest (module_type mt) ]
++ | MtQuo _ _ -> None
++ | _ -> Some (module_type mt)
++ end
+ in
+- [mksig loc (ocaml_psig_modtype (uv n) si) :: l]
++ [mksig loc (ocaml_psig_modtype (mkloc loc) (uv n) mto) :: l]
+ | SgOpn loc id →
+- [mksig loc (ocaml_psig_open (long_id_of_string_list loc (uv id))) :: l]
++ [mksig loc
++ (ocaml_psig_open (mkloc loc) (long_id_of_string_list loc (uv id))) ::
++ l]
+ | SgTyp loc tdl →
+ [mksig loc (ocaml_psig_type (List.map mktype_decl (uv tdl))) :: l]
+ | SgUse loc fn sl →
+ Ploc.call_with glob_fname (uv fn)
+ (fun () → List.fold_right (fun (si, _) → sig_item si) (uv sl) l) ()
+ | SgVal loc n t →
+- [mksig loc (ocaml_psig_value (uv n) (mkvalue_desc t [])) :: l]
++ let vn = uv n in
++ [mksig loc (ocaml_psig_value vn (mkvalue_desc vn t [])) :: l]
+ | SgXtr loc _ _ → error loc "bad ast SgXtr" ]
+ and module_expr =
+ fun
+@@ -1240,7 +1254,7 @@
+ [ Some mt →
+ let pt = package_of_module_type loc mt in
+ let t = mktyp loc (ptyp_package pt) in
+- mkexp loc (Pexp_constraint (expr e) (Some t) None)
++ mkexp loc (ocaml_pexp_constraint (expr e) (Some t) None)
+ | None →
+ expr e ]
+ in
+@@ -1269,28 +1283,33 @@
+ | StExc loc n tl sl →
+ let si =
+ match (uv tl, uv sl) with
+- [ (tl, []) → ocaml_pstr_exception (uv n) (List.map ctyp tl)
++ [ (tl, []) →
++ ocaml_pstr_exception (mkloc loc) (uv n) (List.map ctyp tl)
+ | ([], sl) →
+ match ocaml_pstr_exn_rebind with
+ [ Some pstr_exn_rebind →
+- pstr_exn_rebind (uv n) (long_id_of_string_list loc sl)
++ pstr_exn_rebind (mkloc loc) (uv n)
++ (long_id_of_string_list loc sl)
+ | None →
+ error loc "no exception renaming in this ocaml version" ]
+ | _ → error loc "renamed exception should not have parameters" ]
+ in
+ [mkstr loc si :: l]
+- | StExp loc e → [mkstr loc (Pstr_eval (expr e)) :: l]
++ | StExp loc e → [mkstr loc (ocaml_pstr_eval (expr e)) :: l]
+ | StExt loc n t p →
+- [mkstr loc (ocaml_pstr_primitive (uv n) (mkvalue_desc t (uv p))) :: l]
++ let vn = uv n in
++ [mkstr loc (ocaml_pstr_primitive vn (mkvalue_desc vn t (uv p))) :: l]
+ | StInc loc me →
+ match ocaml_pstr_include with
+- [ Some pstr_include → [mkstr loc (pstr_include (module_expr me)) :: l]
++ [ Some pstr_include →
++ [mkstr loc (pstr_include (mkloc loc) (module_expr me)) :: l]
+ | None → error loc "no include in this ocaml version" ]
+ | StMod loc rf nel →
+ if not (uv rf) then
+ List.fold_right
+ (fun (n, me) l →
+- [mkstr loc (ocaml_pstr_module (uv n) (module_expr me)) :: l])
++ let m = ocaml_pstr_module (mkloc loc) (uv n) (module_expr me) in
++ [mkstr loc m :: l])
+ (uv nel) l
+ else
+ match ocaml_pstr_recmodule with
+@@ -1311,9 +1330,12 @@
+ [mkstr loc (pstr_recmodule nel) :: l]
+ | None → error loc "no recursive module in this ocaml version" ]
+ | StMty loc n mt →
+- [mkstr loc (ocaml_pstr_modtype (uv n) (module_type mt)) :: l]
++ let m = ocaml_pstr_modtype (mkloc loc) (uv n) (module_type mt) in
++ [mkstr loc m :: l]
+ | StOpn loc id →
+- [mkstr loc (ocaml_pstr_open (long_id_of_string_list loc (uv id))) :: l]
++ [mkstr loc
++ (ocaml_pstr_open (mkloc loc) (long_id_of_string_list loc (uv id))) ::
++ l]
+ | StTyp loc tdl →
+ [mkstr loc (ocaml_pstr_type (List.map mktype_decl (uv tdl))) :: l]
+ | StUse loc fn sl →
+@@ -1375,7 +1397,8 @@
+ | None → error loc "no class constraint in this ocaml version" ]
+ | CgDcl loc cl → List.fold_right class_sig_item (uv cl) l
+ | CgInh loc ct →
+- [ocaml_class_type_field (mkloc loc) (Pctf_inher (class_type ct)) :: l]
++ [ocaml_class_type_field (mkloc loc)
++ (ocaml_pctf_inher (class_type ct)) :: l]
+ | CgMth loc pf s t →
+ [ocaml_class_type_field (mkloc loc)
+ (ocaml_pctf_meth
+@@ -1521,18 +1544,17 @@
+
+ value directive loc =
+ fun
+- [ None → Pdir_none
+- | Some <:expr< $str:s$ >> → Pdir_string s
+- | Some <:expr< $int:i$ >> → Pdir_int (int_of_string_l loc i)
+- | Some <:expr< True >> →
++ [ <:expr< $str:s$ >> → Pdir_string s
++ | <:expr< $int:i$ >> → Pdir_int (int_of_string_l loc i)
++ | <:expr< True >> →
+ match ocaml_pdir_bool with
+ [ Some pdir_bool → pdir_bool True
+ | None → error loc "no such kind of directive in this ocaml version" ]
+- | Some <:expr< False >> →
++ | <:expr< False >> →
+ match ocaml_pdir_bool with
+ [ Some pdir_bool → pdir_bool False
+ | None → error loc "no such kind of directive in this ocaml version" ]
+- | Some e →
++ | e →
+ let sl =
+ loop e where rec loop =
+ fun
+@@ -1545,9 +1567,16 @@
+ Pdir_ident (long_id_of_string_list loc sl) ]
+ ;
+
++value directive_args loc d =
++ match d with
++ | Some d -> directive loc d
++ | None -> Pdir_none
++ end
++;
++
+ value phrase =
+ fun
+- [ StDir loc d dp → Ptop_dir (uv d) (directive loc (uv dp))
++ [ StDir loc d dp → Ptop_dir (uv d) (directive_args loc (uv dp))
+ | si → do {
+ glob_fname.val := Plexing.input_file.val;
+ Ptop_def (str_item si [])
+diff -urN camlp5-6.11/main/ast2pt.mli camlp5-6.12-63a8c30f/main/ast2pt.mli
+--- camlp5-6.11/main/ast2pt.mli 2010-09-15 17:00:24.000000000 +0100
++++ camlp5-6.12-63a8c30f/main/ast2pt.mli 2014-08-01 10:14:54.300065429 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: ast2pt.mli,v 6.1 2010-09-15 16:00:24 deraugla Exp $ *)
++(* ast2pt.mli,v *)
+
+ (** Conversion between Camlp5 AST into OCaml AST *)
+
+diff -urN camlp5-6.11/main/.cvsignore camlp5-6.12-63a8c30f/main/.cvsignore
+--- camlp5-6.11/main/.cvsignore 2010-09-15 17:00:24.000000000 +0100
++++ camlp5-6.12-63a8c30f/main/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1,6 +0,0 @@
+-*.a
+-*.cm[oiax]
+-*.cmxa
+-*.lib
+-crc.tmp
+-camlp5
+diff -urN camlp5-6.11/main/exparser.ml camlp5-6.12-63a8c30f/main/exparser.ml
+--- camlp5-6.11/main/exparser.ml 2013-03-15 16:17:17.000000000 +0000
++++ camlp5-6.12-63a8c30f/main/exparser.ml 2014-08-01 10:14:54.300065429 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: exparser.ml,v 6.7 2013-03-15 16:17:17 deraugla Exp $ *)
++(* exparser.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #load "q_MLast.cmo";
+diff -urN camlp5-6.11/main/exparser.mli camlp5-6.12-63a8c30f/main/exparser.mli
+--- camlp5-6.11/main/exparser.mli 2012-01-09 14:22:21.000000000 +0000
++++ camlp5-6.12-63a8c30f/main/exparser.mli 2014-08-01 10:14:54.300065429 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: exparser.mli,v 6.3 2012-01-09 14:22:21 deraugla Exp $ *)
++(* exparser.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (* expand parser ast into normal one *)
+diff -urN camlp5-6.11/main/.gitignore camlp5-6.12-63a8c30f/main/.gitignore
+--- camlp5-6.11/main/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/main/.gitignore 2014-08-01 10:14:54.299065428 +0100
+@@ -0,0 +1,6 @@
++*.a
++*.cm[oiax]
++*.cmxa
++*.lib
++crc.tmp
++camlp5
+diff -urN camlp5-6.11/main/main.ml camlp5-6.12-63a8c30f/main/main.ml
+--- camlp5-6.11/main/main.ml 2013-03-13 06:48:13.000000000 +0000
++++ camlp5-6.12-63a8c30f/main/main.ml 2014-08-01 10:14:54.300065429 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: main.ml,v 6.11 2013-03-13 06:48:13 deraugla Exp $ *)
++(* main.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #load "q_MLast.cmo";
+diff -urN camlp5-6.11/main/Makefile camlp5-6.12-63a8c30f/main/Makefile
+--- camlp5-6.11/main/Makefile 2012-03-06 11:00:53.000000000 +0000
++++ camlp5-6.12-63a8c30f/main/Makefile 2014-08-01 10:14:54.299065428 +0100
+@@ -1,4 +1,4 @@
+-# $Id: Makefile,v 6.8 2012-03-06 11:00:53 deraugla Exp $
++# Makefile,v
+
+ TOP=..
+ include $(TOP)/config/Makefile
+diff -urN camlp5-6.11/main/mkreloc.sh camlp5-6.12-63a8c30f/main/mkreloc.sh
+--- camlp5-6.11/main/mkreloc.sh 2012-03-06 11:00:53.000000000 +0000
++++ camlp5-6.12-63a8c30f/main/mkreloc.sh 2014-08-01 10:14:54.300065429 +0100
+@@ -1,5 +1,5 @@
+ #!/bin/sh
+-# $Id: mkreloc.sh,v 6.4 2012-03-06 11:00:53 deraugla Exp $
++# mkreloc.sh,v
+
+ IFILE=pa_r.ml
+ OFILE=reloc.ml
+diff -urN camlp5-6.11/main/mLast.mli camlp5-6.12-63a8c30f/main/mLast.mli
+--- camlp5-6.11/main/mLast.mli 2013-07-02 17:31:25.000000000 +0100
++++ camlp5-6.12-63a8c30f/main/mLast.mli 2014-08-01 10:14:54.300065429 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: mLast.mli,v 6.26 2013-07-02 16:31:25 deraugla Exp $ *)
++(* mLast.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #load "pa_macro.cmo";
+diff -urN camlp5-6.11/main/parserify.ml camlp5-6.12-63a8c30f/main/parserify.ml
+--- camlp5-6.11/main/parserify.ml 2013-03-14 21:34:32.000000000 +0000
++++ camlp5-6.12-63a8c30f/main/parserify.ml 2014-08-01 10:14:54.300065429 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: parserify.ml,v 6.5 2013-03-14 21:34:32 deraugla Exp $ *)
++(* parserify.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #load "q_MLast.cmo";
+diff -urN camlp5-6.11/main/parserify.mli camlp5-6.12-63a8c30f/main/parserify.mli
+--- camlp5-6.11/main/parserify.mli 2012-01-09 14:22:21.000000000 +0000
++++ camlp5-6.12-63a8c30f/main/parserify.mli 2014-08-01 10:14:54.300065429 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: parserify.mli,v 6.3 2012-01-09 14:22:21 deraugla Exp $ *)
++(* parserify.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ type spat_comp =
+diff -urN camlp5-6.11/main/pcaml.ml camlp5-6.12-63a8c30f/main/pcaml.ml
+--- camlp5-6.11/main/pcaml.ml 2013-08-15 23:08:21.000000000 +0100
++++ camlp5-6.12-63a8c30f/main/pcaml.ml 2014-08-01 10:14:54.300065429 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: pcaml.ml,v 6.45 2013-08-15 22:08:21 deraugla Exp $ *)
++(* pcaml.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #load "pa_macro.cmo";
+@@ -7,7 +7,7 @@
+
+ open Printf;
+
+-value version = "6.11";
++value version = "6.12-exp";
+ value syntax_name = ref "";
+
+ value gram =
+diff -urN camlp5-6.11/main/pcaml.mli camlp5-6.12-63a8c30f/main/pcaml.mli
+--- camlp5-6.11/main/pcaml.mli 2013-04-19 09:43:39.000000000 +0100
++++ camlp5-6.12-63a8c30f/main/pcaml.mli 2014-08-01 10:14:54.301065429 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: pcaml.mli,v 6.7 2013-04-19 08:43:39 deraugla Exp $ *)
++(* pcaml.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #load "pa_macro.cmo";
+diff -urN camlp5-6.11/main/prtools.ml camlp5-6.12-63a8c30f/main/prtools.ml
+--- camlp5-6.11/main/prtools.ml 2012-01-09 14:22:21.000000000 +0000
++++ camlp5-6.12-63a8c30f/main/prtools.ml 2014-08-01 10:14:54.301065429 +0100
+@@ -1,11 +1,12 @@
+ (* camlp5r *)
+-(* $Id: prtools.ml,v 6.10 2012-01-09 14:22:21 deraugla Exp $ *)
++(* prtools.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #load "q_MLast.cmo";
+ #load "pa_macro.cmo";
+
+ open Pretty;
++open Versdep;
+
+ type pr_context =
+ Pprintf.pr_context ==
+@@ -352,12 +353,12 @@
+
+ module Buff =
+ struct
+- value buff = ref (String.create 80);
++ value buff = ref (string_create 80);
+ value store len x = do {
+ if len >= String.length buff.val then
+- buff.val := buff.val ^ String.create (String.length buff.val)
++ buff.val := buff.val ^ string_create (String.length buff.val)
+ else ();
+- buff.val.[len] := x;
++ string_set buff.val len x;
+ succ len
+ };
+ value mstore len s =
+diff -urN camlp5-6.11/main/prtools.mli camlp5-6.12-63a8c30f/main/prtools.mli
+--- camlp5-6.11/main/prtools.mli 2012-01-09 14:22:21.000000000 +0000
++++ camlp5-6.12-63a8c30f/main/prtools.mli 2014-08-01 10:14:54.301065429 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: prtools.mli,v 6.5 2012-01-09 14:22:21 deraugla Exp $ *)
++(* prtools.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ type pr_context =
+diff -urN camlp5-6.11/main/quotation.ml camlp5-6.12-63a8c30f/main/quotation.ml
+--- camlp5-6.11/main/quotation.ml 2012-01-09 14:22:21.000000000 +0000
++++ camlp5-6.12-63a8c30f/main/quotation.ml 2014-08-01 10:14:54.301065429 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: quotation.ml,v 6.3 2012-01-09 14:22:21 deraugla Exp $ *)
++(* quotation.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ type expander =
+diff -urN camlp5-6.11/main/quotation.mli camlp5-6.12-63a8c30f/main/quotation.mli
+--- camlp5-6.11/main/quotation.mli 2012-01-09 14:22:21.000000000 +0000
++++ camlp5-6.12-63a8c30f/main/quotation.mli 2014-08-01 10:14:54.301065429 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: quotation.mli,v 6.3 2012-01-09 14:22:21 deraugla Exp $ *)
++(* quotation.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (** Quotation operations. *)
+diff -urN camlp5-6.11/main/reloc.ml camlp5-6.12-63a8c30f/main/reloc.ml
+--- camlp5-6.11/main/reloc.ml 2012-03-09 14:01:54.000000000 +0000
++++ camlp5-6.12-63a8c30f/main/reloc.ml 2014-08-01 10:14:54.301065429 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: reloc.ml,v 6.26 2012-03-09 14:01:54 deraugla Exp $ *)
++(* reloc.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #load "pa_macro.cmo";
+diff -urN camlp5-6.11/main/reloc.mli camlp5-6.12-63a8c30f/main/reloc.mli
+--- camlp5-6.11/main/reloc.mli 2012-01-09 14:22:21.000000000 +0000
++++ camlp5-6.12-63a8c30f/main/reloc.mli 2014-08-01 10:14:54.301065429 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: reloc.mli,v 6.3 2012-01-09 14:22:21 deraugla Exp $ *)
++(* reloc.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ value expr : (MLast.loc -> MLast.loc) -> int -> MLast.expr -> MLast.expr;
+diff -urN camlp5-6.11/Makefile camlp5-6.12-63a8c30f/Makefile
+--- camlp5-6.11/Makefile 2013-03-06 10:08:18.000000000 +0000
++++ camlp5-6.12-63a8c30f/Makefile 2014-08-01 10:14:54.283065418 +0100
+@@ -1,4 +1,4 @@
+-# $Id: Makefile,v 6.29 2013-03-06 10:08:18 deraugla Exp $
++# Makefile,v
+
+ include config/Makefile
+
+@@ -86,13 +86,13 @@
+
+ backup:
+ mkdir boot.new
+- $(MAKE) mv_cvs FROM=boot TO=boot.new
++ $(MAKE) mv_git FROM=boot TO=boot.new
+ mv boot boot.new/SAVED
+ mv boot.new boot
+
+ restore:
+ mv boot/SAVED boot.new
+- $(MAKE) mv_cvs FROM=boot TO=boot.new
++ $(MAKE) mv_git FROM=boot TO=boot.new
+ rm -rf boot
+ mv boot.new boot
+
+@@ -181,8 +181,6 @@
+
+ # Bootstrap the sources
+
+-TXTGEN=File generated by program: edit only if it does not compile.
+-
+ bootstrap_sources:
+ rm -rf ocaml_src.new
+ mkdir ocaml_src.new
+@@ -196,8 +194,7 @@
+ rmdir ocaml_src.new/$$DIR
+ rmdir ocaml_src.new
+
+-new_sources:
+- cd etc; $(MAKE) $(PR_O)
++new_sources: oprinter
+ @-for i in $(FDIRS); do \
+ mkdir ocaml_src.new/$$i; \
+ $(MAKE) $(NO_PR_DIR) new_source DIR=$$i FILE=Makefile; \
+@@ -231,17 +228,14 @@
+ echo ============================================; \
+ echo ocaml_src.new/$$DIR/$$k; \
+ if [ "$$k" = "Makefile" ]; then \
+- sed 's/# $$Id.*\$$/# $(TXTGEN)/' Makefile | \
+- sed 's-^TOP=..$$-TOP=../..-'; \
++ sed 's-^TOP=..$$-TOP=../..-' Makefile; \
+ else \
+ OCAMLN=$(OCAMLN) CAMLP5N=$(CAMLP5N) VERSDIR=$$VERSDIR \
+- ../tools/conv.sh $(PR_O) $$opt $$FILE | \
+- sed 's/$$Id.*\$$/$(TXTGEN)/'; \
++ ../tools/conv.sh $(PR_O) $$opt $$FILE; \
+ fi > \
+ ../ocaml_src.new/$$DIR/$$k
+
+-compare_sources:
+- cd etc; $(MAKE) $(PR_O)
++compare_sources: oprinter
+ @-for i in $(FDIRS); do \
+ $(MAKE) $(NO_PR_DIR) compare_source DIR=$$i FILE=Makefile; \
+ echo ============================================; \
+@@ -268,17 +262,14 @@
+ echo ============================================; \
+ echo ocaml_src/$$DIR/$$k; \
+ if [ "$$k" = "Makefile" ]; then \
+- sed 's/# $$Id.*\$$/# $(TXTGEN)/' Makefile | \
+- sed 's-^TOP=..$$-TOP=../..-'; \
++ sed 's-^TOP=..$$-TOP=../..-' Makefile; \
+ else \
+ OCAMLN=$(OCAMLN) CAMLP5N=$(CAMLP5N) VERSDIR=$$VERSDIR \
+- ../tools/conv.sh $(PR_O) $$opt $$FILE | \
+- sed 's/$$Id.*\$$/$(TXTGEN)/'; \
++ ../tools/conv.sh $(PR_O) $$opt $$FILE; \
+ fi | \
+ diff $(DIFF_OPT) ../ocaml_src/$$DIR/$$k - || :
+
+-bootstrap_all_versdep:
+- cd etc; $(MAKE) $(PR_O)
++bootstrap_all_versdep: oprinter
+ @-for i in ocaml_src/lib/versdep/*.ml; do \
+ $(MAKE) $(NO_PR_DIR) bootstrap_versdep i=$$i n=ocaml; \
+ done; \
+@@ -298,11 +289,9 @@
+ n=$$(echo $$n | tr a-z A-Z); \
+ opt="-U$$k -U$$m -D$$j -D$$n"; \
+ OCAMLN=$(OCAMLN) CAMLP5N=$(CAMLP5N) ../tools/conv.sh $(PR_O) $$opt \
+- versdep.ml | \
+- sed -e 's/\$$Id.*\$$/$(TXTGEN)/' > ../$$i -
++ versdep.ml > ../$$i
+
+-compare_all_versdep:
+- cd etc; $(MAKE) $(PR_O)
++compare_all_versdep: oprinter
+ @-for i in ocaml_src/lib/versdep/*.ml; do \
+ $(MAKE) $(NO_PR_DIR) compare_versdep i=$$i n=ocaml; \
+ done; \
+@@ -323,7 +312,10 @@
+ opt="-U$$k -U$$m -D$$j -D$$n"; \
+ OCAMLN=$(OCAMLN) CAMLP5N=$(CAMLP5N) \
+ ../tools/conv.sh $(PR_O) $$opt versdep.ml | \
+- sed -e 's/\$$Id.*\$$/$(TXTGEN)/' | diff ../$$i -
++ diff $(DIFF_OPT) ../$$i -
++
++oprinter:
++ cd etc; $(MAKE) $(PR_O)
+
+ untouch_sources:
+ @-cd ocaml_src; \
+@@ -336,9 +328,9 @@
+ done
+
+ promote_sources:
+- $(MAKE) mv_cvs FROM=ocaml_src TO=ocaml_src.new
++ $(MAKE) mv_git FROM=ocaml_src TO=ocaml_src.new
+ for i in $(FDIRS) lib/versdep lib/versdep/jocaml; do \
+- $(MAKE) mv_cvs FROM=ocaml_src/$$i TO=ocaml_src.new/$$i; \
++ $(MAKE) mv_git FROM=ocaml_src/$$i TO=ocaml_src.new/$$i; \
+ done
+ mv ocaml_src/tools ocaml_src.new/.
+ mv ocaml_src ocaml_src.new/SAVED
+@@ -349,9 +341,9 @@
+ mv ocaml_src.new/SAVED ocaml_src
+ mv ocaml_src.new/tools ocaml_src/.
+ for i in $(FDIRS) lib/versdep lib/versdep/jocaml; do \
+- $(MAKE) mv_cvs FROM=ocaml_src.new/$$i TO=ocaml_src/$$i; \
++ $(MAKE) mv_git FROM=ocaml_src.new/$$i TO=ocaml_src/$$i; \
+ done
+- $(MAKE) mv_cvs FROM=ocaml_src.new TO=ocaml_src
++ $(MAKE) mv_git FROM=ocaml_src.new TO=ocaml_src
+
+ clean_sources:
+ rm -rf ocaml_src/SAVED/SAVED
+@@ -369,4 +361,7 @@
+ test ! -d $(FROM)/.svn || mv $(FROM)/.svn $(TO)/.
+ test ! -f $(FROM)/.cvsignore || mv $(FROM)/.cvsignore $(TO)/.
+
++mv_git:
++ test ! -f $(FROM)/.gitignore || mv $(FROM)/.gitignore $(TO)/.
++
+ .PHONY: install
+diff -urN camlp5-6.11/man/.cvsignore camlp5-6.12-63a8c30f/man/.cvsignore
+--- camlp5-6.11/man/.cvsignore 2010-09-15 17:00:24.000000000 +0100
++++ camlp5-6.12-63a8c30f/man/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1,2 +0,0 @@
+-camlp5.1
+-camlp5.help
+diff -urN camlp5-6.11/man/.gitignore camlp5-6.12-63a8c30f/man/.gitignore
+--- camlp5-6.11/man/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/man/.gitignore 2014-08-01 10:14:54.301065429 +0100
+@@ -0,0 +1,2 @@
++camlp5.1
++camlp5.help
+diff -urN camlp5-6.11/man/Makefile camlp5-6.12-63a8c30f/man/Makefile
+--- camlp5-6.11/man/Makefile 2012-03-02 19:14:36.000000000 +0000
++++ camlp5-6.12-63a8c30f/man/Makefile 2014-08-01 10:14:54.301065429 +0100
+@@ -1,4 +1,4 @@
+-# $Id: Makefile,v 6.3 2012-03-02 19:14:36 deraugla Exp $
++# Makefile,v
+
+ include ../config/Makefile
+
+diff -urN camlp5-6.11/meta/.cvsignore camlp5-6.12-63a8c30f/meta/.cvsignore
+--- camlp5-6.11/meta/.cvsignore 2010-09-15 17:00:24.000000000 +0100
++++ camlp5-6.12-63a8c30f/meta/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1,3 +0,0 @@
+-*.cm[oiax]
+-camlp5r
+-camlp5r.opt
+diff -urN camlp5-6.11/meta/.gitignore camlp5-6.12-63a8c30f/meta/.gitignore
+--- camlp5-6.11/meta/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/meta/.gitignore 2014-08-01 10:14:54.302065430 +0100
+@@ -0,0 +1,3 @@
++*.cm[oiax]
++camlp5r
++camlp5r.opt
+diff -urN camlp5-6.11/meta/Makefile camlp5-6.12-63a8c30f/meta/Makefile
+--- camlp5-6.11/meta/Makefile 2012-03-06 11:00:53.000000000 +0000
++++ camlp5-6.12-63a8c30f/meta/Makefile 2014-08-01 10:14:54.302065430 +0100
+@@ -1,4 +1,4 @@
+-# $Id: Makefile,v 6.3 2012-03-06 11:00:53 deraugla Exp $
++# Makefile,v
+
+ TOP=..
+ include $(TOP)/config/Makefile
+diff -urN camlp5-6.11/meta/mk_q_ast.sh camlp5-6.12-63a8c30f/meta/mk_q_ast.sh
+--- camlp5-6.11/meta/mk_q_ast.sh 2012-03-06 11:00:53.000000000 +0000
++++ camlp5-6.12-63a8c30f/meta/mk_q_ast.sh 2014-08-01 10:14:54.302065430 +0100
+@@ -1,5 +1,5 @@
+ #!/bin/sh
+-# $Id: mk_q_ast.sh,v 6.4 2012-03-06 11:00:53 deraugla Exp $
++# mk_q_ast.sh,v
+
+ IFILE=pa_r.ml
+ OFILE=q_ast.ml
+diff -urN camlp5-6.11/meta/mk_q_MLast.sh camlp5-6.12-63a8c30f/meta/mk_q_MLast.sh
+--- camlp5-6.11/meta/mk_q_MLast.sh 2012-03-09 15:22:46.000000000 +0000
++++ camlp5-6.12-63a8c30f/meta/mk_q_MLast.sh 2014-08-01 10:14:54.302065430 +0100
+@@ -1,5 +1,5 @@
+ #!/bin/sh
+-# $Id: mk_q_MLast.sh,v 6.4 2012-03-09 15:22:46 deraugla Exp $
++# mk_q_MLast.sh,v
+
+ IFILE=pa_r.ml
+ OFILE=q_MLast.ml
+diff -urN camlp5-6.11/meta/pa_extend.ml camlp5-6.12-63a8c30f/meta/pa_extend.ml
+--- camlp5-6.11/meta/pa_extend.ml 2012-01-09 14:22:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/meta/pa_extend.ml 2014-08-01 10:14:54.302065430 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: pa_extend.ml,v 6.7 2012-01-09 14:22:22 deraugla Exp $ *)
++(* pa_extend.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #load "pa_macro.cmo";
+diff -urN camlp5-6.11/meta/pa_extend_m.ml camlp5-6.12-63a8c30f/meta/pa_extend_m.ml
+--- camlp5-6.11/meta/pa_extend_m.ml 2012-01-09 14:22:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/meta/pa_extend_m.ml 2014-08-01 10:14:54.302065430 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: pa_extend_m.ml,v 6.4 2012-01-09 14:22:22 deraugla Exp $ *)
++(* pa_extend_m.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #load "pa_extend.cmo";
+diff -urN camlp5-6.11/meta/pa_fstream.ml camlp5-6.12-63a8c30f/meta/pa_fstream.ml
+--- camlp5-6.11/meta/pa_fstream.ml 2010-09-15 17:00:25.000000000 +0100
++++ camlp5-6.12-63a8c30f/meta/pa_fstream.ml 2014-08-01 10:14:54.302065430 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: pa_fstream.ml,v 6.1 2010-09-15 16:00:25 deraugla Exp $ *)
++(* pa_fstream.ml,v *)
+
+ #load "pa_extend.cmo";
+ #load "q_MLast.cmo";
+diff -urN camlp5-6.11/meta/pa_lexer.ml camlp5-6.12-63a8c30f/meta/pa_lexer.ml
+--- camlp5-6.11/meta/pa_lexer.ml 2012-01-09 14:22:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/meta/pa_lexer.ml 2014-08-01 10:14:54.302065430 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: pa_lexer.ml,v 6.4 2012-01-09 14:22:22 deraugla Exp $ *)
++(* pa_lexer.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #load "pa_extend.cmo";
+diff -urN camlp5-6.11/meta/pa_macro.ml camlp5-6.12-63a8c30f/meta/pa_macro.ml
+--- camlp5-6.11/meta/pa_macro.ml 2013-03-13 06:48:13.000000000 +0000
++++ camlp5-6.12-63a8c30f/meta/pa_macro.ml 2014-08-01 10:14:54.302065430 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: pa_macro.ml,v 6.12 2013-03-13 06:48:13 deraugla Exp $ *)
++(* pa_macro.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #load "pa_extend.cmo";
+@@ -103,6 +103,7 @@
+
+ open Pcaml;
+ open Printf;
++open Versdep;
+
+ type macro_value =
+ [ MvExpr of list string and MLast.expr
+@@ -129,7 +130,7 @@
+ for i = 0 to String.length v - 1 do {
+ match v.[i] with
+ [ '0'..'9' | 'a'..'z' | 'A'..'Z' -> ()
+- | _ -> v.[i] := '_' ];
++ | _ -> string_set v i '_' ];
+ };
+ v
+ };
+diff -urN camlp5-6.11/meta/pa_r.ml camlp5-6.12-63a8c30f/meta/pa_r.ml
+--- camlp5-6.11/meta/pa_r.ml 2013-07-02 17:12:43.000000000 +0100
++++ camlp5-6.12-63a8c30f/meta/pa_r.ml 2014-08-01 10:14:54.303065431 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: pa_r.ml,v 6.48 2013-07-02 16:12:43 deraugla Exp $ *)
++(* pa_r.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #load "pa_extend.cmo";
+diff -urN camlp5-6.11/meta/pa_rp.ml camlp5-6.12-63a8c30f/meta/pa_rp.ml
+--- camlp5-6.11/meta/pa_rp.ml 2012-01-09 14:22:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/meta/pa_rp.ml 2014-08-01 10:14:54.303065431 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: pa_rp.ml,v 6.3 2012-01-09 14:22:22 deraugla Exp $ *)
++(* pa_rp.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #load "pa_extend.cmo";
+diff -urN camlp5-6.11/meta/pr_dump.ml camlp5-6.12-63a8c30f/meta/pr_dump.ml
+--- camlp5-6.11/meta/pr_dump.ml 2012-01-09 14:22:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/meta/pr_dump.ml 2014-08-01 10:14:54.303065431 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: pr_dump.ml,v 6.5 2012-01-09 14:22:22 deraugla Exp $ *)
++(* pr_dump.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Versdep;
+diff -urN camlp5-6.11/meta/q_ast.ml camlp5-6.12-63a8c30f/meta/q_ast.ml
+--- camlp5-6.11/meta/q_ast.ml 2012-03-09 14:01:54.000000000 +0000
++++ camlp5-6.12-63a8c30f/meta/q_ast.ml 2014-08-01 10:14:54.304065431 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: q_ast.ml,v 6.32 2012-03-09 14:01:54 deraugla Exp $ *)
++(* q_ast.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #load "pa_macro.cmo";
+diff -urN camlp5-6.11/meta/q_MLast.ml camlp5-6.12-63a8c30f/meta/q_MLast.ml
+--- camlp5-6.11/meta/q_MLast.ml 2013-07-02 17:12:43.000000000 +0100
++++ camlp5-6.12-63a8c30f/meta/q_MLast.ml 2014-08-01 10:14:54.303065431 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: q_MLast.ml,v 6.43 2013-07-02 16:12:43 deraugla Exp $ *)
++(* q_MLast.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #load "pa_extend.cmo";
+diff -urN camlp5-6.11/ocaml_src/.cvsignore camlp5-6.12-63a8c30f/ocaml_src/.cvsignore
+--- camlp5-6.11/ocaml_src/.cvsignore 2010-09-15 17:00:25.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-SAVED
+diff -urN camlp5-6.11/ocaml_src/.gitignore camlp5-6.12-63a8c30f/ocaml_src/.gitignore
+--- camlp5-6.11/ocaml_src/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/.gitignore 2014-08-01 10:14:54.304065431 +0100
+@@ -0,0 +1 @@
++SAVED
+diff -urN camlp5-6.11/ocaml_src/lib/.cvsignore camlp5-6.12-63a8c30f/ocaml_src/lib/.cvsignore
+--- camlp5-6.11/ocaml_src/lib/.cvsignore 2010-09-15 17:00:25.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-versdep.ml
+diff -urN camlp5-6.11/ocaml_src/lib/.depend camlp5-6.12-63a8c30f/ocaml_src/lib/.depend
+--- camlp5-6.11/ocaml_src/lib/.depend 2010-09-15 17:00:25.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/.depend 2014-08-01 10:14:54.304065431 +0100
+@@ -19,8 +19,8 @@
+ plexer.cmo: plexer.cmi plexing.cmi ploc.cmi versdep.cmo
+ plexer.cmx: plexer.cmi plexing.cmx ploc.cmx versdep.cmx
+ plexer.cmi: plexing.cmi
+-plexing.cmo: plexing.cmi ploc.cmi
+-plexing.cmx: plexing.cmi ploc.cmx
++plexing.cmo: plexing.cmi ploc.cmi versdep.cmo
++plexing.cmx: plexing.cmi ploc.cmx versdep.cmx
+ plexing.cmi: ploc.cmi
+ ploc.cmo: ploc.cmi
+ ploc.cmx: ploc.cmi
+diff -urN camlp5-6.11/ocaml_src/lib/diff.ml camlp5-6.12-63a8c30f/ocaml_src/lib/diff.ml
+--- camlp5-6.11/ocaml_src/lib/diff.ml 2012-06-02 14:23:39.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/diff.ml 2014-08-01 10:14:54.304065431 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* diff.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (* Parts of Code of GNU diff (analyze.c) translated from C to OCaml
+diff -urN camlp5-6.11/ocaml_src/lib/diff.mli camlp5-6.12-63a8c30f/ocaml_src/lib/diff.mli
+--- camlp5-6.11/ocaml_src/lib/diff.mli 2012-06-02 14:23:39.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/diff.mli 2014-08-01 10:14:54.304065431 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* diff.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (** Differences between two arrays. *)
+diff -urN camlp5-6.11/ocaml_src/lib/eprinter.ml camlp5-6.12-63a8c30f/ocaml_src/lib/eprinter.ml
+--- camlp5-6.11/ocaml_src/lib/eprinter.ml 2012-06-02 14:23:39.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/eprinter.ml 2014-08-01 10:14:54.304065431 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* eprinter.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (* #load "pa_macro.cmo" *)
+diff -urN camlp5-6.11/ocaml_src/lib/eprinter.mli camlp5-6.12-63a8c30f/ocaml_src/lib/eprinter.mli
+--- camlp5-6.11/ocaml_src/lib/eprinter.mli 2012-06-02 14:23:39.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/eprinter.mli 2014-08-01 10:14:54.304065431 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* eprinter.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (** Extensible printers.
+diff -urN camlp5-6.11/ocaml_src/lib/extfold.ml camlp5-6.12-63a8c30f/ocaml_src/lib/extfold.ml
+--- camlp5-6.11/ocaml_src/lib/extfold.ml 2012-06-02 14:23:39.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/extfold.ml 2014-08-01 10:14:54.304065431 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* extfold.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ type ('te, 'a, 'b) t =
+diff -urN camlp5-6.11/ocaml_src/lib/extfold.mli camlp5-6.12-63a8c30f/ocaml_src/lib/extfold.mli
+--- camlp5-6.11/ocaml_src/lib/extfold.mli 2012-06-02 14:23:39.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/extfold.mli 2014-08-01 10:14:54.304065431 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* extfold.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ type ('te, 'a, 'b) t =
+diff -urN camlp5-6.11/ocaml_src/lib/extfun.ml camlp5-6.12-63a8c30f/ocaml_src/lib/extfun.ml
+--- camlp5-6.11/ocaml_src/lib/extfun.ml 2012-06-02 14:23:39.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/extfun.ml 2014-08-01 10:14:54.304065431 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* extfun.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (* Extensible Functions *)
+diff -urN camlp5-6.11/ocaml_src/lib/extfun.mli camlp5-6.12-63a8c30f/ocaml_src/lib/extfun.mli
+--- camlp5-6.11/ocaml_src/lib/extfun.mli 2012-06-02 14:23:39.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/extfun.mli 2014-08-01 10:14:54.304065431 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* extfun.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (** Extensible functions.
+diff -urN camlp5-6.11/ocaml_src/lib/fstream.ml camlp5-6.12-63a8c30f/ocaml_src/lib/fstream.ml
+--- camlp5-6.11/ocaml_src/lib/fstream.ml 2012-06-02 14:23:39.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/fstream.ml 2014-08-01 10:14:54.304065431 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* fstream.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ type 'a mlazy_c =
+diff -urN camlp5-6.11/ocaml_src/lib/fstream.mli camlp5-6.12-63a8c30f/ocaml_src/lib/fstream.mli
+--- camlp5-6.11/ocaml_src/lib/fstream.mli 2012-06-02 14:23:39.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/fstream.mli 2014-08-01 10:14:54.304065431 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* fstream.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (* Module [Fstream]: functional streams *)
+diff -urN camlp5-6.11/ocaml_src/lib/.gitignore camlp5-6.12-63a8c30f/ocaml_src/lib/.gitignore
+--- camlp5-6.11/ocaml_src/lib/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/.gitignore 2014-08-01 10:14:54.304065431 +0100
+@@ -0,0 +1,2 @@
++*.cm[oia]
++versdep.ml
+diff -urN camlp5-6.11/ocaml_src/lib/gramext.ml camlp5-6.12-63a8c30f/ocaml_src/lib/gramext.ml
+--- camlp5-6.11/ocaml_src/lib/gramext.ml 2013-01-28 09:27:12.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/gramext.ml 2014-08-01 10:14:54.304065431 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* gramext.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Printf;;
+diff -urN camlp5-6.11/ocaml_src/lib/gramext.mli camlp5-6.12-63a8c30f/ocaml_src/lib/gramext.mli
+--- camlp5-6.11/ocaml_src/lib/gramext.mli 2012-06-02 14:23:39.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/gramext.mli 2014-08-01 10:14:54.305065432 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* gramext.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ type 'a parser_t = 'a Stream.t -> Obj.t;;
+diff -urN camlp5-6.11/ocaml_src/lib/grammar.ml camlp5-6.12-63a8c30f/ocaml_src/lib/grammar.ml
+--- camlp5-6.11/ocaml_src/lib/grammar.ml 2012-06-02 14:23:39.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/grammar.ml 2014-08-01 10:14:54.305065432 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* grammar.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (* #load "pa_fstream.cmo" *)
+@@ -17,7 +17,34 @@
+ List.map (fun l -> n :: l) (flatten_tree s) @ flatten_tree b
+ ;;
+
+-let print_str ppf s = fprintf ppf "\"%s\"" (String.escaped s);;
++let utf8_print = ref true;;
++
++let utf8_string_escaped s =
++ let b = Buffer.create (String.length s) in
++ let rec loop i =
++ if i = String.length s then Buffer.contents b
++ else
++ begin
++ begin match s.[i] with
++ '"' -> Buffer.add_string b "\\\""
++ | '\\' -> Buffer.add_string b "\\\\"
++ | '\n' -> Buffer.add_string b "\\n"
++ | '\t' -> Buffer.add_string b "\\t"
++ | '\r' -> Buffer.add_string b "\\r"
++ | '\b' -> Buffer.add_string b "\\b"
++ | c -> Buffer.add_char b c
++ end;
++ loop (i + 1)
++ end
++ in
++ loop 0
++;;
++
++let string_escaped s =
++ if !utf8_print then utf8_string_escaped s else String.escaped s
++;;
++
++let print_str ppf s = fprintf ppf "\"%s\"" (string_escaped s);;
+
+ let rec print_symbol ppf =
+ function
+diff -urN camlp5-6.11/ocaml_src/lib/grammar.mli camlp5-6.12-63a8c30f/ocaml_src/lib/grammar.mli
+--- camlp5-6.11/ocaml_src/lib/grammar.mli 2012-06-02 14:23:39.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/grammar.mli 2014-08-01 10:14:54.305065432 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* grammar.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (** Extensible grammars.
+@@ -196,6 +196,10 @@
+ (** Flag to apply strict parsing, without trying to recover errors;
+ default = [False] *)
+
++val utf8_print : bool ref;;
++ (** Flag to consider strings as utf8-encoded when printing them;
++ default = [True] *)
++
+ val print_entry : Format.formatter -> 'te Gramext.g_entry -> unit;;
+ (** General printer for all kinds of entries (obj entries) *)
+
+diff -urN camlp5-6.11/ocaml_src/lib/Makefile camlp5-6.12-63a8c30f/ocaml_src/lib/Makefile
+--- camlp5-6.11/ocaml_src/lib/Makefile 2012-06-02 14:23:39.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/Makefile 2014-08-01 10:14:54.304065431 +0100
+@@ -1,4 +1,4 @@
+-# File generated by program: edit only if it does not compile.
++# Makefile,v
+
+ TOP=../..
+ include $(TOP)/config/Makefile
+diff -urN camlp5-6.11/ocaml_src/lib/plexer.ml camlp5-6.12-63a8c30f/ocaml_src/lib/plexer.ml
+--- camlp5-6.11/ocaml_src/lib/plexer.ml 2013-07-03 02:43:11.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/plexer.ml 2014-08-01 10:14:54.305065432 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* plexer.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (* #load "pa_lexer.cmo" *)
+@@ -38,10 +38,10 @@
+ ;;
+
+ let rev_implode l =
+- let s = String.create (List.length l) in
++ let s = string_create (List.length l) in
+ let rec loop i =
+ function
+- c :: l -> String.unsafe_set s i c; loop (i - 1) l
++ c :: l -> string_unsafe_set s i c; loop (i - 1) l
+ | [] -> s
+ in
+ loop (String.length s - 1) l
+diff -urN camlp5-6.11/ocaml_src/lib/plexer.mli camlp5-6.12-63a8c30f/ocaml_src/lib/plexer.mli
+--- camlp5-6.11/ocaml_src/lib/plexer.mli 2013-06-14 04:03:31.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/plexer.mli 2014-08-01 10:14:54.305065432 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* plexer.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (** This module contains the lexer used for ocaml syntax (revised and
+diff -urN camlp5-6.11/ocaml_src/lib/plexing.ml camlp5-6.12-63a8c30f/ocaml_src/lib/plexing.ml
+--- camlp5-6.11/ocaml_src/lib/plexing.ml 2012-06-02 14:23:39.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/plexing.ml 2014-08-01 10:14:54.305065432 +0100
+@@ -1,7 +1,9 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* plexing.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
++open Versdep;;
++
+ type pattern = string * string;;
+
+ exception Error of string;;
+@@ -70,7 +72,8 @@
+ let lexer_func_of_ocamllex lexfun cs =
+ let lb =
+ Lexing.from_function
+- (fun s n -> try s.[0] <- Stream.next cs; 1 with Stream.Failure -> 0)
++ (fun s n ->
++ try string_set s 0 (Stream.next cs); 1 with Stream.Failure -> 0)
+ in
+ let next_token_loc _ =
+ let tok = lexfun lb in
+@@ -82,11 +85,11 @@
+
+ (* Char and string tokens to real chars and string *)
+
+-let buff = ref (String.create 80);;
++let buff = ref (string_create 80);;
+ let store len x =
+ if len >= String.length !buff then
+- buff := !buff ^ String.create (String.length !buff);
+- !buff.[len] <- x;
++ buff := !buff ^ string_create (String.length !buff);
++ string_set !buff len x;
+ succ len
+ ;;
+ let get_buff len = String.sub !buff 0 len;;
+@@ -207,10 +210,10 @@
+ (* The lexing buffer used by pa_lexer.cmo *)
+
+ let rev_implode l =
+- let s = String.create (List.length l) in
++ let s = string_create (List.length l) in
+ let rec loop i =
+ function
+- c :: l -> String.unsafe_set s i c; loop (i - 1) l
++ c :: l -> string_unsafe_set s i c; loop (i - 1) l
+ | [] -> s
+ in
+ loop (String.length s - 1) l
+diff -urN camlp5-6.11/ocaml_src/lib/plexing.mli camlp5-6.12-63a8c30f/ocaml_src/lib/plexing.mli
+--- camlp5-6.11/ocaml_src/lib/plexing.mli 2012-06-02 14:23:39.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/plexing.mli 2014-08-01 10:14:54.306065432 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* plexing.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (** Lexing for Camlp5 grammars.
+diff -urN camlp5-6.11/ocaml_src/lib/ploc.ml camlp5-6.12-63a8c30f/ocaml_src/lib/ploc.ml
+--- camlp5-6.11/ocaml_src/lib/ploc.ml 2012-06-02 14:23:39.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/ploc.ml 2014-08-01 10:14:54.306065432 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* ploc.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (* #load "pa_macro.cmo" *)
+@@ -23,12 +23,12 @@
+ ;;
+
+ let make_unlined (bp, ep) =
+- {fname = ""; line_nb = -1; bol_pos = 0; line_nb_last = -1; bol_pos_last = 0;
++ {fname = ""; line_nb = 1; bol_pos = 0; line_nb_last = -1; bol_pos_last = 0;
+ bp = bp; ep = ep; comm = ""; ecomm = ""}
+ ;;
+
+ let dummy =
+- {fname = ""; line_nb = -1; bol_pos = 0; line_nb_last = -1; bol_pos_last = 0;
++ {fname = ""; line_nb = 1; bol_pos = 0; line_nb_last = -1; bol_pos_last = 0;
+ bp = 0; ep = 0; comm = ""; ecomm = ""}
+ ;;
+
+diff -urN camlp5-6.11/ocaml_src/lib/ploc.mli camlp5-6.12-63a8c30f/ocaml_src/lib/ploc.mli
+--- camlp5-6.11/ocaml_src/lib/ploc.mli 2012-06-02 14:23:39.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/ploc.mli 2014-08-01 10:14:54.306065432 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* ploc.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (** Locations and some pervasive type and value. *)
+diff -urN camlp5-6.11/ocaml_src/lib/pprintf.ml camlp5-6.12-63a8c30f/ocaml_src/lib/pprintf.ml
+--- camlp5-6.11/ocaml_src/lib/pprintf.ml 2012-06-02 14:23:39.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/pprintf.ml 2014-08-01 10:14:54.306065432 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* pprintf.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (* #load "pa_macro.cmo" *)
+diff -urN camlp5-6.11/ocaml_src/lib/pprintf.mli camlp5-6.12-63a8c30f/ocaml_src/lib/pprintf.mli
+--- camlp5-6.11/ocaml_src/lib/pprintf.mli 2012-06-02 14:23:39.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/pprintf.mli 2014-08-01 10:14:54.306065432 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* pprintf.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (** Definitions for pprintf statement.
+diff -urN camlp5-6.11/ocaml_src/lib/pretty.ml camlp5-6.12-63a8c30f/ocaml_src/lib/pretty.ml
+--- camlp5-6.11/ocaml_src/lib/pretty.ml 2012-06-02 14:23:39.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/pretty.ml 2014-08-01 10:14:54.306065432 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* pretty.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (* #load "pa_macro.cmo" *)
+diff -urN camlp5-6.11/ocaml_src/lib/pretty.mli camlp5-6.12-63a8c30f/ocaml_src/lib/pretty.mli
+--- camlp5-6.11/ocaml_src/lib/pretty.mli 2012-06-02 14:23:39.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/pretty.mli 2014-08-01 10:14:54.306065432 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* pretty.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (** Pretty printing on strings *)
+diff -urN camlp5-6.11/ocaml_src/lib/stdpp.ml camlp5-6.12-63a8c30f/ocaml_src/lib/stdpp.ml
+--- camlp5-6.11/ocaml_src/lib/stdpp.ml 2012-06-02 14:23:39.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/stdpp.ml 2014-08-01 10:14:54.306065432 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* stdpp.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ type location = Ploc.t;;
+diff -urN camlp5-6.11/ocaml_src/lib/stdpp.mli camlp5-6.12-63a8c30f/ocaml_src/lib/stdpp.mli
+--- camlp5-6.11/ocaml_src/lib/stdpp.mli 2012-06-02 14:23:39.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/stdpp.mli 2014-08-01 10:14:54.306065432 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* stdpp.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (** Module deprecated since Camlp5 version 5.00. Use now module Ploc.
+diff -urN camlp5-6.11/ocaml_src/lib/token.ml camlp5-6.12-63a8c30f/ocaml_src/lib/token.ml
+--- camlp5-6.11/ocaml_src/lib/token.ml 2012-06-02 14:23:39.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/token.ml 2014-08-01 10:14:54.306065432 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* token.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ type pattern = Plexing.pattern;;
+diff -urN camlp5-6.11/ocaml_src/lib/token.mli camlp5-6.12-63a8c30f/ocaml_src/lib/token.mli
+--- camlp5-6.11/ocaml_src/lib/token.mli 2012-06-02 14:23:39.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/token.mli 2014-08-01 10:14:54.306065432 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* token.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (** Module deprecated since Camlp5 version 5.00. Use now module Plexing.
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/1.06.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/1.06.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/1.06.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/1.06.ml 2014-08-01 10:14:54.306065432 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -41,13 +41,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ let cl_opt =
+@@ -107,7 +119,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (li, tl);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = None;;
+
+@@ -119,6 +133,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = None;;
+
+ let ocaml_const_int64 = None;;
+@@ -164,14 +180,33 @@
+ Pexp_ifthenelse (not_try_e, raise_af, None)
+ ;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function pel;;
+
+ let ocaml_pexp_lazy = None;;
+@@ -207,11 +242,13 @@
+
+ let ocaml_pexp_variant = None;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = None;;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -221,6 +258,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = None;;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -238,13 +280,22 @@
+
+ let ocaml_psig_class_type = None;;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule = None;;
+
+@@ -256,17 +307,19 @@
+
+ let ocaml_pstr_class_type = None;;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind = None;;
+
+ let ocaml_pstr_include = None;;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -315,6 +368,8 @@
+
+ let ocaml_pctf_cstr = None;;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, Public, mf, Some t, loc);;
+@@ -331,6 +386,8 @@
+
+ let ocaml_pwith_modsubst = None;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = None;;
+@@ -426,3 +483,9 @@
+ in
+ loop 0
+ ;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/1.07.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/1.07.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/1.07.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/1.07.ml 2014-08-01 10:14:54.306065432 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -41,13 +41,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ let cl_opt =
+@@ -107,7 +119,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (li, tl);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = None;;
+
+@@ -119,6 +133,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = None;;
+
+ let ocaml_const_int64 = None;;
+@@ -164,14 +180,33 @@
+ Pexp_ifthenelse (not_try_e, raise_af, None)
+ ;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function pel;;
+
+ let ocaml_pexp_lazy = None;;
+@@ -207,11 +242,13 @@
+
+ let ocaml_pexp_variant = None;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = None;;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -221,6 +258,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = None;;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -238,13 +280,22 @@
+
+ let ocaml_psig_class_type = None;;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule = None;;
+
+@@ -256,17 +307,19 @@
+
+ let ocaml_pstr_class_type = None;;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind = None;;
+
+ let ocaml_pstr_include = None;;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -315,6 +368,8 @@
+
+ let ocaml_pctf_cstr = None;;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, Public, mf, Some t, loc);;
+@@ -331,6 +386,8 @@
+
+ let ocaml_pwith_modsubst = None;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = None;;
+@@ -426,3 +483,9 @@
+ in
+ loop 0
+ ;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/2.00.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/2.00.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/2.00.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/2.00.ml 2014-08-01 10:14:54.307065433 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -41,13 +41,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ Right
+@@ -95,7 +107,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (li, tl);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = None;;
+
+@@ -107,6 +121,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = None;;
+
+ let ocaml_const_int64 = None;;
+@@ -152,14 +168,33 @@
+ Pexp_ifthenelse (not_try_e, raise_af, None)
+ ;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function pel;;
+
+ let ocaml_pexp_lazy = None;;
+@@ -195,11 +230,13 @@
+
+ let ocaml_pexp_variant = None;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -209,6 +246,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = None;;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -226,13 +268,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule = None;;
+
+@@ -244,17 +295,19 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind = None;;
+
+ let ocaml_pstr_include = None;;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -307,6 +360,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Some t, loc);;
+@@ -323,6 +378,8 @@
+
+ let ocaml_pwith_modsubst = None;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = None;;
+@@ -418,3 +475,9 @@
+ in
+ loop 0
+ ;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/2.01.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/2.01.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/2.01.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/2.01.ml 2014-08-01 10:14:54.307065433 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -41,13 +41,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ Right
+@@ -95,7 +107,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (li, tl);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = None;;
+
+@@ -107,6 +121,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = None;;
+
+ let ocaml_const_int64 = None;;
+@@ -152,14 +168,33 @@
+ Pexp_ifthenelse (not_try_e, raise_af, None)
+ ;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function pel;;
+
+ let ocaml_pexp_lazy = None;;
+@@ -195,11 +230,13 @@
+
+ let ocaml_pexp_variant = None;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -209,6 +246,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = None;;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -226,13 +268,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule = None;;
+
+@@ -244,17 +295,19 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind = None;;
+
+ let ocaml_pstr_include = None;;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -307,6 +360,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Some t, loc);;
+@@ -323,6 +378,8 @@
+
+ let ocaml_pwith_modsubst = None;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = None;;
+@@ -411,3 +468,9 @@
+ ;;
+
+ let string_contains s c = s <> "" && String.contains s c;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/2.02.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/2.02.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/2.02.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/2.02.ml 2014-08-01 10:14:54.307065433 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -41,13 +41,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ Right
+@@ -95,7 +107,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (li, tl);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = None;;
+
+@@ -107,6 +121,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = None;;
+
+ let ocaml_const_int64 = None;;
+@@ -152,14 +168,33 @@
+ Pexp_ifthenelse (not_try_e, raise_af, None)
+ ;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function pel;;
+
+ let ocaml_pexp_lazy = None;;
+@@ -195,11 +230,13 @@
+
+ let ocaml_pexp_variant = None;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -209,6 +246,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = None;;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -226,13 +268,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule = None;;
+
+@@ -244,17 +295,19 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind = None;;
+
+ let ocaml_pstr_include = None;;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -307,6 +360,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Some t, loc);;
+@@ -323,6 +378,8 @@
+
+ let ocaml_pwith_modsubst = None;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = None;;
+@@ -409,3 +466,9 @@
+ ;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/2.03.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/2.03.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/2.03.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/2.03.ml 2014-08-01 10:14:54.307065433 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -42,13 +42,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ Right
+@@ -96,7 +108,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (li, tl);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = None;;
+
+@@ -108,6 +122,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = None;;
+
+ let ocaml_const_int64 = None;;
+@@ -153,14 +169,33 @@
+ Pexp_ifthenelse (not_try_e, raise_af, None)
+ ;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function pel;;
+
+ let ocaml_pexp_lazy = None;;
+@@ -196,11 +231,13 @@
+
+ let ocaml_pexp_variant = None;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -210,6 +247,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = None;;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -227,13 +269,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule = None;;
+
+@@ -245,17 +296,19 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind = None;;
+
+ let ocaml_pstr_include = None;;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -308,6 +361,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Some t, loc);;
+@@ -324,6 +379,8 @@
+
+ let ocaml_pwith_modsubst = None;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = None;;
+@@ -403,3 +460,9 @@
+ ;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/2.04.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/2.04.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/2.04.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/2.04.ml 2014-08-01 10:14:54.307065433 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -42,13 +42,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ Right
+@@ -96,7 +108,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (li, tl);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = None;;
+
+@@ -108,6 +122,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = None;;
+
+ let ocaml_const_int64 = None;;
+@@ -153,14 +169,33 @@
+ Pexp_ifthenelse (not_try_e, raise_af, None)
+ ;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function pel;;
+
+ let ocaml_pexp_lazy = None;;
+@@ -196,11 +231,13 @@
+
+ let ocaml_pexp_variant = None;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -210,6 +247,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = None;;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -227,13 +269,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule = None;;
+
+@@ -245,17 +296,19 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind = None;;
+
+ let ocaml_pstr_include = None;;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -308,6 +361,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Some t, loc);;
+@@ -324,6 +379,8 @@
+
+ let ocaml_pwith_modsubst = None;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = None;;
+@@ -403,3 +460,9 @@
+ ;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/2.99.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/2.99.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/2.99.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/2.99.ml 2014-08-01 10:14:54.307065433 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -42,13 +42,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ Right
+@@ -96,7 +108,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl, ll);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = None;;
+
+@@ -124,6 +138,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = None;;
+
+ let ocaml_const_int64 = None;;
+@@ -169,14 +185,33 @@
+ Pexp_ifthenelse (not_try_e, raise_af, None)
+ ;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function (lab, eo, pel);;
+
+ let ocaml_pexp_lazy = None;;
+@@ -220,11 +255,13 @@
+ Some (pexp_variant_pat, pexp_variant)
+ ;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -234,6 +271,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = None;;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -259,13 +301,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule = None;;
+
+@@ -277,17 +328,19 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind = None;;
+
+ let ocaml_pstr_include = None;;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -340,6 +393,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Some t, loc);;
+@@ -356,6 +411,8 @@
+
+ let ocaml_pwith_modsubst = None;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = None;;
+@@ -435,3 +492,9 @@
+ ;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/3.00.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.00.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/3.00.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.00.ml 2014-08-01 10:14:54.307065433 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -42,13 +42,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ Right
+@@ -96,7 +108,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl, ll);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = None;;
+
+@@ -124,6 +138,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = None;;
+
+ let ocaml_const_int64 = None;;
+@@ -169,14 +185,33 @@
+ Pexp_ifthenelse (not_try_e, raise_af, None)
+ ;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function (lab, eo, pel);;
+
+ let ocaml_pexp_lazy = None;;
+@@ -220,11 +255,13 @@
+ Some (pexp_variant_pat, pexp_variant)
+ ;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -234,6 +271,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = None;;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -259,13 +301,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule = None;;
+
+@@ -277,19 +328,21 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind =
+- Some (fun s li -> Pstr_exn_rebind (mknoloc s, mknoloc li))
++ Some (fun loc s li -> Pstr_exn_rebind (mkloc loc s, mkloc loc li))
+ ;;
+
+ let ocaml_pstr_include = None;;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -342,6 +395,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Some t, loc);;
+@@ -358,6 +413,8 @@
+
+ let ocaml_pwith_modsubst = None;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = None;;
+@@ -437,3 +494,9 @@
+ ;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/3.01.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.01.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/3.01.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.01.ml 2014-08-01 10:14:54.307065433 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -42,13 +42,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ Right
+@@ -96,7 +108,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl, ll);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = None;;
+
+@@ -124,6 +138,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = None;;
+
+ let ocaml_const_int64 = None;;
+@@ -136,14 +152,33 @@
+
+ let ocaml_pexp_assert fname loc e = Pexp_assert e;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function (lab, eo, pel);;
+
+ let ocaml_pexp_lazy = None;;
+@@ -187,11 +222,13 @@
+ Some (pexp_variant_pat, pexp_variant)
+ ;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -201,6 +238,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = None;;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -226,13 +268,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule = None;;
+
+@@ -244,19 +295,21 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind =
+- Some (fun s li -> Pstr_exn_rebind (mknoloc s, mknoloc li))
++ Some (fun loc s li -> Pstr_exn_rebind (mkloc loc s, mkloc loc li))
+ ;;
+
+-let ocaml_pstr_include = Some (fun me -> Pstr_include me);;
++let ocaml_pstr_include = Some (fun loc me -> Pstr_include me);;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -310,6 +363,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Some t, loc);;
+@@ -326,6 +381,8 @@
+
+ let ocaml_pwith_modsubst = None;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = None;;
+@@ -405,3 +462,9 @@
+ ;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/3.02.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.02.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/3.02.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.02.ml 2014-08-01 10:14:54.307065433 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -42,13 +42,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ Right
+@@ -96,7 +108,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl, ll);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = None;;
+
+@@ -124,6 +138,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = None;;
+
+ let ocaml_const_int64 = None;;
+@@ -136,14 +152,33 @@
+
+ let ocaml_pexp_assert fname loc e = Pexp_assert e;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function (lab, eo, pel);;
+
+ let ocaml_pexp_lazy = None;;
+@@ -187,11 +222,13 @@
+ Some (pexp_variant_pat, pexp_variant)
+ ;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -201,6 +238,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = None;;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -226,13 +268,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule = None;;
+
+@@ -244,19 +295,21 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind =
+- Some (fun s li -> Pstr_exn_rebind (mknoloc s, mknoloc li))
++ Some (fun loc s li -> Pstr_exn_rebind (mkloc loc s, mkloc loc li))
+ ;;
+
+-let ocaml_pstr_include = Some (fun me -> Pstr_include me);;
++let ocaml_pstr_include = Some (fun loc me -> Pstr_include me);;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -310,6 +363,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Some t, loc);;
+@@ -326,6 +381,8 @@
+
+ let ocaml_pwith_modsubst = None;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = None;;
+@@ -405,3 +462,9 @@
+ ;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/3.03.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.03.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/3.03.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.03.ml 2014-08-01 10:14:54.307065433 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -42,13 +42,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ Right
+@@ -96,7 +108,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl, ll);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = None;;
+
+@@ -117,6 +131,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = None;;
+
+ let ocaml_const_int64 = None;;
+@@ -129,14 +145,33 @@
+
+ let ocaml_pexp_assert fname loc e = Pexp_assert e;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function (lab, eo, pel);;
+
+ let ocaml_pexp_lazy = None;;
+@@ -180,11 +215,13 @@
+ Some (pexp_variant_pat, pexp_variant)
+ ;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -194,6 +231,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = None;;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -219,13 +261,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule = None;;
+
+@@ -237,19 +288,21 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind =
+- Some (fun s li -> Pstr_exn_rebind (mknoloc s, mknoloc li))
++ Some (fun loc s li -> Pstr_exn_rebind (mkloc loc s, mkloc loc li))
+ ;;
+
+-let ocaml_pstr_include = Some (fun me -> Pstr_include me);;
++let ocaml_pstr_include = Some (fun loc me -> Pstr_include me);;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -303,6 +356,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Some t, loc);;
+@@ -319,6 +374,8 @@
+
+ let ocaml_pwith_modsubst = None;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = None;;
+@@ -398,3 +455,9 @@
+ ;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/3.04.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.04.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/3.04.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.04.ml 2014-08-01 10:14:54.307065433 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -42,13 +42,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ Right
+@@ -96,7 +108,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl, ll);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = None;;
+
+@@ -117,6 +131,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = None;;
+
+ let ocaml_const_int64 = None;;
+@@ -129,14 +145,33 @@
+
+ let ocaml_pexp_assert fname loc e = Pexp_assert e;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function (lab, eo, pel);;
+
+ let ocaml_pexp_lazy = None;;
+@@ -180,11 +215,13 @@
+ Some (pexp_variant_pat, pexp_variant)
+ ;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -194,6 +231,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = None;;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -219,13 +261,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule = None;;
+
+@@ -237,19 +288,21 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind =
+- Some (fun s li -> Pstr_exn_rebind (mknoloc s, mknoloc li))
++ Some (fun loc s li -> Pstr_exn_rebind (mkloc loc s, mkloc loc li))
+ ;;
+
+-let ocaml_pstr_include = Some (fun me -> Pstr_include me);;
++let ocaml_pstr_include = Some (fun loc me -> Pstr_include me);;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -303,6 +356,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Some t, loc);;
+@@ -319,6 +374,8 @@
+
+ let ocaml_pwith_modsubst = None;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = None;;
+@@ -398,3 +455,9 @@
+ ;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/3.05.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.05.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/3.05.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.05.ml 2014-08-01 10:14:54.307065433 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -42,13 +42,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ Right
+@@ -96,7 +108,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl, ll);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = None;;
+
+@@ -117,6 +131,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = None;;
+
+ let ocaml_const_int64 = None;;
+@@ -129,14 +145,33 @@
+
+ let ocaml_pexp_assert fname loc e = Pexp_assert e;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function (lab, eo, pel);;
+
+ let ocaml_pexp_lazy = Some (fun e -> Pexp_lazy e);;
+@@ -180,11 +215,13 @@
+ Some (pexp_variant_pat, pexp_variant)
+ ;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -194,6 +231,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = None;;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -219,13 +261,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule = None;;
+
+@@ -237,19 +288,21 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind =
+- Some (fun s li -> Pstr_exn_rebind (mknoloc s, mknoloc li))
++ Some (fun loc s li -> Pstr_exn_rebind (mkloc loc s, mkloc loc li))
+ ;;
+
+-let ocaml_pstr_include = Some (fun me -> Pstr_include me);;
++let ocaml_pstr_include = Some (fun loc me -> Pstr_include me);;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -303,6 +356,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Some t, loc);;
+@@ -319,6 +374,8 @@
+
+ let ocaml_pwith_modsubst = None;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = None;;
+@@ -378,3 +435,9 @@
+ let printf_ksprintf = Printf.kprintf;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/3.06.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.06.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/3.06.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.06.ml 2014-08-01 10:14:54.307065433 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -42,13 +42,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ Right
+@@ -96,7 +108,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl, ll);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = None;;
+
+@@ -117,6 +131,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = None;;
+
+ let ocaml_const_int64 = None;;
+@@ -129,14 +145,33 @@
+
+ let ocaml_pexp_assert fname loc e = Pexp_assert e;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function (lab, eo, pel);;
+
+ let ocaml_pexp_lazy = Some (fun e -> Pexp_lazy e);;
+@@ -180,11 +215,13 @@
+ Some (pexp_variant_pat, pexp_variant)
+ ;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -194,6 +231,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = None;;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -219,13 +261,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule = None;;
+
+@@ -237,19 +288,21 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind =
+- Some (fun s li -> Pstr_exn_rebind (mknoloc s, mknoloc li))
++ Some (fun loc s li -> Pstr_exn_rebind (mkloc loc s, mkloc loc li))
+ ;;
+
+-let ocaml_pstr_include = Some (fun me -> Pstr_include me);;
++let ocaml_pstr_include = Some (fun loc me -> Pstr_include me);;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -303,6 +356,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Some t, loc);;
+@@ -319,6 +374,8 @@
+
+ let ocaml_pwith_modsubst = None;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = None;;
+@@ -378,3 +435,9 @@
+ let printf_ksprintf = Printf.kprintf;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/3.07.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.07.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/3.07.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.07.ml 2014-08-01 10:14:54.307065433 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -47,13 +47,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ Right
+@@ -103,7 +115,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl, ll);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = None;;
+
+@@ -124,6 +138,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = Some (fun s -> Const_int32 (Int32.of_string s));;
+
+ let ocaml_const_int64 = Some (fun s -> Const_int64 (Int64.of_string s));;
+@@ -138,14 +154,33 @@
+
+ let ocaml_pexp_assert fname loc e = Pexp_assert e;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function (lab, eo, pel);;
+
+ let ocaml_pexp_lazy = Some (fun e -> Pexp_lazy e);;
+@@ -189,11 +224,13 @@
+ Some (pexp_variant_pat, pexp_variant)
+ ;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -203,6 +240,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = None;;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -228,13 +270,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule =
+ let f ntl =
+@@ -252,19 +303,21 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind =
+- Some (fun s li -> Pstr_exn_rebind (mknoloc s, mknoloc li))
++ Some (fun loc s li -> Pstr_exn_rebind (mkloc loc s, mkloc loc li))
+ ;;
+
+-let ocaml_pstr_include = Some (fun me -> Pstr_include me);;
++let ocaml_pstr_include = Some (fun loc me -> Pstr_include me);;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -318,6 +371,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Some t, loc);;
+@@ -334,6 +389,8 @@
+
+ let ocaml_pwith_modsubst = None;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = None;;
+@@ -417,3 +474,9 @@
+ let printf_ksprintf = Printf.kprintf;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/3.08.0.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.08.0.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/3.08.0.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.08.0.ml 2014-08-01 10:14:54.308065434 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -47,13 +47,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ Right
+@@ -103,7 +115,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl, ll);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = None;;
+
+@@ -124,6 +138,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = Some (fun s -> Const_int32 (Int32.of_string s));;
+
+ let ocaml_const_int64 = Some (fun s -> Const_int64 (Int64.of_string s));;
+@@ -138,14 +154,33 @@
+
+ let ocaml_pexp_assert fname loc e = Pexp_assert e;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function (lab, eo, pel);;
+
+ let ocaml_pexp_lazy = Some (fun e -> Pexp_lazy e);;
+@@ -189,11 +224,13 @@
+ Some (pexp_variant_pat, pexp_variant)
+ ;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -203,6 +240,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = None;;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -228,13 +270,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule =
+ let f ntl =
+@@ -252,19 +303,21 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind =
+- Some (fun s li -> Pstr_exn_rebind (mknoloc s, mknoloc li))
++ Some (fun loc s li -> Pstr_exn_rebind (mkloc loc s, mkloc loc li))
+ ;;
+
+-let ocaml_pstr_include = Some (fun me -> Pstr_include me);;
++let ocaml_pstr_include = Some (fun loc me -> Pstr_include me);;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -318,6 +371,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Some t, loc);;
+@@ -334,6 +389,8 @@
+
+ let ocaml_pwith_modsubst = None;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = None;;
+@@ -417,3 +474,9 @@
+ let printf_ksprintf = Printf.kprintf;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/3.08.1.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.08.1.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/3.08.1.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.08.1.ml 2014-08-01 10:14:54.308065434 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -47,13 +47,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ Right
+@@ -103,7 +115,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl, ll);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = None;;
+
+@@ -124,6 +138,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = Some (fun s -> Const_int32 (Int32.of_string s));;
+
+ let ocaml_const_int64 = Some (fun s -> Const_int64 (Int64.of_string s));;
+@@ -138,14 +154,33 @@
+
+ let ocaml_pexp_assert fname loc e = Pexp_assert e;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function (lab, eo, pel);;
+
+ let ocaml_pexp_lazy = Some (fun e -> Pexp_lazy e);;
+@@ -189,11 +224,13 @@
+ Some (pexp_variant_pat, pexp_variant)
+ ;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -203,6 +240,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = None;;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -228,13 +270,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule =
+ let f ntl =
+@@ -252,19 +303,21 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind =
+- Some (fun s li -> Pstr_exn_rebind (mknoloc s, mknoloc li))
++ Some (fun loc s li -> Pstr_exn_rebind (mkloc loc s, mkloc loc li))
+ ;;
+
+-let ocaml_pstr_include = Some (fun me -> Pstr_include me);;
++let ocaml_pstr_include = Some (fun loc me -> Pstr_include me);;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -318,6 +371,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Some t, loc);;
+@@ -334,6 +389,8 @@
+
+ let ocaml_pwith_modsubst = None;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = None;;
+@@ -417,3 +474,9 @@
+ let printf_ksprintf = Printf.kprintf;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/3.08.2.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.08.2.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/3.08.2.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.08.2.ml 2014-08-01 10:14:54.308065434 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -47,13 +47,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ Right
+@@ -103,7 +115,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl, ll);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = None;;
+
+@@ -124,6 +138,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = Some (fun s -> Const_int32 (Int32.of_string s));;
+
+ let ocaml_const_int64 = Some (fun s -> Const_int64 (Int64.of_string s));;
+@@ -138,14 +154,33 @@
+
+ let ocaml_pexp_assert fname loc e = Pexp_assert e;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function (lab, eo, pel);;
+
+ let ocaml_pexp_lazy = Some (fun e -> Pexp_lazy e);;
+@@ -189,11 +224,13 @@
+ Some (pexp_variant_pat, pexp_variant)
+ ;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -203,6 +240,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = None;;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -228,13 +270,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule =
+ let f ntl =
+@@ -252,19 +303,21 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind =
+- Some (fun s li -> Pstr_exn_rebind (mknoloc s, mknoloc li))
++ Some (fun loc s li -> Pstr_exn_rebind (mkloc loc s, mkloc loc li))
+ ;;
+
+-let ocaml_pstr_include = Some (fun me -> Pstr_include me);;
++let ocaml_pstr_include = Some (fun loc me -> Pstr_include me);;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -318,6 +371,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Some t, loc);;
+@@ -334,6 +389,8 @@
+
+ let ocaml_pwith_modsubst = None;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = None;;
+@@ -417,3 +474,9 @@
+ let printf_ksprintf = Printf.kprintf;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/3.08.3.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.08.3.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/3.08.3.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.08.3.ml 2014-08-01 10:14:54.308065434 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -47,13 +47,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ Right
+@@ -103,7 +115,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl, ll);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = None;;
+
+@@ -124,6 +138,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = Some (fun s -> Const_int32 (Int32.of_string s));;
+
+ let ocaml_const_int64 = Some (fun s -> Const_int64 (Int64.of_string s));;
+@@ -138,14 +154,33 @@
+
+ let ocaml_pexp_assert fname loc e = Pexp_assert e;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function (lab, eo, pel);;
+
+ let ocaml_pexp_lazy = Some (fun e -> Pexp_lazy e);;
+@@ -189,11 +224,13 @@
+ Some (pexp_variant_pat, pexp_variant)
+ ;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -203,6 +240,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = None;;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -228,13 +270,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule =
+ let f ntl =
+@@ -252,19 +303,21 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind =
+- Some (fun s li -> Pstr_exn_rebind (mknoloc s, mknoloc li))
++ Some (fun loc s li -> Pstr_exn_rebind (mkloc loc s, mkloc loc li))
+ ;;
+
+-let ocaml_pstr_include = Some (fun me -> Pstr_include me);;
++let ocaml_pstr_include = Some (fun loc me -> Pstr_include me);;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -318,6 +371,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Some t, loc);;
+@@ -334,6 +389,8 @@
+
+ let ocaml_pwith_modsubst = None;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = None;;
+@@ -417,3 +474,9 @@
+ let printf_ksprintf = Printf.kprintf;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/3.08.4.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.08.4.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/3.08.4.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.08.4.ml 2014-08-01 10:14:54.308065434 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -47,13 +47,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ Right
+@@ -103,7 +115,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl, ll);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = None;;
+
+@@ -124,6 +138,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = Some (fun s -> Const_int32 (Int32.of_string s));;
+
+ let ocaml_const_int64 = Some (fun s -> Const_int64 (Int64.of_string s));;
+@@ -138,14 +154,33 @@
+
+ let ocaml_pexp_assert fname loc e = Pexp_assert e;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function (lab, eo, pel);;
+
+ let ocaml_pexp_lazy = Some (fun e -> Pexp_lazy e);;
+@@ -189,11 +224,13 @@
+ Some (pexp_variant_pat, pexp_variant)
+ ;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -203,6 +240,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = None;;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -228,13 +270,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule =
+ let f ntl =
+@@ -252,19 +303,21 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind =
+- Some (fun s li -> Pstr_exn_rebind (mknoloc s, mknoloc li))
++ Some (fun loc s li -> Pstr_exn_rebind (mkloc loc s, mkloc loc li))
+ ;;
+
+-let ocaml_pstr_include = Some (fun me -> Pstr_include me);;
++let ocaml_pstr_include = Some (fun loc me -> Pstr_include me);;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -318,6 +371,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Some t, loc);;
+@@ -334,6 +389,8 @@
+
+ let ocaml_pwith_modsubst = None;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = None;;
+@@ -417,3 +474,9 @@
+ let printf_ksprintf = Printf.kprintf;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/3.09.0.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.09.0.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/3.09.0.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.09.0.ml 2014-08-01 10:14:54.308065434 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -47,13 +47,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ Right
+@@ -103,7 +115,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl, ll);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = None;;
+
+@@ -124,6 +138,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = Some (fun s -> Const_int32 (Int32.of_string s));;
+
+ let ocaml_const_int64 = Some (fun s -> Const_int64 (Int64.of_string s));;
+@@ -138,14 +154,33 @@
+
+ let ocaml_pexp_assert fname loc e = Pexp_assert e;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function (lab, eo, pel);;
+
+ let ocaml_pexp_lazy = Some (fun e -> Pexp_lazy e);;
+@@ -189,11 +224,13 @@
+ Some (pexp_variant_pat, pexp_variant)
+ ;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -203,6 +240,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = None;;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -228,13 +270,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule =
+ let f ntl =
+@@ -252,19 +303,21 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind =
+- Some (fun s li -> Pstr_exn_rebind (mknoloc s, mknoloc li))
++ Some (fun loc s li -> Pstr_exn_rebind (mkloc loc s, mkloc loc li))
+ ;;
+
+-let ocaml_pstr_include = Some (fun me -> Pstr_include me);;
++let ocaml_pstr_include = Some (fun loc me -> Pstr_include me);;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -318,6 +371,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Some t, loc);;
+@@ -334,6 +389,8 @@
+
+ let ocaml_pwith_modsubst = None;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = None;;
+@@ -417,3 +474,9 @@
+ let printf_ksprintf = Printf.ksprintf;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/3.09.1.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.09.1.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/3.09.1.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.09.1.ml 2014-08-01 10:14:54.308065434 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -47,13 +47,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ Right
+@@ -103,7 +115,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl, ll);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = None;;
+
+@@ -124,6 +138,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = Some (fun s -> Const_int32 (Int32.of_string s));;
+
+ let ocaml_const_int64 = Some (fun s -> Const_int64 (Int64.of_string s));;
+@@ -138,14 +154,33 @@
+
+ let ocaml_pexp_assert fname loc e = Pexp_assert e;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function (lab, eo, pel);;
+
+ let ocaml_pexp_lazy = Some (fun e -> Pexp_lazy e);;
+@@ -189,11 +224,13 @@
+ Some (pexp_variant_pat, pexp_variant)
+ ;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -203,6 +240,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = None;;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -228,13 +270,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule =
+ let f ntl =
+@@ -252,19 +303,21 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind =
+- Some (fun s li -> Pstr_exn_rebind (mknoloc s, mknoloc li))
++ Some (fun loc s li -> Pstr_exn_rebind (mkloc loc s, mkloc loc li))
+ ;;
+
+-let ocaml_pstr_include = Some (fun me -> Pstr_include me);;
++let ocaml_pstr_include = Some (fun loc me -> Pstr_include me);;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -318,6 +371,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Some t, loc);;
+@@ -334,6 +389,8 @@
+
+ let ocaml_pwith_modsubst = None;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = None;;
+@@ -417,3 +474,9 @@
+ let printf_ksprintf = Printf.ksprintf;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/3.09.2.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.09.2.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/3.09.2.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.09.2.ml 2014-08-01 10:14:54.308065434 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -47,13 +47,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ Right
+@@ -103,7 +115,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl, ll);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = None;;
+
+@@ -124,6 +138,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = Some (fun s -> Const_int32 (Int32.of_string s));;
+
+ let ocaml_const_int64 = Some (fun s -> Const_int64 (Int64.of_string s));;
+@@ -138,14 +154,33 @@
+
+ let ocaml_pexp_assert fname loc e = Pexp_assert e;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function (lab, eo, pel);;
+
+ let ocaml_pexp_lazy = Some (fun e -> Pexp_lazy e);;
+@@ -189,11 +224,13 @@
+ Some (pexp_variant_pat, pexp_variant)
+ ;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -203,6 +240,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = None;;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -228,13 +270,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule =
+ let f ntl =
+@@ -252,19 +303,21 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind =
+- Some (fun s li -> Pstr_exn_rebind (mknoloc s, mknoloc li))
++ Some (fun loc s li -> Pstr_exn_rebind (mkloc loc s, mkloc loc li))
+ ;;
+
+-let ocaml_pstr_include = Some (fun me -> Pstr_include me);;
++let ocaml_pstr_include = Some (fun loc me -> Pstr_include me);;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -318,6 +371,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Some t, loc);;
+@@ -334,6 +389,8 @@
+
+ let ocaml_pwith_modsubst = None;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = None;;
+@@ -417,3 +474,9 @@
+ let printf_ksprintf = Printf.ksprintf;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/3.09.3.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.09.3.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/3.09.3.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.09.3.ml 2014-08-01 10:14:54.308065434 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -47,13 +47,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ Right
+@@ -103,7 +115,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl, ll);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = None;;
+
+@@ -124,6 +138,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = Some (fun s -> Const_int32 (Int32.of_string s));;
+
+ let ocaml_const_int64 = Some (fun s -> Const_int64 (Int64.of_string s));;
+@@ -138,14 +154,33 @@
+
+ let ocaml_pexp_assert fname loc e = Pexp_assert e;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function (lab, eo, pel);;
+
+ let ocaml_pexp_lazy = Some (fun e -> Pexp_lazy e);;
+@@ -189,11 +224,13 @@
+ Some (pexp_variant_pat, pexp_variant)
+ ;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -203,6 +240,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = None;;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -228,13 +270,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule =
+ let f ntl =
+@@ -252,19 +303,21 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind =
+- Some (fun s li -> Pstr_exn_rebind (mknoloc s, mknoloc li))
++ Some (fun loc s li -> Pstr_exn_rebind (mkloc loc s, mkloc loc li))
+ ;;
+
+-let ocaml_pstr_include = Some (fun me -> Pstr_include me);;
++let ocaml_pstr_include = Some (fun loc me -> Pstr_include me);;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -318,6 +371,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Some t, loc);;
+@@ -334,6 +389,8 @@
+
+ let ocaml_pwith_modsubst = None;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = None;;
+@@ -417,3 +474,9 @@
+ let printf_ksprintf = Printf.ksprintf;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/3.09.4.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.09.4.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/3.09.4.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.09.4.ml 2014-08-01 10:14:54.308065434 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -47,13 +47,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ Right
+@@ -103,7 +115,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl, ll);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = None;;
+
+@@ -124,6 +138,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = Some (fun s -> Const_int32 (Int32.of_string s));;
+
+ let ocaml_const_int64 = Some (fun s -> Const_int64 (Int64.of_string s));;
+@@ -138,14 +154,33 @@
+
+ let ocaml_pexp_assert fname loc e = Pexp_assert e;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function (lab, eo, pel);;
+
+ let ocaml_pexp_lazy = Some (fun e -> Pexp_lazy e);;
+@@ -189,11 +224,13 @@
+ Some (pexp_variant_pat, pexp_variant)
+ ;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -203,6 +240,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = None;;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -228,13 +270,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule =
+ let f ntl =
+@@ -252,19 +303,21 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind =
+- Some (fun s li -> Pstr_exn_rebind (mknoloc s, mknoloc li))
++ Some (fun loc s li -> Pstr_exn_rebind (mkloc loc s, mkloc loc li))
+ ;;
+
+-let ocaml_pstr_include = Some (fun me -> Pstr_include me);;
++let ocaml_pstr_include = Some (fun loc me -> Pstr_include me);;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -318,6 +371,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Some t, loc);;
+@@ -334,6 +389,8 @@
+
+ let ocaml_pwith_modsubst = None;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = None;;
+@@ -417,3 +474,9 @@
+ let printf_ksprintf = Printf.ksprintf;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/3.10.0.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.10.0.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/3.10.0.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.10.0.ml 2014-08-01 10:14:54.308065434 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -47,13 +47,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ Right
+@@ -103,7 +115,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl, ll);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = None;;
+
+@@ -124,6 +138,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = Some (fun s -> Const_int32 (Int32.of_string s));;
+
+ let ocaml_const_int64 = Some (fun s -> Const_int64 (Int64.of_string s));;
+@@ -138,14 +154,33 @@
+
+ let ocaml_pexp_assert fname loc e = Pexp_assert e;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function (lab, eo, pel);;
+
+ let ocaml_pexp_lazy = Some (fun e -> Pexp_lazy e);;
+@@ -189,11 +224,13 @@
+ Some (pexp_variant_pat, pexp_variant)
+ ;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -203,6 +240,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = None;;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -228,13 +270,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule =
+ let f ntl =
+@@ -252,19 +303,21 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind =
+- Some (fun s li -> Pstr_exn_rebind (mknoloc s, mknoloc li))
++ Some (fun loc s li -> Pstr_exn_rebind (mkloc loc s, mkloc loc li))
+ ;;
+
+-let ocaml_pstr_include = Some (fun me -> Pstr_include me);;
++let ocaml_pstr_include = Some (fun loc me -> Pstr_include me);;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -323,6 +376,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Concrete, t, loc);;
+@@ -339,6 +394,8 @@
+
+ let ocaml_pwith_modsubst = None;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = None;;
+@@ -422,3 +479,9 @@
+ let printf_ksprintf = Printf.ksprintf;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/3.10.1.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.10.1.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/3.10.1.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.10.1.ml 2014-08-01 10:14:54.308065434 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -47,13 +47,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ Right
+@@ -103,7 +115,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl, ll);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = None;;
+
+@@ -124,6 +138,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = Some (fun s -> Const_int32 (Int32.of_string s));;
+
+ let ocaml_const_int64 = Some (fun s -> Const_int64 (Int64.of_string s));;
+@@ -138,14 +154,33 @@
+
+ let ocaml_pexp_assert fname loc e = Pexp_assert e;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function (lab, eo, pel);;
+
+ let ocaml_pexp_lazy = Some (fun e -> Pexp_lazy e);;
+@@ -189,11 +224,13 @@
+ Some (pexp_variant_pat, pexp_variant)
+ ;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -203,6 +240,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = None;;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -228,13 +270,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule =
+ let f ntl =
+@@ -252,19 +303,21 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind =
+- Some (fun s li -> Pstr_exn_rebind (mknoloc s, mknoloc li))
++ Some (fun loc s li -> Pstr_exn_rebind (mkloc loc s, mkloc loc li))
+ ;;
+
+-let ocaml_pstr_include = Some (fun me -> Pstr_include me);;
++let ocaml_pstr_include = Some (fun loc me -> Pstr_include me);;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -323,6 +376,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Concrete, t, loc);;
+@@ -339,6 +394,8 @@
+
+ let ocaml_pwith_modsubst = None;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = None;;
+@@ -422,3 +479,9 @@
+ let printf_ksprintf = Printf.ksprintf;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/3.10.2.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.10.2.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/3.10.2.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.10.2.ml 2014-08-01 10:14:54.308065434 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -47,13 +47,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ Right
+@@ -103,7 +115,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl, ll);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = None;;
+
+@@ -124,6 +138,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = Some (fun s -> Const_int32 (Int32.of_string s));;
+
+ let ocaml_const_int64 = Some (fun s -> Const_int64 (Int64.of_string s));;
+@@ -138,14 +154,33 @@
+
+ let ocaml_pexp_assert fname loc e = Pexp_assert e;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function (lab, eo, pel);;
+
+ let ocaml_pexp_lazy = Some (fun e -> Pexp_lazy e);;
+@@ -189,11 +224,13 @@
+ Some (pexp_variant_pat, pexp_variant)
+ ;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -203,6 +240,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = None;;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -228,13 +270,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule =
+ let f ntl =
+@@ -252,19 +303,21 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind =
+- Some (fun s li -> Pstr_exn_rebind (mknoloc s, mknoloc li))
++ Some (fun loc s li -> Pstr_exn_rebind (mkloc loc s, mkloc loc li))
+ ;;
+
+-let ocaml_pstr_include = Some (fun me -> Pstr_include me);;
++let ocaml_pstr_include = Some (fun loc me -> Pstr_include me);;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -323,6 +376,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Concrete, t, loc);;
+@@ -339,6 +394,8 @@
+
+ let ocaml_pwith_modsubst = None;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = None;;
+@@ -422,3 +479,9 @@
+ let printf_ksprintf = Printf.ksprintf;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/3.10.3.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.10.3.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/3.10.3.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.10.3.ml 2014-08-01 10:14:54.308065434 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -47,13 +47,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ Right
+@@ -103,7 +115,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl, ll);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = None;;
+
+@@ -124,6 +138,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = Some (fun s -> Const_int32 (Int32.of_string s));;
+
+ let ocaml_const_int64 = Some (fun s -> Const_int64 (Int64.of_string s));;
+@@ -138,14 +154,33 @@
+
+ let ocaml_pexp_assert fname loc e = Pexp_assert e;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function (lab, eo, pel);;
+
+ let ocaml_pexp_lazy = Some (fun e -> Pexp_lazy e);;
+@@ -189,11 +224,13 @@
+ Some (pexp_variant_pat, pexp_variant)
+ ;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -203,6 +240,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = None;;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -228,13 +270,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule =
+ let f ntl =
+@@ -252,19 +303,21 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind =
+- Some (fun s li -> Pstr_exn_rebind (mknoloc s, mknoloc li))
++ Some (fun loc s li -> Pstr_exn_rebind (mkloc loc s, mkloc loc li))
+ ;;
+
+-let ocaml_pstr_include = Some (fun me -> Pstr_include me);;
++let ocaml_pstr_include = Some (fun loc me -> Pstr_include me);;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -323,6 +376,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Concrete, t, loc);;
+@@ -339,6 +394,8 @@
+
+ let ocaml_pwith_modsubst = None;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = None;;
+@@ -422,3 +479,9 @@
+ let printf_ksprintf = Printf.ksprintf;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/3.10.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.10.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/3.10.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.10.ml 2014-08-01 10:14:54.308065434 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -47,13 +47,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ Right
+@@ -103,7 +115,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl, ll);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = None;;
+
+@@ -124,6 +138,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = Some (fun s -> Const_int32 (Int32.of_string s));;
+
+ let ocaml_const_int64 = Some (fun s -> Const_int64 (Int64.of_string s));;
+@@ -138,14 +154,33 @@
+
+ let ocaml_pexp_assert fname loc e = Pexp_assert e;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function (lab, eo, pel);;
+
+ let ocaml_pexp_lazy = Some (fun e -> Pexp_lazy e);;
+@@ -189,11 +224,13 @@
+ Some (pexp_variant_pat, pexp_variant)
+ ;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -203,6 +240,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = None;;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -228,13 +270,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule =
+ let f ntl =
+@@ -252,19 +303,21 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind =
+- Some (fun s li -> Pstr_exn_rebind (mknoloc s, mknoloc li))
++ Some (fun loc s li -> Pstr_exn_rebind (mkloc loc s, mkloc loc li))
+ ;;
+
+-let ocaml_pstr_include = Some (fun me -> Pstr_include me);;
++let ocaml_pstr_include = Some (fun loc me -> Pstr_include me);;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -318,6 +371,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Concrete, t, loc);;
+@@ -334,6 +389,8 @@
+
+ let ocaml_pwith_modsubst = None;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = None;;
+@@ -417,3 +474,9 @@
+ let printf_ksprintf = Printf.ksprintf;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/3.11.0.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.11.0.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/3.11.0.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.11.0.ml 2014-08-01 10:14:54.308065434 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -47,13 +47,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ Right
+@@ -101,7 +113,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl, ll);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = None;;
+
+@@ -122,6 +136,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = Some (fun s -> Const_int32 (Int32.of_string s));;
+
+ let ocaml_const_int64 = Some (fun s -> Const_int64 (Int64.of_string s));;
+@@ -136,14 +152,33 @@
+
+ let ocaml_pexp_assert fname loc e = Pexp_assert e;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function (lab, eo, pel);;
+
+ let ocaml_pexp_lazy = Some (fun e -> Pexp_lazy e);;
+@@ -187,11 +222,13 @@
+ Some (pexp_variant_pat, pexp_variant)
+ ;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -201,6 +238,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = Some (fun p -> Ppat_lazy p);;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -226,13 +268,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule =
+ let f ntl =
+@@ -250,19 +301,21 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind =
+- Some (fun s li -> Pstr_exn_rebind (mknoloc s, mknoloc li))
++ Some (fun loc s li -> Pstr_exn_rebind (mkloc loc s, mkloc loc li))
+ ;;
+
+-let ocaml_pstr_include = Some (fun me -> Pstr_include me);;
++let ocaml_pstr_include = Some (fun loc me -> Pstr_include me);;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -321,6 +374,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Concrete, t, loc);;
+@@ -337,6 +392,8 @@
+
+ let ocaml_pwith_modsubst = None;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = None;;
+@@ -416,3 +473,9 @@
+ let printf_ksprintf = Printf.ksprintf;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/3.11.1.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.11.1.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/3.11.1.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.11.1.ml 2014-08-01 10:14:54.309065434 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -47,13 +47,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ Right
+@@ -101,7 +113,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl, ll);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = None;;
+
+@@ -122,6 +136,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = Some (fun s -> Const_int32 (Int32.of_string s));;
+
+ let ocaml_const_int64 = Some (fun s -> Const_int64 (Int64.of_string s));;
+@@ -136,14 +152,33 @@
+
+ let ocaml_pexp_assert fname loc e = Pexp_assert e;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function (lab, eo, pel);;
+
+ let ocaml_pexp_lazy = Some (fun e -> Pexp_lazy e);;
+@@ -187,11 +222,13 @@
+ Some (pexp_variant_pat, pexp_variant)
+ ;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -201,6 +238,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = Some (fun p -> Ppat_lazy p);;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -226,13 +268,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule =
+ let f ntl =
+@@ -250,19 +301,21 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind =
+- Some (fun s li -> Pstr_exn_rebind (mknoloc s, mknoloc li))
++ Some (fun loc s li -> Pstr_exn_rebind (mkloc loc s, mkloc loc li))
+ ;;
+
+-let ocaml_pstr_include = Some (fun me -> Pstr_include me);;
++let ocaml_pstr_include = Some (fun loc me -> Pstr_include me);;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -321,6 +374,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Concrete, t, loc);;
+@@ -337,6 +392,8 @@
+
+ let ocaml_pwith_modsubst = None;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = None;;
+@@ -416,3 +473,9 @@
+ let printf_ksprintf = Printf.ksprintf;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/3.11.2.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.11.2.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/3.11.2.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.11.2.ml 2014-08-01 10:14:54.309065434 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -47,13 +47,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ Right
+@@ -101,7 +113,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl, ll);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = None;;
+
+@@ -122,6 +136,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = Some (fun s -> Const_int32 (Int32.of_string s));;
+
+ let ocaml_const_int64 = Some (fun s -> Const_int64 (Int64.of_string s));;
+@@ -136,14 +152,33 @@
+
+ let ocaml_pexp_assert fname loc e = Pexp_assert e;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function (lab, eo, pel);;
+
+ let ocaml_pexp_lazy = Some (fun e -> Pexp_lazy e);;
+@@ -187,11 +222,13 @@
+ Some (pexp_variant_pat, pexp_variant)
+ ;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -201,6 +238,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = Some (fun p -> Ppat_lazy p);;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -226,13 +268,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule =
+ let f ntl =
+@@ -250,19 +301,21 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind =
+- Some (fun s li -> Pstr_exn_rebind (mknoloc s, mknoloc li))
++ Some (fun loc s li -> Pstr_exn_rebind (mkloc loc s, mkloc loc li))
+ ;;
+
+-let ocaml_pstr_include = Some (fun me -> Pstr_include me);;
++let ocaml_pstr_include = Some (fun loc me -> Pstr_include me);;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -321,6 +374,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Concrete, t, loc);;
+@@ -337,6 +392,8 @@
+
+ let ocaml_pwith_modsubst = None;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = None;;
+@@ -416,3 +473,9 @@
+ let printf_ksprintf = Printf.ksprintf;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/3.11.3.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.11.3.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/3.11.3.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.11.3.ml 2014-08-01 10:14:54.309065434 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -47,13 +47,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ Right
+@@ -101,7 +113,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl, ll);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = None;;
+
+@@ -122,6 +136,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = Some (fun s -> Const_int32 (Int32.of_string s));;
+
+ let ocaml_const_int64 = Some (fun s -> Const_int64 (Int64.of_string s));;
+@@ -136,14 +152,33 @@
+
+ let ocaml_pexp_assert fname loc e = Pexp_assert e;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function (lab, eo, pel);;
+
+ let ocaml_pexp_lazy = Some (fun e -> Pexp_lazy e);;
+@@ -187,11 +222,13 @@
+ Some (pexp_variant_pat, pexp_variant)
+ ;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -201,6 +238,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = Some (fun p -> Ppat_lazy p);;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -226,13 +268,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule =
+ let f ntl =
+@@ -250,19 +301,21 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind =
+- Some (fun s li -> Pstr_exn_rebind (mknoloc s, mknoloc li))
++ Some (fun loc s li -> Pstr_exn_rebind (mkloc loc s, mkloc loc li))
+ ;;
+
+-let ocaml_pstr_include = Some (fun me -> Pstr_include me);;
++let ocaml_pstr_include = Some (fun loc me -> Pstr_include me);;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -321,6 +374,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Concrete, t, loc);;
+@@ -337,6 +392,8 @@
+
+ let ocaml_pwith_modsubst = None;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = None;;
+@@ -416,3 +473,9 @@
+ let printf_ksprintf = Printf.ksprintf;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/3.11.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.11.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/3.11.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.11.ml 2014-08-01 10:14:54.309065434 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -47,13 +47,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ Right
+@@ -101,7 +113,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl, ll);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = None;;
+
+@@ -122,6 +136,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = Some (fun s -> Const_int32 (Int32.of_string s));;
+
+ let ocaml_const_int64 = Some (fun s -> Const_int64 (Int64.of_string s));;
+@@ -136,14 +152,33 @@
+
+ let ocaml_pexp_assert fname loc e = Pexp_assert e;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function (lab, eo, pel);;
+
+ let ocaml_pexp_lazy = Some (fun e -> Pexp_lazy e);;
+@@ -187,11 +222,13 @@
+ Some (pexp_variant_pat, pexp_variant)
+ ;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -201,6 +238,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = Some (fun p -> Ppat_lazy p);;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -226,13 +268,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule =
+ let f ntl =
+@@ -250,19 +301,21 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind =
+- Some (fun s li -> Pstr_exn_rebind (mknoloc s, mknoloc li))
++ Some (fun loc s li -> Pstr_exn_rebind (mkloc loc s, mkloc loc li))
+ ;;
+
+-let ocaml_pstr_include = Some (fun me -> Pstr_include me);;
++let ocaml_pstr_include = Some (fun loc me -> Pstr_include me);;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -321,6 +374,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Concrete, t, loc);;
+@@ -337,6 +392,8 @@
+
+ let ocaml_pwith_modsubst = None;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = None;;
+@@ -416,3 +473,9 @@
+ let printf_ksprintf = Printf.ksprintf;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/3.12.0.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.12.0.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/3.12.0.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.12.0.ml 2014-08-01 10:14:54.309065434 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -47,13 +47,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ Right
+@@ -101,7 +113,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl, ll);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = Some (fun pt -> Ptyp_package pt);;
+
+@@ -122,6 +136,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = Some (fun s -> Const_int32 (Int32.of_string s));;
+
+ let ocaml_const_int64 = Some (fun s -> Const_int64 (Int64.of_string s));;
+@@ -136,14 +152,33 @@
+
+ let ocaml_pexp_assert fname loc e = Pexp_assert e;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function (lab, eo, pel);;
+
+ let ocaml_pexp_lazy = Some (fun e -> Pexp_lazy e);;
+@@ -187,11 +222,13 @@
+ Some (pexp_variant_pat, pexp_variant)
+ ;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -201,6 +238,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = Some (fun p -> Ppat_lazy p);;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -226,13 +268,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule =
+ let f ntl =
+@@ -250,19 +301,21 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind =
+- Some (fun s li -> Pstr_exn_rebind (mknoloc s, mknoloc li))
++ Some (fun loc s li -> Pstr_exn_rebind (mkloc loc s, mkloc loc li))
+ ;;
+
+-let ocaml_pstr_include = Some (fun me -> Pstr_include me);;
++let ocaml_pstr_include = Some (fun loc me -> Pstr_include me);;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -323,6 +376,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Concrete, t, loc);;
+@@ -341,6 +396,8 @@
+ Some (fun loc me -> Pwith_modsubst (mkloc loc me))
+ ;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = Some (fun td -> Pwith_typesubst td);;
+@@ -420,3 +477,9 @@
+ let printf_ksprintf = Printf.ksprintf;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/3.12.1.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.12.1.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/3.12.1.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.12.1.ml 2014-08-01 10:14:54.309065434 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -47,13 +47,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ Right
+@@ -101,7 +113,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl, ll);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = Some (fun pt -> Ptyp_package pt);;
+
+@@ -122,6 +136,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = Some (fun s -> Const_int32 (Int32.of_string s));;
+
+ let ocaml_const_int64 = Some (fun s -> Const_int64 (Int64.of_string s));;
+@@ -136,14 +152,33 @@
+
+ let ocaml_pexp_assert fname loc e = Pexp_assert e;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function (lab, eo, pel);;
+
+ let ocaml_pexp_lazy = Some (fun e -> Pexp_lazy e);;
+@@ -187,11 +222,13 @@
+ Some (pexp_variant_pat, pexp_variant)
+ ;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -201,6 +238,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = Some (fun p -> Ppat_lazy p);;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -226,13 +268,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule =
+ let f ntl =
+@@ -250,19 +301,21 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind =
+- Some (fun s li -> Pstr_exn_rebind (mknoloc s, mknoloc li))
++ Some (fun loc s li -> Pstr_exn_rebind (mkloc loc s, mkloc loc li))
+ ;;
+
+-let ocaml_pstr_include = Some (fun me -> Pstr_include me);;
++let ocaml_pstr_include = Some (fun loc me -> Pstr_include me);;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -323,6 +376,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Concrete, t, loc);;
+@@ -341,6 +396,8 @@
+ Some (fun loc me -> Pwith_modsubst (mkloc loc me))
+ ;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = Some (fun td -> Pwith_typesubst td);;
+@@ -420,3 +477,9 @@
+ let printf_ksprintf = Printf.ksprintf;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/3.12.2.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.12.2.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/3.12.2.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.12.2.ml 2014-08-01 10:14:54.309065434 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -47,13 +47,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ Right
+@@ -101,7 +113,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl, ll);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = Some (fun pt -> Ptyp_package pt);;
+
+@@ -122,6 +136,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = Some (fun s -> Const_int32 (Int32.of_string s));;
+
+ let ocaml_const_int64 = Some (fun s -> Const_int64 (Int64.of_string s));;
+@@ -136,14 +152,33 @@
+
+ let ocaml_pexp_assert fname loc e = Pexp_assert e;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function (lab, eo, pel);;
+
+ let ocaml_pexp_lazy = Some (fun e -> Pexp_lazy e);;
+@@ -187,11 +222,13 @@
+ Some (pexp_variant_pat, pexp_variant)
+ ;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -201,6 +238,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = Some (fun p -> Ppat_lazy p);;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -226,13 +268,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule =
+ let f ntl =
+@@ -250,19 +301,21 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind =
+- Some (fun s li -> Pstr_exn_rebind (mknoloc s, mknoloc li))
++ Some (fun loc s li -> Pstr_exn_rebind (mkloc loc s, mkloc loc li))
+ ;;
+
+-let ocaml_pstr_include = Some (fun me -> Pstr_include me);;
++let ocaml_pstr_include = Some (fun loc me -> Pstr_include me);;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -323,6 +376,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Concrete, t, loc);;
+@@ -341,6 +396,8 @@
+ Some (fun loc me -> Pwith_modsubst (mkloc loc me))
+ ;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = Some (fun td -> Pwith_typesubst td);;
+@@ -420,3 +477,9 @@
+ let printf_ksprintf = Printf.ksprintf;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/3.13.0-gadt.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.13.0-gadt.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/3.13.0-gadt.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/3.13.0-gadt.ml 2014-08-01 10:14:54.309065434 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -55,13 +55,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ Right
+ {ptype_params = params; ptype_cstrs = cl; ptype_kind = tk;
+ ptype_private = pf; ptype_manifest = tm; ptype_loc = loc;
+@@ -96,7 +108,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl, ll);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = Some (fun pt -> Ptyp_package pt);;
+
+@@ -117,6 +131,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = Some (fun s -> Const_int32 (Int32.of_string s));;
+
+ let ocaml_const_int64 = Some (fun s -> Const_int64 (Int64.of_string s));;
+@@ -131,14 +147,33 @@
+
+ let ocaml_pexp_assert fname loc e = Pexp_assert e;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function (lab, eo, pel);;
+
+ let ocaml_pexp_lazy = Some (fun e -> Pexp_lazy e);;
+@@ -184,11 +219,13 @@
+ Some (pexp_variant_pat, pexp_variant)
+ ;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -198,6 +235,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = Some (fun p -> Ppat_lazy p);;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -225,13 +267,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule =
+ let f ntl =
+@@ -249,19 +300,21 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind =
+- Some (fun s li -> Pstr_exn_rebind (mknoloc s, mknoloc li))
++ Some (fun loc s li -> Pstr_exn_rebind (mkloc loc s, mkloc loc li))
+ ;;
+
+-let ocaml_pstr_include = Some (fun me -> Pstr_include me);;
++let ocaml_pstr_include = Some (fun loc me -> Pstr_include me);;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -324,6 +377,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Concrete, t, loc);;
+@@ -342,6 +397,8 @@
+ Some (fun loc me -> Pwith_modsubst (mkloc loc me))
+ ;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = Some (fun td -> Pwith_typesubst td);;
+@@ -421,3 +478,9 @@
+ let printf_ksprintf = Printf.ksprintf;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/4.00.0.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/4.00.0.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/4.00.0.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/4.00.0.ml 2014-08-01 10:14:54.309065434 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -62,7 +62,7 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p =
++let ocaml_value_description vn t p =
+ {pval_type = t; pval_prim = p; pval_loc = t.ptyp_loc}
+ ;;
+
+@@ -70,10 +70,22 @@
+
+ let ocaml_class_field loc cfd = {pcf_desc = cfd; pcf_loc = loc};;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+- let params = List.map (fun os -> Some (mknoloc os)) params in
++ let params = List.map (fun os -> Some (mkloc loc os)) params in
+ Right
+ {ptype_params = params; ptype_cstrs = cl; ptype_kind = tk;
+ ptype_private = pf; ptype_manifest = tm; ptype_loc = loc;
+@@ -122,7 +134,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl, ll);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = Some (fun pt -> Ptyp_package pt);;
+
+@@ -143,6 +157,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = Some (fun s -> Const_int32 (Int32.of_string s));;
+
+ let ocaml_const_int64 = Some (fun s -> Const_int64 (Int64.of_string s));;
+@@ -157,14 +173,33 @@
+
+ let ocaml_pexp_assert fname loc e = Pexp_assert e;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li.txt, li.loc, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function (lab, eo, pel);;
+
+ let ocaml_pexp_lazy = Some (fun e -> Pexp_lazy e);;
+@@ -210,12 +245,14 @@
+ Some (pexp_variant_pat, pexp_variant)
+ ;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
+- Ppat_construct (mkloc li_loc li, po, chk_arity)
++let ocaml_ppat_construct loc li po chk_arity =
++ Ppat_construct (mkloc loc li, po, chk_arity)
+ ;;
+
+ let ocaml_ppat_construct_args =
+@@ -224,6 +261,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = Some (fun p -> Ppat_lazy p);;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -251,13 +293,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule =
+ let f ntl =
+@@ -275,19 +326,21 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind =
+- Some (fun s li -> Pstr_exn_rebind (mknoloc s, mknoloc li))
++ Some (fun loc s li -> Pstr_exn_rebind (mkloc loc s, mkloc loc li))
+ ;;
+
+-let ocaml_pstr_include = Some (fun me -> Pstr_include me);;
++let ocaml_pstr_include = Some (fun loc me -> Pstr_include me);;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -360,6 +413,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Concrete, t);;
+@@ -384,6 +439,8 @@
+ Some (fun loc me -> Pwith_modsubst (mkloc loc me))
+ ;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = Some (fun td -> Pwith_typesubst td);;
+@@ -463,3 +520,9 @@
+ let printf_ksprintf = Printf.ksprintf;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/4.00.1.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/4.00.1.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/4.00.1.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/4.00.1.ml 2014-08-01 10:14:54.309065434 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -62,7 +62,7 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p =
++let ocaml_value_description vn t p =
+ {pval_type = t; pval_prim = p; pval_loc = t.ptyp_loc}
+ ;;
+
+@@ -70,10 +70,22 @@
+
+ let ocaml_class_field loc cfd = {pcf_desc = cfd; pcf_loc = loc};;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+- let params = List.map (fun os -> Some (mknoloc os)) params in
++ let params = List.map (fun os -> Some (mkloc loc os)) params in
+ Right
+ {ptype_params = params; ptype_cstrs = cl; ptype_kind = tk;
+ ptype_private = pf; ptype_manifest = tm; ptype_loc = loc;
+@@ -122,7 +134,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl, ll);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = Some (fun pt -> Ptyp_package pt);;
+
+@@ -143,6 +157,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = Some (fun s -> Const_int32 (Int32.of_string s));;
+
+ let ocaml_const_int64 = Some (fun s -> Const_int64 (Int64.of_string s));;
+@@ -157,14 +173,33 @@
+
+ let ocaml_pexp_assert fname loc e = Pexp_assert e;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li.txt, li.loc, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function (lab, eo, pel);;
+
+ let ocaml_pexp_lazy = Some (fun e -> Pexp_lazy e);;
+@@ -210,12 +245,14 @@
+ Some (pexp_variant_pat, pexp_variant)
+ ;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
+- Ppat_construct (mkloc li_loc li, po, chk_arity)
++let ocaml_ppat_construct loc li po chk_arity =
++ Ppat_construct (mkloc loc li, po, chk_arity)
+ ;;
+
+ let ocaml_ppat_construct_args =
+@@ -224,6 +261,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = Some (fun p -> Ppat_lazy p);;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -251,13 +293,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule =
+ let f ntl =
+@@ -275,19 +326,21 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind =
+- Some (fun s li -> Pstr_exn_rebind (mknoloc s, mknoloc li))
++ Some (fun loc s li -> Pstr_exn_rebind (mkloc loc s, mkloc loc li))
+ ;;
+
+-let ocaml_pstr_include = Some (fun me -> Pstr_include me);;
++let ocaml_pstr_include = Some (fun loc me -> Pstr_include me);;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -360,6 +413,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Concrete, t);;
+@@ -384,6 +439,8 @@
+ Some (fun loc me -> Pwith_modsubst (mkloc loc me))
+ ;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = Some (fun td -> Pwith_typesubst td);;
+@@ -463,3 +520,9 @@
+ let printf_ksprintf = Printf.ksprintf;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/4.00.2.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/4.00.2.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/4.00.2.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/4.00.2.ml 2014-08-01 10:14:54.309065434 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -62,7 +62,7 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p =
++let ocaml_value_description vn t p =
+ {pval_type = t; pval_prim = p; pval_loc = t.ptyp_loc}
+ ;;
+
+@@ -70,10 +70,22 @@
+
+ let ocaml_class_field loc cfd = {pcf_desc = cfd; pcf_loc = loc};;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+- let params = List.map (fun os -> Some (mknoloc os)) params in
++ let params = List.map (fun os -> Some (mkloc loc os)) params in
+ Right
+ {ptype_params = params; ptype_cstrs = cl; ptype_kind = tk;
+ ptype_private = pf; ptype_manifest = tm; ptype_loc = loc;
+@@ -122,7 +134,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl, ll);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = Some (fun pt -> Ptyp_package pt);;
+
+@@ -143,6 +157,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = Some (fun s -> Const_int32 (Int32.of_string s));;
+
+ let ocaml_const_int64 = Some (fun s -> Const_int64 (Int64.of_string s));;
+@@ -157,14 +173,33 @@
+
+ let ocaml_pexp_assert fname loc e = Pexp_assert e;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li.txt, li.loc, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function (lab, eo, pel);;
+
+ let ocaml_pexp_lazy = Some (fun e -> Pexp_lazy e);;
+@@ -210,12 +245,14 @@
+ Some (pexp_variant_pat, pexp_variant)
+ ;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
+- Ppat_construct (mkloc li_loc li, po, chk_arity)
++let ocaml_ppat_construct loc li po chk_arity =
++ Ppat_construct (mkloc loc li, po, chk_arity)
+ ;;
+
+ let ocaml_ppat_construct_args =
+@@ -224,6 +261,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = Some (fun p -> Ppat_lazy p);;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -251,13 +293,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule =
+ let f ntl =
+@@ -275,19 +326,21 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind =
+- Some (fun s li -> Pstr_exn_rebind (mknoloc s, mknoloc li))
++ Some (fun loc s li -> Pstr_exn_rebind (mkloc loc s, mkloc loc li))
+ ;;
+
+-let ocaml_pstr_include = Some (fun me -> Pstr_include me);;
++let ocaml_pstr_include = Some (fun loc me -> Pstr_include me);;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -360,6 +413,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Concrete, t);;
+@@ -384,6 +439,8 @@
+ Some (fun loc me -> Pwith_modsubst (mkloc loc me))
+ ;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = Some (fun td -> Pwith_typesubst td);;
+@@ -463,3 +520,9 @@
+ let printf_ksprintf = Printf.ksprintf;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/4.01.0.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/4.01.0.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/4.01.0.ml 2013-06-10 16:57:21.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/4.01.0.ml 2014-08-01 10:14:54.309065434 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -62,7 +62,7 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p =
++let ocaml_value_description vn t p =
+ {pval_type = t; pval_prim = p; pval_loc = t.ptyp_loc}
+ ;;
+
+@@ -70,10 +70,22 @@
+
+ let ocaml_class_field loc cfd = {pcf_desc = cfd; pcf_loc = loc};;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+- let params = List.map (fun os -> Some (mknoloc os)) params in
++ let params = List.map (fun os -> Some (mkloc loc os)) params in
+ Right
+ {ptype_params = params; ptype_cstrs = cl; ptype_kind = tk;
+ ptype_private = pf; ptype_manifest = tm; ptype_loc = loc;
+@@ -122,7 +134,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl, ll);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = Some (fun pt -> Ptyp_package pt);;
+
+@@ -143,6 +157,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = Some (fun s -> Const_int32 (Int32.of_string s));;
+
+ let ocaml_const_int64 = Some (fun s -> Const_int64 (Int64.of_string s));;
+@@ -157,14 +173,33 @@
+
+ let ocaml_pexp_assert fname loc e = Pexp_assert e;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li.txt, li.loc, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function (lab, eo, pel);;
+
+ let ocaml_pexp_lazy = Some (fun e -> Pexp_lazy e);;
+@@ -210,12 +245,14 @@
+ Some (pexp_variant_pat, pexp_variant)
+ ;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
+- Ppat_construct (mkloc li_loc li, po, chk_arity)
++let ocaml_ppat_construct loc li po chk_arity =
++ Ppat_construct (mkloc loc li, po, chk_arity)
+ ;;
+
+ let ocaml_ppat_construct_args =
+@@ -224,6 +261,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = Some (fun p -> Ppat_lazy p);;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -251,13 +293,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (Fresh, mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (Fresh, mkloc loc li);;
+
+ let ocaml_psig_recmodule =
+ let f ntl =
+@@ -275,19 +326,21 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind =
+- Some (fun s li -> Pstr_exn_rebind (mknoloc s, mknoloc li))
++ Some (fun loc s li -> Pstr_exn_rebind (mkloc loc s, mkloc loc li))
+ ;;
+
+-let ocaml_pstr_include = Some (fun me -> Pstr_include me);;
++let ocaml_pstr_include = Some (fun loc me -> Pstr_include me);;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (Fresh, mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (Fresh, mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -360,6 +413,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Concrete, t);;
+@@ -384,6 +439,8 @@
+ Some (fun loc me -> Pwith_modsubst (mkloc loc me))
+ ;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = Some (fun td -> Pwith_typesubst td);;
+@@ -463,3 +520,9 @@
+ let printf_ksprintf = Printf.ksprintf;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/4.01.1.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/4.01.1.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/4.01.1.ml 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/4.01.1.ml 2014-08-01 10:14:54.309065434 +0100
+@@ -0,0 +1,528 @@
++(* camlp5r pa_macro.cmo *)
++(* versdep.ml,v *)
++(* Copyright (c) INRIA 2007-2012 *)
++
++open Parsetree;;
++open Longident;;
++open Asttypes;;
++
++type ('a, 'b) choice =
++ Left of 'a
++ | Right of 'b
++;;
++
++let sys_ocaml_version = Sys.ocaml_version;;
++
++let ocaml_location (fname, lnum, bolp, lnuml, bolpl, bp, ep) =
++ let loc_at n lnum bolp =
++ {Lexing.pos_fname = if lnum = -1 then "" else fname;
++ Lexing.pos_lnum = lnum; Lexing.pos_bol = bolp; Lexing.pos_cnum = n}
++ in
++ {Location.loc_start = loc_at bp lnum bolp;
++ Location.loc_end = loc_at ep lnuml bolpl;
++ Location.loc_ghost = bp = 0 && ep = 0}
++;;
++
++let loc_none =
++ let loc =
++ {Lexing.pos_fname = "_none_"; Lexing.pos_lnum = 1; Lexing.pos_bol = 0;
++ Lexing.pos_cnum = -1}
++ in
++ {Location.loc_start = loc; Location.loc_end = loc;
++ Location.loc_ghost = true}
++;;
++
++let mkloc loc txt = {Location.txt = txt; Location.loc = loc};;
++let mknoloc txt = mkloc loc_none txt;;
++
++let ocaml_id_or_li_of_string_list loc sl =
++ let mkli s =
++ let rec loop f =
++ function
++ i :: il -> loop (fun s -> Ldot (f i, s)) il
++ | [] -> f s
++ in
++ loop (fun s -> Lident s)
++ in
++ match List.rev sl with
++ [] -> None
++ | s :: sl -> Some (mkli s (List.rev sl))
++;;
++
++let list_map_check f l =
++ let rec loop rev_l =
++ function
++ x :: l ->
++ begin match f x with
++ Some s -> loop (s :: rev_l) l
++ | None -> None
++ end
++ | [] -> Some (List.rev rev_l)
++ in
++ loop [] l
++;;
++
++let ocaml_value_description vn t p =
++ {pval_type = t; pval_prim = p; pval_loc = t.ptyp_loc}
++;;
++
++let ocaml_class_type_field loc ctfd = {pctf_desc = ctfd; pctf_loc = loc};;
++
++let ocaml_class_field loc cfd = {pcf_desc = cfd; pcf_loc = loc};;
++
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
++ match list_map_check (fun s_opt -> s_opt) params with
++ Some params ->
++ let params = List.map (fun os -> Some (mkloc loc os)) params in
++ Right
++ {ptype_params = params; ptype_cstrs = cl; ptype_kind = tk;
++ ptype_private = pf; ptype_manifest = tm; ptype_loc = loc;
++ ptype_variance = variance}
++ | None -> Left "no '_' type param in this ocaml version"
++;;
++
++let ocaml_class_type = Some (fun d loc -> {pcty_desc = d; pcty_loc = loc});;
++
++let ocaml_class_expr = Some (fun d loc -> {pcl_desc = d; pcl_loc = loc});;
++
++let ocaml_class_structure p cil = {pcstr_pat = p; pcstr_fields = cil};;
++
++let ocaml_pmty_ident loc li = Pmty_ident (mkloc loc li);;
++
++let ocaml_pmty_functor sloc s mt1 mt2 =
++ Pmty_functor (mkloc sloc s, mt1, mt2)
++;;
++
++let ocaml_pmty_typeof = Some (fun me -> Pmty_typeof me);;
++
++let ocaml_pmty_with mt lcl =
++ let lcl = List.map (fun (s, c) -> mknoloc s, c) lcl in Pmty_with (mt, lcl)
++;;
++
++let ocaml_ptype_abstract = Ptype_abstract;;
++
++let ocaml_ptype_record ltl priv =
++ Ptype_record
++ (List.map (fun (s, mf, ct, loc) -> mkloc loc s, mf, ct, loc) ltl)
++;;
++
++let ocaml_ptype_variant ctl priv =
++ try
++ let ctl =
++ List.map
++ (fun (c, tl, rto, loc) ->
++ if rto <> None then raise Exit else mknoloc c, tl, None, loc)
++ ctl
++ in
++ Some (Ptype_variant ctl)
++ with Exit -> None
++;;
++
++let ocaml_ptyp_arrow lab t1 t2 = Ptyp_arrow (lab, t1, t2);;
++
++let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl, ll);;
++
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
++
++let ocaml_ptyp_package = Some (fun pt -> Ptyp_package pt);;
++
++let ocaml_ptyp_poly = Some (fun cl t -> Ptyp_poly (cl, t));;
++
++let ocaml_ptyp_variant catl clos sl_opt =
++ let catl =
++ List.map
++ (function
++ Left (c, a, tl) -> Rtag (c, a, tl)
++ | Right t -> Rinherit t)
++ catl
++ in
++ Some (Ptyp_variant (catl, clos, sl_opt))
++;;
++
++let ocaml_package_type li ltl =
++ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
++;;
++
++let ocaml_const_string s = Const_string s;;
++
++let ocaml_const_int32 = Some (fun s -> Const_int32 (Int32.of_string s));;
++
++let ocaml_const_int64 = Some (fun s -> Const_int64 (Int64.of_string s));;
++
++let ocaml_const_nativeint =
++ Some (fun s -> Const_nativeint (Nativeint.of_string s))
++;;
++
++let ocaml_pexp_apply f lel = Pexp_apply (f, lel);;
++
++let ocaml_pexp_assertfalse fname loc = Pexp_assertfalse;;
++
++let ocaml_pexp_assert fname loc e = Pexp_assert e;;
++
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
++let ocaml_pexp_construct loc li po chk_arity =
++ Pexp_construct (mkloc loc li, po, chk_arity)
++;;
++
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li.txt, li.loc, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
++let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
++
++let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
++
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
++let ocaml_pexp_function lab eo pel = Pexp_function (lab, eo, pel);;
++
++let ocaml_pexp_lazy = Some (fun e -> Pexp_lazy e);;
++
++let ocaml_pexp_ident li = Pexp_ident (mknoloc li);;
++
++let ocaml_pexp_letmodule =
++ Some (fun i me e -> Pexp_letmodule (mknoloc i, me, e))
++;;
++
++let ocaml_pexp_new loc li = Pexp_new (mkloc loc li);;
++
++let ocaml_pexp_newtype = Some (fun s e -> Pexp_newtype (s, e));;
++
++let ocaml_pexp_object = Some (fun cs -> Pexp_object cs);;
++
++let ocaml_pexp_open = Some (fun li e -> Pexp_open (Fresh, mknoloc li, e));;
++
++let ocaml_pexp_override sel =
++ let sel = List.map (fun (s, e) -> mknoloc s, e) sel in Pexp_override sel
++;;
++
++let ocaml_pexp_pack : ('a -> 'b -> 'c, 'd) choice option =
++ Some (Right ((fun me -> Pexp_pack me), (fun pt -> Ptyp_package pt)))
++;;
++
++let ocaml_pexp_poly = Some (fun e t -> Pexp_poly (e, t));;
++
++let ocaml_pexp_record lel eo =
++ let lel = List.map (fun (li, loc, e) -> mkloc loc li, e) lel in
++ Pexp_record (lel, eo)
++;;
++
++let ocaml_pexp_setinstvar s e = Pexp_setinstvar (mknoloc s, e);;
++
++let ocaml_pexp_variant =
++ let pexp_variant_pat =
++ function
++ Pexp_variant (lab, eo) -> Some (lab, eo)
++ | _ -> None
++ in
++ let pexp_variant (lab, eo) = Pexp_variant (lab, eo) in
++ Some (pexp_variant_pat, pexp_variant)
++;;
++
++let ocaml_value_binding loc p e = p, e;;
++
++let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
++
++let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
++
++let ocaml_ppat_construct loc li po chk_arity =
++ Ppat_construct (mkloc loc li, po, chk_arity)
++;;
++
++let ocaml_ppat_construct_args =
++ function
++ Ppat_construct (li, po, chk_arity) -> Some (li.txt, li.loc, po, chk_arity)
++ | _ -> None
++;;
++
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
++let ocaml_ppat_lazy = Some (fun p -> Ppat_lazy p);;
++
++let ocaml_ppat_record lpl is_closed =
++ let lpl = List.map (fun (li, loc, p) -> mkloc loc li, p) lpl in
++ Ppat_record (lpl, (if is_closed then Closed else Open))
++;;
++
++let ocaml_ppat_type = Some (fun loc li -> Ppat_type (mkloc loc li));;
++
++let ocaml_ppat_unpack =
++ Some ((fun loc s -> Ppat_unpack (mkloc loc s)), (fun pt -> Ptyp_package pt))
++;;
++
++let ocaml_ppat_var loc s = Ppat_var (mkloc loc s);;
++
++let ocaml_ppat_variant =
++ let ppat_variant_pat =
++ function
++ Ppat_variant (lab, po) -> Some (lab, po)
++ | _ -> None
++ in
++ let ppat_variant (lab, po) = Ppat_variant (lab, po) in
++ Some (ppat_variant_pat, ppat_variant)
++;;
++
++let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
++
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
++
++let ocaml_psig_include loc mt = Psig_include mt;;
++
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
++
++let ocaml_psig_open loc li = Psig_open (Fresh, mkloc loc li);;
++
++let ocaml_psig_recmodule =
++ let f ntl =
++ let ntl = List.map (fun (s, mt) -> mknoloc s, mt) ntl in
++ Psig_recmodule ntl
++ in
++ Some f
++;;
++
++let ocaml_psig_type stl =
++ let stl = List.map (fun (s, t) -> mknoloc s, t) stl in Psig_type stl
++;;
++
++let ocaml_psig_value s vd = Psig_value (mknoloc s, vd);;
++
++let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
++
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
++
++let ocaml_pstr_exn_rebind =
++ Some (fun loc s li -> Pstr_exn_rebind (mkloc loc s, mkloc loc li))
++;;
++
++let ocaml_pstr_include = Some (fun loc me -> Pstr_include me);;
++
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
++
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
++
++let ocaml_pstr_open loc li = Pstr_open (Fresh, mknoloc li);;
++
++let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
++
++let ocaml_pstr_recmodule =
++ let f nel =
++ Pstr_recmodule (List.map (fun (s, mt, me) -> mknoloc s, mt, me) nel)
++ in
++ Some f
++;;
++
++let ocaml_pstr_type stl =
++ let stl = List.map (fun (s, t) -> mknoloc s, t) stl in Pstr_type stl
++;;
++
++let ocaml_class_infos =
++ Some
++ (fun virt (sl, sloc) name expr loc variance ->
++ let params = List.map (fun s -> mkloc loc s) sl, sloc in
++ {pci_virt = virt; pci_params = params; pci_name = mkloc loc name;
++ pci_expr = expr; pci_loc = loc; pci_variance = variance})
++;;
++
++let ocaml_pmod_ident li = Pmod_ident (mknoloc li);;
++
++let ocaml_pmod_functor s mt me = Pmod_functor (mknoloc s, mt, me);;
++
++let ocaml_pmod_unpack : ('a -> 'b -> 'c, 'd) choice option =
++ Some (Right ((fun e -> Pmod_unpack e), (fun pt -> Ptyp_package pt)))
++;;
++
++let ocaml_pcf_cstr = Some (fun (t1, t2, loc) -> Pcf_constr (t1, t2));;
++
++let ocaml_pcf_inher ce pb = Pcf_inher (Fresh, ce, pb);;
++
++let ocaml_pcf_init = Some (fun e -> Pcf_init e);;
++
++let ocaml_pcf_meth (s, pf, ovf, e, loc) =
++ let pf = if pf then Private else Public in
++ let ovf = if ovf then Override else Fresh in
++ Pcf_meth (mkloc loc s, pf, ovf, e)
++;;
++
++let ocaml_pcf_val (s, mf, ovf, e, loc) =
++ let mf = if mf then Mutable else Immutable in
++ let ovf = if ovf then Override else Fresh in
++ Pcf_val (mkloc loc s, mf, ovf, e)
++;;
++
++let ocaml_pcf_valvirt =
++ let ocaml_pcf (s, mf, t, loc) =
++ let mf = if mf then Mutable else Immutable in
++ Pcf_valvirt (mkloc loc s, mf, t)
++ in
++ Some ocaml_pcf
++;;
++
++let ocaml_pcf_virt (s, pf, t, loc) = Pcf_virt (mkloc loc s, pf, t);;
++
++let ocaml_pcl_apply = Some (fun ce lel -> Pcl_apply (ce, lel));;
++
++let ocaml_pcl_constr = Some (fun li ctl -> Pcl_constr (mknoloc li, ctl));;
++
++let ocaml_pcl_constraint = Some (fun ce ct -> Pcl_constraint (ce, ct));;
++
++let ocaml_pcl_fun = Some (fun lab ceo p ce -> Pcl_fun (lab, ceo, p, ce));;
++
++let ocaml_pcl_let = Some (fun rf pel ce -> Pcl_let (rf, pel, ce));;
++
++let ocaml_pcl_structure = Some (fun cs -> Pcl_structure cs);;
++
++let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2));;
++
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
++let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t);;
++
++let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Concrete, t);;
++
++let ocaml_pctf_virt (s, pf, t, loc) = Pctf_virt (s, pf, t);;
++
++let ocaml_pcty_constr = Some (fun li ltl -> Pcty_constr (mknoloc li, ltl));;
++
++let ocaml_pcty_fun = Some (fun lab t ct -> Pcty_fun (lab, t, ct));;
++
++let ocaml_pcty_signature =
++ let f (t, ctfl) =
++ let cs = {pcsig_self = t; pcsig_fields = ctfl; pcsig_loc = t.ptyp_loc} in
++ Pcty_signature cs
++ in
++ Some f
++;;
++
++let ocaml_pdir_bool = Some (fun b -> Pdir_bool b);;
++
++let ocaml_pwith_modsubst =
++ Some (fun loc me -> Pwith_modsubst (mkloc loc me))
++;;
++
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
++let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
++
++let ocaml_pwith_typesubst = Some (fun td -> Pwith_typesubst td);;
++
++let module_prefix_can_be_in_first_record_label_only = true;;
++
++let split_or_patterns_with_bindings = false;;
++
++let has_records_with_with = true;;
++
++(* *)
++
++let jocaml_pstr_def : (_ -> _) option = None;;
++
++let jocaml_pexp_def : (_ -> _ -> _) option = None;;
++
++let jocaml_pexp_par : (_ -> _ -> _) option = None;;
++
++let jocaml_pexp_reply : (_ -> _ -> _ -> _) option = None;;
++
++let jocaml_pexp_spawn : (_ -> _) option = None;;
++
++let arg_rest =
++ function
++ Arg.Rest r -> Some r
++ | _ -> None
++;;
++
++let arg_set_string =
++ function
++ Arg.Set_string r -> Some r
++ | _ -> None
++;;
++
++let arg_set_int =
++ function
++ Arg.Set_int r -> Some r
++ | _ -> None
++;;
++
++let arg_set_float =
++ function
++ Arg.Set_float r -> Some r
++ | _ -> None
++;;
++
++let arg_symbol =
++ function
++ Arg.Symbol (s, f) -> Some (s, f)
++ | _ -> None
++;;
++
++let arg_tuple =
++ function
++ Arg.Tuple t -> Some t
++ | _ -> None
++;;
++
++let arg_bool =
++ function
++ Arg.Bool f -> Some f
++ | _ -> None
++;;
++
++let char_escaped = Char.escaped;;
++
++let hashtbl_mem = Hashtbl.mem;;
++
++let list_rev_append = List.rev_append;;
++
++let list_rev_map = List.rev_map;;
++
++let list_sort = List.sort;;
++
++let pervasives_set_binary_mode_out = Pervasives.set_binary_mode_out;;
++
++let printf_ksprintf = Printf.ksprintf;;
++
++let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/4.02.0.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/4.02.0.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/4.02.0.ml 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/4.02.0.ml 2014-08-01 10:14:54.309065434 +0100
+@@ -0,0 +1,657 @@
++(* camlp5r pa_macro.cmo *)
++(* versdep.ml,v *)
++(* Copyright (c) INRIA 2007-2012 *)
++
++open Parsetree;;
++open Longident;;
++open Asttypes;;
++
++type ('a, 'b) choice =
++ Left of 'a
++ | Right of 'b
++;;
++
++let sys_ocaml_version = Sys.ocaml_version;;
++
++let ocaml_location (fname, lnum, bolp, lnuml, bolpl, bp, ep) =
++ let loc_at n lnum bolp =
++ {Lexing.pos_fname = if lnum = -1 then "" else fname;
++ Lexing.pos_lnum = lnum; Lexing.pos_bol = bolp; Lexing.pos_cnum = n}
++ in
++ {Location.loc_start = loc_at bp lnum bolp;
++ Location.loc_end = loc_at ep lnuml bolpl;
++ Location.loc_ghost = bp = 0 && ep = 0}
++;;
++
++let loc_none =
++ let loc =
++ {Lexing.pos_fname = "_none_"; Lexing.pos_lnum = 1; Lexing.pos_bol = 0;
++ Lexing.pos_cnum = -1}
++ in
++ {Location.loc_start = loc; Location.loc_end = loc;
++ Location.loc_ghost = true}
++;;
++
++let mkloc loc txt = {Location.txt = txt; Location.loc = loc};;
++let mknoloc txt = mkloc loc_none txt;;
++
++let ocaml_id_or_li_of_string_list loc sl =
++ let mkli s =
++ let rec loop f =
++ function
++ i :: il -> loop (fun s -> Ldot (f i, s)) il
++ | [] -> f s
++ in
++ loop (fun s -> Lident s)
++ in
++ match List.rev sl with
++ [] -> None
++ | s :: sl -> Some (mkli s (List.rev sl))
++;;
++
++let list_map_check f l =
++ let rec loop rev_l =
++ function
++ x :: l ->
++ begin match f x with
++ Some s -> loop (s :: rev_l) l
++ | None -> None
++ end
++ | [] -> Some (List.rev rev_l)
++ in
++ loop [] l
++;;
++
++let ocaml_value_description vn t p =
++ {pval_type = t; pval_prim = p; pval_loc = t.ptyp_loc;
++ pval_name = mkloc t.ptyp_loc vn; pval_attributes = []}
++;;
++
++let ocaml_class_type_field loc ctfd =
++ {pctf_desc = ctfd; pctf_loc = loc; pctf_attributes = []}
++;;
++
++let ocaml_class_field loc cfd =
++ {pcf_desc = cfd; pcf_loc = loc; pcf_attributes = []}
++;;
++
++let ocaml_mktyp loc x =
++ {ptyp_desc = x; ptyp_loc = loc; ptyp_attributes = []}
++;;
++let ocaml_mkpat loc x =
++ {ppat_desc = x; ppat_loc = loc; ppat_attributes = []}
++;;
++let ocaml_mkexp loc x =
++ {pexp_desc = x; pexp_loc = loc; pexp_attributes = []}
++;;
++let ocaml_mkmty loc x =
++ {pmty_desc = x; pmty_loc = loc; pmty_attributes = []}
++;;
++let ocaml_mkmod loc x =
++ {pmod_desc = x; pmod_loc = loc; pmod_attributes = []}
++;;
++let ocaml_mkfield loc (lab, x) fl = (lab, x) :: fl;;
++let ocaml_mkfield_var loc = [];;
++
++let variance_of_bool_bool =
++ function
++ false, true -> Contravariant
++ | true, false -> Covariant
++ | _ -> Invariant
++;;
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
++ match list_map_check (fun s_opt -> s_opt) params with
++ Some params ->
++ let _ =
++ if List.length params <> List.length variance then
++ failwith "internal error: ocaml_type_declaration"
++ in
++ let params =
++ List.map2
++ (fun os va ->
++ ocaml_mktyp loc (Ptyp_var os), variance_of_bool_bool va)
++ params variance
++ in
++ Right
++ {ptype_params = params; ptype_cstrs = cl; ptype_kind = tk;
++ ptype_private = pf; ptype_manifest = tm; ptype_loc = loc;
++ ptype_name = mkloc loc tn; ptype_attributes = []}
++ | None -> Left "no '_' type param in this ocaml version"
++;;
++
++let ocaml_class_type =
++ Some (fun d loc -> {pcty_desc = d; pcty_loc = loc; pcty_attributes = []})
++;;
++
++let ocaml_class_expr =
++ Some (fun d loc -> {pcl_desc = d; pcl_loc = loc; pcl_attributes = []})
++;;
++
++let ocaml_class_structure p cil = {pcstr_self = p; pcstr_fields = cil};;
++
++let ocaml_pmty_ident loc li = Pmty_ident (mkloc loc li);;
++
++let ocaml_pmty_functor sloc s mt1 mt2 =
++ Pmty_functor (mkloc sloc s, Some mt1, mt2)
++;;
++
++let ocaml_pmty_typeof = Some (fun me -> Pmty_typeof me);;
++
++let ocaml_pmty_with mt lcl =
++ let lcl = List.map snd lcl in Pmty_with (mt, lcl)
++;;
++
++let ocaml_ptype_abstract = Ptype_abstract;;
++
++let ocaml_ptype_record ltl priv =
++ Ptype_record
++ (List.map
++ (fun (s, mf, ct, loc) ->
++ {pld_name = mkloc loc s; pld_mutable = mf; pld_type = ct;
++ pld_loc = loc; pld_attributes = []})
++ ltl)
++;;
++
++let ocaml_ptype_variant ctl priv =
++ try
++ let ctl =
++ List.map
++ (fun (c, tl, rto, loc) ->
++ if rto <> None then raise Exit
++ else
++ {pcd_name = mkloc loc c; pcd_args = tl; pcd_res = None;
++ pcd_loc = loc; pcd_attributes = []})
++ ctl
++ in
++ Some (Ptype_variant ctl)
++ with Exit -> None
++;;
++
++let ocaml_ptyp_arrow lab t1 t2 = Ptyp_arrow (lab, t1, t2);;
++
++let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl);;
++
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml =
++ let ml = List.map (fun (s, t) -> s, [], t) ml in Ptyp_object (ml, Closed)
++;;
++
++let ocaml_ptyp_package = Some (fun pt -> Ptyp_package pt);;
++
++let ocaml_ptyp_poly =
++ Some
++ (fun cl t ->
++ match cl with
++ [] -> t.ptyp_desc
++ | _ -> Ptyp_poly (cl, t))
++;;
++
++let ocaml_ptyp_variant catl clos sl_opt =
++ let catl =
++ List.map
++ (function
++ Left (c, a, tl) -> Rtag (c, [], a, tl)
++ | Right t -> Rinherit t)
++ catl
++ in
++ let clos = if clos then Closed else Open in
++ Some (Ptyp_variant (catl, clos, sl_opt))
++;;
++
++let ocaml_package_type li ltl =
++ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
++;;
++
++let ocaml_const_string s = Const_string (s, None);;
++
++let ocaml_const_int32 = Some (fun s -> Const_int32 (Int32.of_string s));;
++
++let ocaml_const_int64 = Some (fun s -> Const_int64 (Int64.of_string s));;
++
++let ocaml_const_nativeint =
++ Some (fun s -> Const_nativeint (Nativeint.of_string s))
++;;
++
++let ocaml_pexp_apply f lel = Pexp_apply (f, lel);;
++
++let ocaml_pexp_assertfalse fname loc =
++ Pexp_assert
++ (ocaml_mkexp loc (Pexp_construct (mkloc loc (Lident "false"), None)))
++;;
++
++let ocaml_pexp_assert fname loc e = Pexp_assert e;;
++
++let ocaml_pexp_constraint e ot1 ot2 =
++ match ot2 with
++ Some t2 -> Pexp_coerce (e, ot1, t2)
++ | None ->
++ match ot1 with
++ Some t1 -> Pexp_constraint (e, t1)
++ | None -> failwith "internal error: ocaml_pexp_constraint"
++;;
++
++let ocaml_pexp_construct loc li po chk_arity =
++ Pexp_construct (mkloc loc li, po)
++;;
++
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po) -> Some (li.txt, li.loc, po, 0)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ {pexp_desc = ocaml_pexp_construct li_loc li (Some a) true; pexp_loc = loc;
++ pexp_attributes = [mkloc loc "ocaml.explicit_arity", PStr []]}
++;;
++
++let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
++
++let ocaml_pexp_for i e1 e2 df e =
++ Pexp_for (ocaml_mkpat loc_none (Ppat_var (mknoloc i)), e1, e2, df, e)
++;;
++
++let ocaml_case (p, wo, loc, e) = {pc_lhs = p; pc_guard = wo; pc_rhs = e};;
++
++let ocaml_pexp_function lab eo pel =
++ match pel with
++ [{pc_lhs = p; pc_guard = None; pc_rhs = e}] -> Pexp_fun (lab, eo, p, e)
++ | pel ->
++ if lab = "" && eo = None then Pexp_function pel
++ else failwith "internal error: bad ast in ocaml_pexp_function"
++;;
++
++let ocaml_pexp_lazy = Some (fun e -> Pexp_lazy e);;
++
++let ocaml_pexp_ident li = Pexp_ident (mknoloc li);;
++
++let ocaml_pexp_letmodule =
++ Some (fun i me e -> Pexp_letmodule (mknoloc i, me, e))
++;;
++
++let ocaml_pexp_new loc li = Pexp_new (mkloc loc li);;
++
++let ocaml_pexp_newtype = Some (fun s e -> Pexp_newtype (s, e));;
++
++let ocaml_pexp_object = Some (fun cs -> Pexp_object cs);;
++
++let ocaml_pexp_open = Some (fun li e -> Pexp_open (Fresh, mknoloc li, e));;
++
++let ocaml_pexp_override sel =
++ let sel = List.map (fun (s, e) -> mknoloc s, e) sel in Pexp_override sel
++;;
++
++let ocaml_pexp_pack : ('a -> 'b -> 'c, 'd) choice option =
++ Some (Right ((fun me -> Pexp_pack me), (fun pt -> Ptyp_package pt)))
++;;
++
++let ocaml_pexp_poly = Some (fun e t -> Pexp_poly (e, t));;
++
++let ocaml_pexp_record lel eo =
++ let lel = List.map (fun (li, loc, e) -> mkloc loc li, e) lel in
++ Pexp_record (lel, eo)
++;;
++
++let ocaml_pexp_setinstvar s e = Pexp_setinstvar (mknoloc s, e);;
++
++let ocaml_pexp_variant =
++ let pexp_variant_pat =
++ function
++ Pexp_variant (lab, eo) -> Some (lab, eo)
++ | _ -> None
++ in
++ let pexp_variant (lab, eo) = Pexp_variant (lab, eo) in
++ Some (pexp_variant_pat, pexp_variant)
++;;
++
++let ocaml_value_binding loc p e =
++ {pvb_pat = p; pvb_expr = e; pvb_loc = loc; pvb_attributes = []}
++;;
++
++let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
++
++let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
++
++let ocaml_ppat_construct loc li po chk_arity =
++ Ppat_construct (mkloc loc li, po)
++;;
++
++let ocaml_ppat_construct_args =
++ function
++ Ppat_construct (li, po) -> Some (li.txt, li.loc, po, 0)
++ | _ -> None
++;;
++
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ {ppat_desc = ocaml_ppat_construct li_loc li (Some a) true; ppat_loc = loc;
++ ppat_attributes = [mkloc loc "ocaml.explicit_arity", PStr []]}
++;;
++
++let ocaml_ppat_lazy = Some (fun p -> Ppat_lazy p);;
++
++let ocaml_ppat_record lpl is_closed =
++ let lpl = List.map (fun (li, loc, p) -> mkloc loc li, p) lpl in
++ Ppat_record (lpl, (if is_closed then Closed else Open))
++;;
++
++let ocaml_ppat_type = Some (fun loc li -> Ppat_type (mkloc loc li));;
++
++let ocaml_ppat_unpack =
++ Some ((fun loc s -> Ppat_unpack (mkloc loc s)), (fun pt -> Ptyp_package pt))
++;;
++
++let ocaml_ppat_var loc s = Ppat_var (mkloc loc s);;
++
++let ocaml_ppat_variant =
++ let ppat_variant_pat =
++ function
++ Ppat_variant (lab, po) -> Some (lab, po)
++ | _ -> None
++ in
++ let ppat_variant (lab, po) = Ppat_variant (lab, po) in
++ Some (ppat_variant_pat, ppat_variant)
++;;
++
++let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
++
++let ocaml_psig_exception loc s ed =
++ Psig_exception
++ {pext_name = mkloc loc s; pext_kind = Pext_decl (ed, None);
++ pext_loc = loc; pext_attributes = []}
++;;
++
++let ocaml_psig_include loc mt =
++ Psig_include {pincl_mod = mt; pincl_loc = loc; pincl_attributes = []}
++;;
++
++let ocaml_psig_module loc s mt =
++ Psig_module
++ {pmd_name = mkloc loc s; pmd_type = mt; pmd_attributes = [];
++ pmd_loc = loc}
++;;
++
++let ocaml_psig_modtype loc s mto =
++ let pmtd =
++ {pmtd_name = mkloc loc s; pmtd_type = mto; pmtd_attributes = [];
++ pmtd_loc = loc}
++ in
++ Psig_modtype pmtd
++;;
++
++let ocaml_psig_open loc li =
++ Psig_open
++ {popen_lid = mknoloc li; popen_override = Fresh; popen_loc = loc;
++ popen_attributes = []}
++;;
++
++let ocaml_psig_recmodule =
++ let f ntl =
++ let ntl =
++ List.map
++ (fun (s, mt) ->
++ {pmd_name = mknoloc s; pmd_type = mt; pmd_attributes = [];
++ pmd_loc = loc_none})
++ ntl
++ in
++ Psig_recmodule ntl
++ in
++ Some f
++;;
++
++let ocaml_psig_type stl =
++ let stl = List.map (fun (s, t) -> t) stl in Psig_type stl
++;;
++
++let ocaml_psig_value s vd = Psig_value vd;;
++
++let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
++
++let ocaml_pstr_eval e = Pstr_eval (e, []);;
++
++let ocaml_pstr_exception loc s ed =
++ Pstr_exception
++ {pext_name = mkloc loc s; pext_kind = Pext_decl (ed, None);
++ pext_loc = loc; pext_attributes = []}
++;;
++
++let ocaml_pstr_exn_rebind =
++ Some
++ (fun loc s li ->
++ Pstr_exception
++ {pext_name = mkloc loc s; pext_kind = Pext_rebind (mkloc loc li);
++ pext_loc = loc; pext_attributes = []})
++;;
++
++let ocaml_pstr_include =
++ Some
++ (fun loc me ->
++ Pstr_include {pincl_mod = me; pincl_loc = loc; pincl_attributes = []})
++;;
++
++let ocaml_pstr_modtype loc s mt =
++ let pmtd =
++ {pmtd_name = mkloc loc s; pmtd_type = Some mt; pmtd_attributes = [];
++ pmtd_loc = loc}
++ in
++ Pstr_modtype pmtd
++;;
++
++let ocaml_pstr_module loc s me =
++ let mb =
++ {pmb_name = mkloc loc s; pmb_expr = me; pmb_attributes = [];
++ pmb_loc = loc}
++ in
++ Pstr_module mb
++;;
++
++let ocaml_pstr_open loc li =
++ Pstr_open
++ {popen_lid = mknoloc li; popen_override = Fresh; popen_loc = loc;
++ popen_attributes = []}
++;;
++
++let ocaml_pstr_primitive s vd = Pstr_primitive vd;;
++
++let ocaml_pstr_recmodule =
++ let f nel =
++ Pstr_recmodule
++ (List.map
++ (fun (s, mt, me) ->
++ {pmb_name = mknoloc s; pmb_expr = me; pmb_attributes = [];
++ pmb_loc = loc_none})
++ nel)
++ in
++ Some f
++;;
++
++let ocaml_pstr_type stl =
++ let stl = List.map (fun (s, t) -> t) stl in Pstr_type stl
++;;
++
++let ocaml_class_infos =
++ Some
++ (fun virt (sl, sloc) name expr loc variance ->
++ let _ =
++ if List.length sl <> List.length variance then
++ failwith "internal error: ocaml_class_infos"
++ in
++ let params =
++ List.map2
++ (fun os va ->
++ ocaml_mktyp loc (Ptyp_var os), variance_of_bool_bool va)
++ sl variance
++ in
++ {pci_virt = virt; pci_params = params; pci_name = mkloc loc name;
++ pci_expr = expr; pci_loc = loc; pci_attributes = []})
++;;
++
++let ocaml_pmod_ident li = Pmod_ident (mknoloc li);;
++
++let ocaml_pmod_functor s mt me = Pmod_functor (mknoloc s, Some mt, me);;
++
++let ocaml_pmod_unpack : ('a -> 'b -> 'c, 'd) choice option =
++ Some (Right ((fun e -> Pmod_unpack e), (fun pt -> Ptyp_package pt)))
++;;
++
++let ocaml_pcf_cstr = Some (fun (t1, t2, loc) -> Pcf_constraint (t1, t2));;
++
++let ocaml_pcf_inher ce pb = Pcf_inherit (Fresh, ce, pb);;
++
++let ocaml_pcf_init = Some (fun e -> Pcf_initializer e);;
++
++let ocaml_pcf_meth (s, pf, ovf, e, loc) =
++ let pf = if pf then Private else Public in
++ let ovf = if ovf then Override else Fresh in
++ Pcf_method (mkloc loc s, pf, Cfk_concrete (ovf, e))
++;;
++
++let ocaml_pcf_val (s, mf, ovf, e, loc) =
++ let mf = if mf then Mutable else Immutable in
++ let ovf = if ovf then Override else Fresh in
++ Pcf_val (mkloc loc s, mf, Cfk_concrete (ovf, e))
++;;
++
++let ocaml_pcf_valvirt =
++ let ocaml_pcf (s, mf, t, loc) =
++ let mf = if mf then Mutable else Immutable in
++ Pcf_val (mkloc loc s, mf, Cfk_virtual t)
++ in
++ Some ocaml_pcf
++;;
++
++let ocaml_pcf_virt (s, pf, t, loc) =
++ Pcf_val (mkloc loc s, Immutable, Cfk_virtual t)
++;;
++
++let ocaml_pcl_apply = Some (fun ce lel -> Pcl_apply (ce, lel));;
++
++let ocaml_pcl_constr = Some (fun li ctl -> Pcl_constr (mknoloc li, ctl));;
++
++let ocaml_pcl_constraint = Some (fun ce ct -> Pcl_constraint (ce, ct));;
++
++let ocaml_pcl_fun = Some (fun lab ceo p ce -> Pcl_fun (lab, ceo, p, ce));;
++
++let ocaml_pcl_let = Some (fun rf pel ce -> Pcl_let (rf, pel, ce));;
++
++let ocaml_pcl_structure = Some (fun cs -> Pcl_structure cs);;
++
++let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_constraint (t1, t2));;
++
++let ocaml_pctf_inher ct = Pctf_inherit ct;;
++
++let ocaml_pctf_meth (s, pf, t, loc) = Pctf_method (s, pf, Concrete, t);;
++
++let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Concrete, t);;
++
++let ocaml_pctf_virt (s, pf, t, loc) = Pctf_val (s, Immutable, Virtual, t);;
++
++let ocaml_pcty_constr = Some (fun li ltl -> Pcty_constr (mknoloc li, ltl));;
++
++let ocaml_pcty_fun = Some (fun lab t ct -> Pcty_arrow (lab, t, ct));;
++
++let ocaml_pcty_signature =
++ let f (t, ctfl) =
++ let cs = {pcsig_self = t; pcsig_fields = ctfl} in Pcty_signature cs
++ in
++ Some f
++;;
++
++let ocaml_pdir_bool = Some (fun b -> Pdir_bool b);;
++
++let ocaml_pwith_modsubst =
++ Some (fun loc me -> Pwith_modsubst (mkloc loc "", mkloc loc me))
++;;
++
++let ocaml_pwith_type loc (i, td) = Pwith_type (mkloc loc i, td);;
++
++let ocaml_pwith_module loc me =
++ Pwith_module (mkloc loc (Lident ""), mkloc loc me)
++;;
++
++let ocaml_pwith_typesubst = Some (fun td -> Pwith_typesubst td);;
++
++let module_prefix_can_be_in_first_record_label_only = true;;
++
++let split_or_patterns_with_bindings = false;;
++
++let has_records_with_with = true;;
++
++(* *)
++
++let jocaml_pstr_def : (_ -> _) option = None;;
++
++let jocaml_pexp_def : (_ -> _ -> _) option = None;;
++
++let jocaml_pexp_par : (_ -> _ -> _) option = None;;
++
++let jocaml_pexp_reply : (_ -> _ -> _ -> _) option = None;;
++
++let jocaml_pexp_spawn : (_ -> _) option = None;;
++
++let arg_rest =
++ function
++ Arg.Rest r -> Some r
++ | _ -> None
++;;
++
++let arg_set_string =
++ function
++ Arg.Set_string r -> Some r
++ | _ -> None
++;;
++
++let arg_set_int =
++ function
++ Arg.Set_int r -> Some r
++ | _ -> None
++;;
++
++let arg_set_float =
++ function
++ Arg.Set_float r -> Some r
++ | _ -> None
++;;
++
++let arg_symbol =
++ function
++ Arg.Symbol (s, f) -> Some (s, f)
++ | _ -> None
++;;
++
++let arg_tuple =
++ function
++ Arg.Tuple t -> Some t
++ | _ -> None
++;;
++
++let arg_bool =
++ function
++ Arg.Bool f -> Some f
++ | _ -> None
++;;
++
++let char_escaped = Char.escaped;;
++
++let hashtbl_mem = Hashtbl.mem;;
++
++let list_rev_append = List.rev_append;;
++
++let list_rev_map = List.rev_map;;
++
++let list_sort = List.sort;;
++
++let pervasives_set_binary_mode_out = Pervasives.set_binary_mode_out;;
++
++let printf_ksprintf = Printf.ksprintf;;
++
++let string_contains = String.contains;;
++
++let string_create = Bytes.create;;
++
++let string_unsafe_set = Bytes.unsafe_set;;
++
++let string_set = Bytes.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/4.03.0.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/4.03.0.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/4.03.0.ml 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/4.03.0.ml 2014-08-01 10:14:54.309065434 +0100
+@@ -0,0 +1,657 @@
++(* camlp5r pa_macro.cmo *)
++(* versdep.ml,v *)
++(* Copyright (c) INRIA 2007-2012 *)
++
++open Parsetree;;
++open Longident;;
++open Asttypes;;
++
++type ('a, 'b) choice =
++ Left of 'a
++ | Right of 'b
++;;
++
++let sys_ocaml_version = Sys.ocaml_version;;
++
++let ocaml_location (fname, lnum, bolp, lnuml, bolpl, bp, ep) =
++ let loc_at n lnum bolp =
++ {Lexing.pos_fname = if lnum = -1 then "" else fname;
++ Lexing.pos_lnum = lnum; Lexing.pos_bol = bolp; Lexing.pos_cnum = n}
++ in
++ {Location.loc_start = loc_at bp lnum bolp;
++ Location.loc_end = loc_at ep lnuml bolpl;
++ Location.loc_ghost = bp = 0 && ep = 0}
++;;
++
++let loc_none =
++ let loc =
++ {Lexing.pos_fname = "_none_"; Lexing.pos_lnum = 1; Lexing.pos_bol = 0;
++ Lexing.pos_cnum = -1}
++ in
++ {Location.loc_start = loc; Location.loc_end = loc;
++ Location.loc_ghost = true}
++;;
++
++let mkloc loc txt = {Location.txt = txt; Location.loc = loc};;
++let mknoloc txt = mkloc loc_none txt;;
++
++let ocaml_id_or_li_of_string_list loc sl =
++ let mkli s =
++ let rec loop f =
++ function
++ i :: il -> loop (fun s -> Ldot (f i, s)) il
++ | [] -> f s
++ in
++ loop (fun s -> Lident s)
++ in
++ match List.rev sl with
++ [] -> None
++ | s :: sl -> Some (mkli s (List.rev sl))
++;;
++
++let list_map_check f l =
++ let rec loop rev_l =
++ function
++ x :: l ->
++ begin match f x with
++ Some s -> loop (s :: rev_l) l
++ | None -> None
++ end
++ | [] -> Some (List.rev rev_l)
++ in
++ loop [] l
++;;
++
++let ocaml_value_description vn t p =
++ {pval_type = t; pval_prim = p; pval_loc = t.ptyp_loc;
++ pval_name = mkloc t.ptyp_loc vn; pval_attributes = []}
++;;
++
++let ocaml_class_type_field loc ctfd =
++ {pctf_desc = ctfd; pctf_loc = loc; pctf_attributes = []}
++;;
++
++let ocaml_class_field loc cfd =
++ {pcf_desc = cfd; pcf_loc = loc; pcf_attributes = []}
++;;
++
++let ocaml_mktyp loc x =
++ {ptyp_desc = x; ptyp_loc = loc; ptyp_attributes = []}
++;;
++let ocaml_mkpat loc x =
++ {ppat_desc = x; ppat_loc = loc; ppat_attributes = []}
++;;
++let ocaml_mkexp loc x =
++ {pexp_desc = x; pexp_loc = loc; pexp_attributes = []}
++;;
++let ocaml_mkmty loc x =
++ {pmty_desc = x; pmty_loc = loc; pmty_attributes = []}
++;;
++let ocaml_mkmod loc x =
++ {pmod_desc = x; pmod_loc = loc; pmod_attributes = []}
++;;
++let ocaml_mkfield loc (lab, x) fl = (lab, x) :: fl;;
++let ocaml_mkfield_var loc = [];;
++
++let variance_of_bool_bool =
++ function
++ false, true -> Contravariant
++ | true, false -> Covariant
++ | _ -> Invariant
++;;
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
++ match list_map_check (fun s_opt -> s_opt) params with
++ Some params ->
++ let _ =
++ if List.length params <> List.length variance then
++ failwith "internal error: ocaml_type_declaration"
++ in
++ let params =
++ List.map2
++ (fun os va ->
++ ocaml_mktyp loc (Ptyp_var os), variance_of_bool_bool va)
++ params variance
++ in
++ Right
++ {ptype_params = params; ptype_cstrs = cl; ptype_kind = tk;
++ ptype_private = pf; ptype_manifest = tm; ptype_loc = loc;
++ ptype_name = mkloc loc tn; ptype_attributes = []}
++ | None -> Left "no '_' type param in this ocaml version"
++;;
++
++let ocaml_class_type =
++ Some (fun d loc -> {pcty_desc = d; pcty_loc = loc; pcty_attributes = []})
++;;
++
++let ocaml_class_expr =
++ Some (fun d loc -> {pcl_desc = d; pcl_loc = loc; pcl_attributes = []})
++;;
++
++let ocaml_class_structure p cil = {pcstr_self = p; pcstr_fields = cil};;
++
++let ocaml_pmty_ident loc li = Pmty_ident (mkloc loc li);;
++
++let ocaml_pmty_functor sloc s mt1 mt2 =
++ Pmty_functor (mkloc sloc s, Some mt1, mt2)
++;;
++
++let ocaml_pmty_typeof = Some (fun me -> Pmty_typeof me);;
++
++let ocaml_pmty_with mt lcl =
++ let lcl = List.map snd lcl in Pmty_with (mt, lcl)
++;;
++
++let ocaml_ptype_abstract = Ptype_abstract;;
++
++let ocaml_ptype_record ltl priv =
++ Ptype_record
++ (List.map
++ (fun (s, mf, ct, loc) ->
++ {pld_name = mkloc loc s; pld_mutable = mf; pld_type = ct;
++ pld_loc = loc; pld_attributes = []})
++ ltl)
++;;
++
++let ocaml_ptype_variant ctl priv =
++ try
++ let ctl =
++ List.map
++ (fun (c, tl, rto, loc) ->
++ if rto <> None then raise Exit
++ else
++ {pcd_name = mkloc loc c; pcd_args = tl; pcd_res = None;
++ pcd_loc = loc; pcd_attributes = []})
++ ctl
++ in
++ Some (Ptype_variant ctl)
++ with Exit -> None
++;;
++
++let ocaml_ptyp_arrow lab t1 t2 = Ptyp_arrow (lab, t1, t2);;
++
++let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl);;
++
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml =
++ let ml = List.map (fun (s, t) -> s, [], t) ml in Ptyp_object (ml, Closed)
++;;
++
++let ocaml_ptyp_package = Some (fun pt -> Ptyp_package pt);;
++
++let ocaml_ptyp_poly =
++ Some
++ (fun cl t ->
++ match cl with
++ [] -> t.ptyp_desc
++ | _ -> Ptyp_poly (cl, t))
++;;
++
++let ocaml_ptyp_variant catl clos sl_opt =
++ let catl =
++ List.map
++ (function
++ Left (c, a, tl) -> Rtag (c, [], a, tl)
++ | Right t -> Rinherit t)
++ catl
++ in
++ let clos = if clos then Closed else Open in
++ Some (Ptyp_variant (catl, clos, sl_opt))
++;;
++
++let ocaml_package_type li ltl =
++ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
++;;
++
++let ocaml_const_string s = Const_string (s, None);;
++
++let ocaml_const_int32 = Some (fun s -> Const_int32 (Int32.of_string s));;
++
++let ocaml_const_int64 = Some (fun s -> Const_int64 (Int64.of_string s));;
++
++let ocaml_const_nativeint =
++ Some (fun s -> Const_nativeint (Nativeint.of_string s))
++;;
++
++let ocaml_pexp_apply f lel = Pexp_apply (f, lel);;
++
++let ocaml_pexp_assertfalse fname loc =
++ Pexp_assert
++ (ocaml_mkexp loc (Pexp_construct (mkloc loc (Lident "false"), None)))
++;;
++
++let ocaml_pexp_assert fname loc e = Pexp_assert e;;
++
++let ocaml_pexp_constraint e ot1 ot2 =
++ match ot2 with
++ Some t2 -> Pexp_coerce (e, ot1, t2)
++ | None ->
++ match ot1 with
++ Some t1 -> Pexp_constraint (e, t1)
++ | None -> failwith "internal error: ocaml_pexp_constraint"
++;;
++
++let ocaml_pexp_construct loc li po chk_arity =
++ Pexp_construct (mkloc loc li, po)
++;;
++
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po) -> Some (li.txt, li.loc, po, 0)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ {pexp_desc = ocaml_pexp_construct li_loc li (Some a) true; pexp_loc = loc;
++ pexp_attributes = [mkloc loc "ocaml.explicit_arity", PStr []]}
++;;
++
++let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
++
++let ocaml_pexp_for i e1 e2 df e =
++ Pexp_for (ocaml_mkpat loc_none (Ppat_var (mknoloc i)), e1, e2, df, e)
++;;
++
++let ocaml_case (p, wo, loc, e) = {pc_lhs = p; pc_guard = wo; pc_rhs = e};;
++
++let ocaml_pexp_function lab eo pel =
++ match pel with
++ [{pc_lhs = p; pc_guard = None; pc_rhs = e}] -> Pexp_fun (lab, eo, p, e)
++ | pel ->
++ if lab = "" && eo = None then Pexp_function pel
++ else failwith "internal error: bad ast in ocaml_pexp_function"
++;;
++
++let ocaml_pexp_lazy = Some (fun e -> Pexp_lazy e);;
++
++let ocaml_pexp_ident li = Pexp_ident (mknoloc li);;
++
++let ocaml_pexp_letmodule =
++ Some (fun i me e -> Pexp_letmodule (mknoloc i, me, e))
++;;
++
++let ocaml_pexp_new loc li = Pexp_new (mkloc loc li);;
++
++let ocaml_pexp_newtype = Some (fun s e -> Pexp_newtype (s, e));;
++
++let ocaml_pexp_object = Some (fun cs -> Pexp_object cs);;
++
++let ocaml_pexp_open = Some (fun li e -> Pexp_open (Fresh, mknoloc li, e));;
++
++let ocaml_pexp_override sel =
++ let sel = List.map (fun (s, e) -> mknoloc s, e) sel in Pexp_override sel
++;;
++
++let ocaml_pexp_pack : ('a -> 'b -> 'c, 'd) choice option =
++ Some (Right ((fun me -> Pexp_pack me), (fun pt -> Ptyp_package pt)))
++;;
++
++let ocaml_pexp_poly = Some (fun e t -> Pexp_poly (e, t));;
++
++let ocaml_pexp_record lel eo =
++ let lel = List.map (fun (li, loc, e) -> mkloc loc li, e) lel in
++ Pexp_record (lel, eo)
++;;
++
++let ocaml_pexp_setinstvar s e = Pexp_setinstvar (mknoloc s, e);;
++
++let ocaml_pexp_variant =
++ let pexp_variant_pat =
++ function
++ Pexp_variant (lab, eo) -> Some (lab, eo)
++ | _ -> None
++ in
++ let pexp_variant (lab, eo) = Pexp_variant (lab, eo) in
++ Some (pexp_variant_pat, pexp_variant)
++;;
++
++let ocaml_value_binding loc p e =
++ {pvb_pat = p; pvb_expr = e; pvb_loc = loc; pvb_attributes = []}
++;;
++
++let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
++
++let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
++
++let ocaml_ppat_construct loc li po chk_arity =
++ Ppat_construct (mkloc loc li, po)
++;;
++
++let ocaml_ppat_construct_args =
++ function
++ Ppat_construct (li, po) -> Some (li.txt, li.loc, po, 0)
++ | _ -> None
++;;
++
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ {ppat_desc = ocaml_ppat_construct li_loc li (Some a) true; ppat_loc = loc;
++ ppat_attributes = [mkloc loc "ocaml.explicit_arity", PStr []]}
++;;
++
++let ocaml_ppat_lazy = Some (fun p -> Ppat_lazy p);;
++
++let ocaml_ppat_record lpl is_closed =
++ let lpl = List.map (fun (li, loc, p) -> mkloc loc li, p) lpl in
++ Ppat_record (lpl, (if is_closed then Closed else Open))
++;;
++
++let ocaml_ppat_type = Some (fun loc li -> Ppat_type (mkloc loc li));;
++
++let ocaml_ppat_unpack =
++ Some ((fun loc s -> Ppat_unpack (mkloc loc s)), (fun pt -> Ptyp_package pt))
++;;
++
++let ocaml_ppat_var loc s = Ppat_var (mkloc loc s);;
++
++let ocaml_ppat_variant =
++ let ppat_variant_pat =
++ function
++ Ppat_variant (lab, po) -> Some (lab, po)
++ | _ -> None
++ in
++ let ppat_variant (lab, po) = Ppat_variant (lab, po) in
++ Some (ppat_variant_pat, ppat_variant)
++;;
++
++let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
++
++let ocaml_psig_exception loc s ed =
++ Psig_exception
++ {pext_name = mkloc loc s; pext_kind = Pext_decl (ed, None);
++ pext_loc = loc; pext_attributes = []}
++;;
++
++let ocaml_psig_include loc mt =
++ Psig_include {pincl_mod = mt; pincl_loc = loc; pincl_attributes = []}
++;;
++
++let ocaml_psig_module loc s mt =
++ Psig_module
++ {pmd_name = mkloc loc s; pmd_type = mt; pmd_attributes = [];
++ pmd_loc = loc}
++;;
++
++let ocaml_psig_modtype loc s mto =
++ let pmtd =
++ {pmtd_name = mkloc loc s; pmtd_type = mto; pmtd_attributes = [];
++ pmtd_loc = loc}
++ in
++ Psig_modtype pmtd
++;;
++
++let ocaml_psig_open loc li =
++ Psig_open
++ {popen_lid = mknoloc li; popen_override = Fresh; popen_loc = loc;
++ popen_attributes = []}
++;;
++
++let ocaml_psig_recmodule =
++ let f ntl =
++ let ntl =
++ List.map
++ (fun (s, mt) ->
++ {pmd_name = mknoloc s; pmd_type = mt; pmd_attributes = [];
++ pmd_loc = loc_none})
++ ntl
++ in
++ Psig_recmodule ntl
++ in
++ Some f
++;;
++
++let ocaml_psig_type stl =
++ let stl = List.map (fun (s, t) -> t) stl in Psig_type stl
++;;
++
++let ocaml_psig_value s vd = Psig_value vd;;
++
++let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
++
++let ocaml_pstr_eval e = Pstr_eval (e, []);;
++
++let ocaml_pstr_exception loc s ed =
++ Pstr_exception
++ {pext_name = mkloc loc s; pext_kind = Pext_decl (ed, None);
++ pext_loc = loc; pext_attributes = []}
++;;
++
++let ocaml_pstr_exn_rebind =
++ Some
++ (fun loc s li ->
++ Pstr_exception
++ {pext_name = mkloc loc s; pext_kind = Pext_rebind (mkloc loc li);
++ pext_loc = loc; pext_attributes = []})
++;;
++
++let ocaml_pstr_include =
++ Some
++ (fun loc me ->
++ Pstr_include {pincl_mod = me; pincl_loc = loc; pincl_attributes = []})
++;;
++
++let ocaml_pstr_modtype loc s mt =
++ let pmtd =
++ {pmtd_name = mkloc loc s; pmtd_type = Some mt; pmtd_attributes = [];
++ pmtd_loc = loc}
++ in
++ Pstr_modtype pmtd
++;;
++
++let ocaml_pstr_module loc s me =
++ let mb =
++ {pmb_name = mkloc loc s; pmb_expr = me; pmb_attributes = [];
++ pmb_loc = loc}
++ in
++ Pstr_module mb
++;;
++
++let ocaml_pstr_open loc li =
++ Pstr_open
++ {popen_lid = mknoloc li; popen_override = Fresh; popen_loc = loc;
++ popen_attributes = []}
++;;
++
++let ocaml_pstr_primitive s vd = Pstr_primitive vd;;
++
++let ocaml_pstr_recmodule =
++ let f nel =
++ Pstr_recmodule
++ (List.map
++ (fun (s, mt, me) ->
++ {pmb_name = mknoloc s; pmb_expr = me; pmb_attributes = [];
++ pmb_loc = loc_none})
++ nel)
++ in
++ Some f
++;;
++
++let ocaml_pstr_type stl =
++ let stl = List.map (fun (s, t) -> t) stl in Pstr_type stl
++;;
++
++let ocaml_class_infos =
++ Some
++ (fun virt (sl, sloc) name expr loc variance ->
++ let _ =
++ if List.length sl <> List.length variance then
++ failwith "internal error: ocaml_class_infos"
++ in
++ let params =
++ List.map2
++ (fun os va ->
++ ocaml_mktyp loc (Ptyp_var os), variance_of_bool_bool va)
++ sl variance
++ in
++ {pci_virt = virt; pci_params = params; pci_name = mkloc loc name;
++ pci_expr = expr; pci_loc = loc; pci_attributes = []})
++;;
++
++let ocaml_pmod_ident li = Pmod_ident (mknoloc li);;
++
++let ocaml_pmod_functor s mt me = Pmod_functor (mknoloc s, Some mt, me);;
++
++let ocaml_pmod_unpack : ('a -> 'b -> 'c, 'd) choice option =
++ Some (Right ((fun e -> Pmod_unpack e), (fun pt -> Ptyp_package pt)))
++;;
++
++let ocaml_pcf_cstr = Some (fun (t1, t2, loc) -> Pcf_constraint (t1, t2));;
++
++let ocaml_pcf_inher ce pb = Pcf_inherit (Fresh, ce, pb);;
++
++let ocaml_pcf_init = Some (fun e -> Pcf_initializer e);;
++
++let ocaml_pcf_meth (s, pf, ovf, e, loc) =
++ let pf = if pf then Private else Public in
++ let ovf = if ovf then Override else Fresh in
++ Pcf_method (mkloc loc s, pf, Cfk_concrete (ovf, e))
++;;
++
++let ocaml_pcf_val (s, mf, ovf, e, loc) =
++ let mf = if mf then Mutable else Immutable in
++ let ovf = if ovf then Override else Fresh in
++ Pcf_val (mkloc loc s, mf, Cfk_concrete (ovf, e))
++;;
++
++let ocaml_pcf_valvirt =
++ let ocaml_pcf (s, mf, t, loc) =
++ let mf = if mf then Mutable else Immutable in
++ Pcf_val (mkloc loc s, mf, Cfk_virtual t)
++ in
++ Some ocaml_pcf
++;;
++
++let ocaml_pcf_virt (s, pf, t, loc) =
++ Pcf_val (mkloc loc s, Immutable, Cfk_virtual t)
++;;
++
++let ocaml_pcl_apply = Some (fun ce lel -> Pcl_apply (ce, lel));;
++
++let ocaml_pcl_constr = Some (fun li ctl -> Pcl_constr (mknoloc li, ctl));;
++
++let ocaml_pcl_constraint = Some (fun ce ct -> Pcl_constraint (ce, ct));;
++
++let ocaml_pcl_fun = Some (fun lab ceo p ce -> Pcl_fun (lab, ceo, p, ce));;
++
++let ocaml_pcl_let = Some (fun rf pel ce -> Pcl_let (rf, pel, ce));;
++
++let ocaml_pcl_structure = Some (fun cs -> Pcl_structure cs);;
++
++let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_constraint (t1, t2));;
++
++let ocaml_pctf_inher ct = Pctf_inherit ct;;
++
++let ocaml_pctf_meth (s, pf, t, loc) = Pctf_method (s, pf, Concrete, t);;
++
++let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Concrete, t);;
++
++let ocaml_pctf_virt (s, pf, t, loc) = Pctf_val (s, Immutable, Virtual, t);;
++
++let ocaml_pcty_constr = Some (fun li ltl -> Pcty_constr (mknoloc li, ltl));;
++
++let ocaml_pcty_fun = Some (fun lab t ct -> Pcty_arrow (lab, t, ct));;
++
++let ocaml_pcty_signature =
++ let f (t, ctfl) =
++ let cs = {pcsig_self = t; pcsig_fields = ctfl} in Pcty_signature cs
++ in
++ Some f
++;;
++
++let ocaml_pdir_bool = Some (fun b -> Pdir_bool b);;
++
++let ocaml_pwith_modsubst =
++ Some (fun loc me -> Pwith_modsubst (mkloc loc "", mkloc loc me))
++;;
++
++let ocaml_pwith_type loc (i, td) = Pwith_type (mkloc loc i, td);;
++
++let ocaml_pwith_module loc me =
++ Pwith_module (mkloc loc (Lident ""), mkloc loc me)
++;;
++
++let ocaml_pwith_typesubst = Some (fun td -> Pwith_typesubst td);;
++
++let module_prefix_can_be_in_first_record_label_only = true;;
++
++let split_or_patterns_with_bindings = false;;
++
++let has_records_with_with = true;;
++
++(* *)
++
++let jocaml_pstr_def : (_ -> _) option = None;;
++
++let jocaml_pexp_def : (_ -> _ -> _) option = None;;
++
++let jocaml_pexp_par : (_ -> _ -> _) option = None;;
++
++let jocaml_pexp_reply : (_ -> _ -> _ -> _) option = None;;
++
++let jocaml_pexp_spawn : (_ -> _) option = None;;
++
++let arg_rest =
++ function
++ Arg.Rest r -> Some r
++ | _ -> None
++;;
++
++let arg_set_string =
++ function
++ Arg.Set_string r -> Some r
++ | _ -> None
++;;
++
++let arg_set_int =
++ function
++ Arg.Set_int r -> Some r
++ | _ -> None
++;;
++
++let arg_set_float =
++ function
++ Arg.Set_float r -> Some r
++ | _ -> None
++;;
++
++let arg_symbol =
++ function
++ Arg.Symbol (s, f) -> Some (s, f)
++ | _ -> None
++;;
++
++let arg_tuple =
++ function
++ Arg.Tuple t -> Some t
++ | _ -> None
++;;
++
++let arg_bool =
++ function
++ Arg.Bool f -> Some f
++ | _ -> None
++;;
++
++let char_escaped = Char.escaped;;
++
++let hashtbl_mem = Hashtbl.mem;;
++
++let list_rev_append = List.rev_append;;
++
++let list_rev_map = List.rev_map;;
++
++let list_sort = List.sort;;
++
++let pervasives_set_binary_mode_out = Pervasives.set_binary_mode_out;;
++
++let printf_ksprintf = Printf.ksprintf;;
++
++let string_contains = String.contains;;
++
++let string_create = Bytes.create;;
++
++let string_unsafe_set = Bytes.unsafe_set;;
++
++let string_set = Bytes.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/jocaml/3.12.0.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/jocaml/3.12.0.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/jocaml/3.12.0.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/jocaml/3.12.0.ml 2014-08-01 10:14:54.310065435 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -47,13 +47,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ Right
+@@ -101,7 +113,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl, ll);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = Some (fun pt -> Ptyp_package pt);;
+
+@@ -122,6 +136,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = Some (fun s -> Const_int32 (Int32.of_string s));;
+
+ let ocaml_const_int64 = Some (fun s -> Const_int64 (Int64.of_string s));;
+@@ -136,14 +152,33 @@
+
+ let ocaml_pexp_assert fname loc e = Pexp_assert e;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function (lab, eo, pel);;
+
+ let ocaml_pexp_lazy = Some (fun e -> Pexp_lazy e);;
+@@ -187,11 +222,13 @@
+ Some (pexp_variant_pat, pexp_variant)
+ ;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -201,6 +238,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = Some (fun p -> Ppat_lazy p);;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -226,13 +268,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule =
+ let f ntl =
+@@ -250,19 +301,21 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind =
+- Some (fun s li -> Pstr_exn_rebind (mknoloc s, mknoloc li))
++ Some (fun loc s li -> Pstr_exn_rebind (mkloc loc s, mkloc loc li))
+ ;;
+
+-let ocaml_pstr_include = Some (fun me -> Pstr_include me);;
++let ocaml_pstr_include = Some (fun loc me -> Pstr_include me);;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -323,6 +376,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Concrete, t, loc);;
+@@ -341,6 +396,8 @@
+ Some (fun loc me -> Pwith_modsubst (mkloc loc me))
+ ;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = Some (fun td -> Pwith_typesubst td);;
+@@ -442,3 +499,9 @@
+ let printf_ksprintf = Printf.ksprintf;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/jocaml/3.12.1.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/jocaml/3.12.1.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/jocaml/3.12.1.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/jocaml/3.12.1.ml 2014-08-01 10:14:54.310065435 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -47,13 +47,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ Right
+@@ -101,7 +113,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl, ll);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = Some (fun pt -> Ptyp_package pt);;
+
+@@ -122,6 +136,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = Some (fun s -> Const_int32 (Int32.of_string s));;
+
+ let ocaml_const_int64 = Some (fun s -> Const_int64 (Int64.of_string s));;
+@@ -136,14 +152,33 @@
+
+ let ocaml_pexp_assert fname loc e = Pexp_assert e;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function (lab, eo, pel);;
+
+ let ocaml_pexp_lazy = Some (fun e -> Pexp_lazy e);;
+@@ -187,11 +222,13 @@
+ Some (pexp_variant_pat, pexp_variant)
+ ;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -201,6 +238,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = Some (fun p -> Ppat_lazy p);;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -226,13 +268,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule =
+ let f ntl =
+@@ -250,19 +301,21 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind =
+- Some (fun s li -> Pstr_exn_rebind (mknoloc s, mknoloc li))
++ Some (fun loc s li -> Pstr_exn_rebind (mkloc loc s, mkloc loc li))
+ ;;
+
+-let ocaml_pstr_include = Some (fun me -> Pstr_include me);;
++let ocaml_pstr_include = Some (fun loc me -> Pstr_include me);;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -323,6 +376,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Concrete, t, loc);;
+@@ -341,6 +396,8 @@
+ Some (fun loc me -> Pwith_modsubst (mkloc loc me))
+ ;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = Some (fun td -> Pwith_typesubst td);;
+@@ -442,3 +499,9 @@
+ let printf_ksprintf = Printf.ksprintf;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/lib/versdep/jocaml/3.13.0.ml camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/jocaml/3.13.0.ml
+--- camlp5-6.11/ocaml_src/lib/versdep/jocaml/3.13.0.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/lib/versdep/jocaml/3.13.0.ml 2014-08-01 10:14:54.310065435 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* versdep.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Parsetree;;
+@@ -47,13 +47,25 @@
+ loop [] l
+ ;;
+
+-let ocaml_value_description t p = {pval_type = t; pval_prim = p};;
++let ocaml_value_description vn t p = {pval_type = t; pval_prim = p};;
+
+ let ocaml_class_type_field loc ctfd = ctfd;;
+
+ let ocaml_class_field loc cfd = cfd;;
+
+-let ocaml_type_declaration params cl tk pf tm loc variance =
++let ocaml_mktyp loc x = {ptyp_desc = x; ptyp_loc = loc};;
++let ocaml_mkpat loc x = {ppat_desc = x; ppat_loc = loc};;
++let ocaml_mkexp loc x = {pexp_desc = x; pexp_loc = loc};;
++let ocaml_mkmty loc x = {pmty_desc = x; pmty_loc = loc};;
++let ocaml_mkmod loc x = {pmod_desc = x; pmod_loc = loc};;
++let ocaml_mkfield loc (lab, x) fl =
++ {pfield_desc = Pfield (lab, x); pfield_loc = loc} :: fl
++;;
++let ocaml_mkfield_var loc = [{pfield_desc = Pfield_var; pfield_loc = loc}];;
++
++(* *)
++
++let ocaml_type_declaration tn params cl tk pf tm loc variance =
+ match list_map_check (fun s_opt -> s_opt) params with
+ Some params ->
+ Right
+@@ -101,7 +113,9 @@
+
+ let ocaml_ptyp_class li tl ll = Ptyp_class (mknoloc li, tl, ll);;
+
+-let ocaml_ptyp_constr li tl = Ptyp_constr (mknoloc li, tl);;
++let ocaml_ptyp_constr loc li tl = Ptyp_constr (mkloc loc li, tl);;
++
++let ocaml_ptyp_object ml = Ptyp_object ml;;
+
+ let ocaml_ptyp_package = Some (fun pt -> Ptyp_package pt);;
+
+@@ -122,6 +136,8 @@
+ mknoloc li, List.map (fun (li, t) -> mkloc t.ptyp_loc li, t) ltl
+ ;;
+
++let ocaml_const_string s = Const_string s;;
++
+ let ocaml_const_int32 = Some (fun s -> Const_int32 (Int32.of_string s));;
+
+ let ocaml_const_int64 = Some (fun s -> Const_int64 (Int64.of_string s));;
+@@ -136,14 +152,33 @@
+
+ let ocaml_pexp_assert fname loc e = Pexp_assert e;;
+
++let ocaml_pexp_constraint e ot1 ot2 = Pexp_constraint (e, ot1, ot2);;
++
+ let ocaml_pexp_construct loc li po chk_arity =
+ Pexp_construct (mkloc loc li, po, chk_arity)
+ ;;
+
++let ocaml_pexp_construct_args =
++ function
++ Pexp_construct (li, po, chk_arity) -> Some (li, 0, po, chk_arity)
++ | _ -> None
++;;
++
++let mkexp_ocaml_pexp_construct_arity loc li_loc li al =
++ let a = ocaml_mkexp loc (Pexp_tuple al) in
++ ocaml_mkexp loc (ocaml_pexp_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_pexp_field loc e li = Pexp_field (e, mkloc loc li);;
+
+ let ocaml_pexp_for i e1 e2 df e = Pexp_for (mknoloc i, e1, e2, df, e);;
+
++let ocaml_case (p, wo, loc, e) =
++ match wo with
++ Some w -> p, ocaml_mkexp loc (Pexp_when (w, e))
++ | None -> p, e
++;;
++
+ let ocaml_pexp_function lab eo pel = Pexp_function (lab, eo, pel);;
+
+ let ocaml_pexp_lazy = Some (fun e -> Pexp_lazy e);;
+@@ -189,11 +224,13 @@
+ Some (pexp_variant_pat, pexp_variant)
+ ;;
+
++let ocaml_value_binding loc p e = p, e;;
++
+ let ocaml_ppat_alias p i iloc = Ppat_alias (p, mkloc iloc i);;
+
+ let ocaml_ppat_array = Some (fun pl -> Ppat_array pl);;
+
+-let ocaml_ppat_construct li li_loc po chk_arity =
++let ocaml_ppat_construct loc li po chk_arity =
+ Ppat_construct (li, po, chk_arity)
+ ;;
+
+@@ -203,6 +240,11 @@
+ | _ -> None
+ ;;
+
++let mkpat_ocaml_ppat_construct_arity loc li_loc li al =
++ let a = ocaml_mkpat loc (Ppat_tuple al) in
++ ocaml_mkpat loc (ocaml_ppat_construct li_loc li (Some a) true)
++;;
++
+ let ocaml_ppat_lazy = Some (fun p -> Ppat_lazy p);;
+
+ let ocaml_ppat_record lpl is_closed =
+@@ -228,13 +270,22 @@
+
+ let ocaml_psig_class_type = Some (fun ctl -> Psig_class_type ctl);;
+
+-let ocaml_psig_exception s ed = Psig_exception (mknoloc s, ed);;
++let ocaml_psig_exception loc s ed = Psig_exception (mkloc loc s, ed);;
+
+-let ocaml_psig_module s mt = Psig_module (mknoloc s, mt);;
++let ocaml_psig_include loc mt = Psig_include mt;;
+
+-let ocaml_psig_modtype s mtd = Psig_modtype (mknoloc s, mtd);;
++let ocaml_psig_module loc s mt = Psig_module (mknoloc s, mt);;
++
++let ocaml_psig_modtype loc s mto =
++ let mtd =
++ match mto with
++ None -> Pmodtype_abstract
++ | Some t -> Pmodtype_manifest t
++ in
++ Psig_modtype (mknoloc s, mtd)
++;;
+
+-let ocaml_psig_open li = Psig_open (mknoloc li);;
++let ocaml_psig_open loc li = Psig_open (mkloc loc li);;
+
+ let ocaml_psig_recmodule =
+ let f ntl =
+@@ -252,19 +303,21 @@
+
+ let ocaml_pstr_class_type = Some (fun ctl -> Pstr_class_type ctl);;
+
+-let ocaml_pstr_exception s ed = Pstr_exception (mknoloc s, ed);;
++let ocaml_pstr_eval e = Pstr_eval e;;
++
++let ocaml_pstr_exception loc s ed = Pstr_exception (mkloc loc s, ed);;
+
+ let ocaml_pstr_exn_rebind =
+- Some (fun s li -> Pstr_exn_rebind (mknoloc s, mknoloc li))
++ Some (fun loc s li -> Pstr_exn_rebind (mkloc loc s, mkloc loc li))
+ ;;
+
+-let ocaml_pstr_include = Some (fun me -> Pstr_include me);;
++let ocaml_pstr_include = Some (fun loc me -> Pstr_include me);;
+
+-let ocaml_pstr_modtype s mt = Pstr_modtype (mknoloc s, mt);;
++let ocaml_pstr_modtype loc s mt = Pstr_modtype (mkloc loc s, mt);;
+
+-let ocaml_pstr_module s me = Pstr_module (mknoloc s, me);;
++let ocaml_pstr_module loc s me = Pstr_module (mkloc loc s, me);;
+
+-let ocaml_pstr_open li = Pstr_open (mknoloc li);;
++let ocaml_pstr_open loc li = Pstr_open (mknoloc li);;
+
+ let ocaml_pstr_primitive s vd = Pstr_primitive (mknoloc s, vd);;
+
+@@ -327,6 +380,8 @@
+
+ let ocaml_pctf_cstr = Some (fun (t1, t2, loc) -> Pctf_cstr (t1, t2, loc));;
+
++let ocaml_pctf_inher ct = Pctf_inher ct;;
++
+ let ocaml_pctf_meth (s, pf, t, loc) = Pctf_meth (s, pf, t, loc);;
+
+ let ocaml_pctf_val (s, mf, t, loc) = Pctf_val (s, mf, Concrete, t, loc);;
+@@ -345,6 +400,8 @@
+ Some (fun loc me -> Pwith_modsubst (mkloc loc me))
+ ;;
+
++let ocaml_pwith_type loc (i, td) = Pwith_type td;;
++
+ let ocaml_pwith_module loc me = Pwith_module (mkloc loc me);;
+
+ let ocaml_pwith_typesubst = Some (fun td -> Pwith_typesubst td);;
+@@ -446,3 +503,9 @@
+ let printf_ksprintf = Printf.ksprintf;;
+
+ let string_contains = String.contains;;
++
++let string_create = String.create;;
++
++let string_unsafe_set = String.unsafe_set;;
++
++let string_set = String.set;;
+diff -urN camlp5-6.11/ocaml_src/main/argl.ml camlp5-6.12-63a8c30f/ocaml_src/main/argl.ml
+--- camlp5-6.11/ocaml_src/main/argl.ml 2012-06-02 14:23:40.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/main/argl.ml 2014-08-01 10:14:54.310065435 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* argl.ml,v *)
+
+ open Printf;;
+ open Versdep;;
+diff -urN camlp5-6.11/ocaml_src/main/argl.mli camlp5-6.12-63a8c30f/ocaml_src/main/argl.mli
+--- camlp5-6.11/ocaml_src/main/argl.mli 2012-06-02 14:23:40.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/main/argl.mli 2014-08-01 10:14:54.310065435 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* argl.mli,v *)
+
+ val usage :
+ (string * Arg.spec * string) list -> (string * Arg.spec * string) list ->
+diff -urN camlp5-6.11/ocaml_src/main/ast2pt.ml camlp5-6.12-63a8c30f/ocaml_src/main/ast2pt.ml
+--- camlp5-6.11/ocaml_src/main/ast2pt.ml 2013-03-19 15:25:22.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/main/ast2pt.ml 2014-08-01 10:14:54.311065436 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* ast2pt.ml,v *)
+
+ (* #load "q_MLast.cmo" *)
+
+@@ -64,14 +64,16 @@
+ ocaml_location (!glob_fname, lnum, bolp, lnuml, bolpl, bp, ep)
+ ;;
+
+-let mktyp loc d = {ptyp_desc = d; ptyp_loc = mkloc loc};;
+-let mkpat loc d = {ppat_desc = d; ppat_loc = mkloc loc};;
+-let mkexp loc d = {pexp_desc = d; pexp_loc = mkloc loc};;
+-let mkmty loc d = {pmty_desc = d; pmty_loc = mkloc loc};;
++let mktyp loc d = ocaml_mktyp (mkloc loc) d;;
++let mkpat loc d = ocaml_mkpat (mkloc loc) d;;
++let mkexp loc d = ocaml_mkexp (mkloc loc) d;;
++let mkmty loc d = ocaml_mkmty (mkloc loc) d;;
+ let mksig loc d = {psig_desc = d; psig_loc = mkloc loc};;
+-let mkmod loc d = {pmod_desc = d; pmod_loc = mkloc loc};;
++let mkmod loc d = ocaml_mkmod (mkloc loc) d;;
+ let mkstr loc d = {pstr_desc = d; pstr_loc = mkloc loc};;
+-let mkfield loc d = {pfield_desc = d; pfield_loc = mkloc loc};;
++let mkfield loc d fl = ocaml_mkfield (mkloc loc) d fl;;
++let mkfield_var loc = ocaml_mkfield_var (mkloc loc);;
++
+ let mkcty loc d =
+ match ocaml_class_type with
+ Some class_type -> class_type d (mkloc loc)
+@@ -89,9 +91,10 @@
+ let ghpat = mkpat loc in
+ let ghexp = mkexp loc in
+ let void_pat =
+- ghpat (ocaml_ppat_construct (Lident "()") (mkloc loc) None false)
++ ghpat (ocaml_ppat_construct (mkloc loc) (Lident "()") None false)
+ in
+- let f = ghexp (ocaml_pexp_function "" None [void_pat, e]) in
++ let pwe = ocaml_case (void_pat, None, mkloc loc, e) in
++ let f = ghexp (ocaml_pexp_function "" None [pwe]) in
+ let delayed = Ldot (Lident "Lazy", "Delayed") in
+ let cloc = mkloc loc in
+ let df = ghexp (ocaml_pexp_construct cloc delayed (Some f) false) in
+@@ -106,7 +109,7 @@
+ let rec loop i j =
+ if i = String.length s then String.sub s 0 j
+ else if s.[i] = '_' then loop (i + 1) j
+- else begin s.[j] <- s.[i]; loop (i + 1) (j + 1) end
++ else begin string_set s j s.[i]; loop (i + 1) (j + 1) end
+ in
+ loop 0 0
+ | None -> s
+@@ -255,7 +258,7 @@
+ TyAcc (loc, _, _) as f ->
+ let (is_cls, li) = ctyp_long_id f in
+ if is_cls then mktyp loc (ocaml_ptyp_class li [] [])
+- else mktyp loc (ocaml_ptyp_constr li [])
++ else mktyp loc (ocaml_ptyp_constr (mkloc loc) li [])
+ | TyAli (loc, t1, t2) ->
+ let (t, i) =
+ match t1, t2 with
+@@ -269,7 +272,7 @@
+ let (f, al) = ctyp_fa [] f in
+ let (is_cls, li) = ctyp_long_id f in
+ if is_cls then mktyp loc (ocaml_ptyp_class li (List.map ctyp al) [])
+- else mktyp loc (ocaml_ptyp_constr li (List.map ctyp al))
++ else mktyp loc (ocaml_ptyp_constr (mkloc loc) li (List.map ctyp al))
+ | TyArr (loc, TyLab (loc1, lab, t1), t2) ->
+ mktyp loc (ocaml_ptyp_arrow (uv lab) (ctyp t1) (ctyp t2))
+ | TyArr (loc, TyOlb (loc1, lab, t1), t2) ->
+@@ -278,11 +281,13 @@
+ in
+ mktyp loc (ocaml_ptyp_arrow ("?" ^ uv lab) (ctyp t1) (ctyp t2))
+ | TyArr (loc, t1, t2) -> mktyp loc (ocaml_ptyp_arrow "" (ctyp t1) (ctyp t2))
+- | TyObj (loc, fl, v) -> mktyp loc (Ptyp_object (meth_list loc (uv fl) v))
++ | TyObj (loc, fl, v) ->
++ mktyp loc (ocaml_ptyp_object (meth_list loc (uv fl) v))
+ | TyCls (loc, id) ->
+ mktyp loc (ocaml_ptyp_class (long_id_of_string_list loc (uv id)) [] [])
+ | TyLab (loc, _, _) -> error loc "labeled type not allowed here"
+- | TyLid (loc, s) -> mktyp loc (ocaml_ptyp_constr (Lident (uv s)) [])
++ | TyLid (loc, s) ->
++ mktyp loc (ocaml_ptyp_constr (mkloc loc) (Lident (uv s)) [])
+ | TyMan (loc, _, _, _) -> error loc "type manifest not allowed here"
+ | TyOlb (loc, lab, _) -> error loc "labeled type not allowed here"
+ | TyPck (loc, mt) ->
+@@ -302,7 +307,8 @@
+ | TyRec (loc, _) -> error loc "record type not allowed here"
+ | TySum (loc, _) -> error loc "sum type not allowed here"
+ | TyTup (loc, tl) -> mktyp loc (Ptyp_tuple (List.map ctyp (uv tl)))
+- | TyUid (loc, s) -> mktyp loc (ocaml_ptyp_constr (Lident (uv s)) [])
++ | TyUid (loc, s) ->
++ mktyp loc (ocaml_ptyp_constr (mkloc loc) (Lident (uv s)) [])
+ | TyVrn (loc, catl, ool) ->
+ let catl =
+ List.map
+@@ -326,9 +332,8 @@
+ | TyXtr (loc, _, _) -> error loc "bad ast TyXtr"
+ and meth_list loc fl v =
+ match fl with
+- [] -> if uv v then [mkfield loc Pfield_var] else []
+- | (lab, t) :: fl ->
+- mkfield loc (Pfield (lab, add_polytype t)) :: meth_list loc fl v
++ [] -> if uv v then mkfield_var loc else []
++ | (lab, t) :: fl -> mkfield loc (lab, add_polytype t) (meth_list loc fl v)
+ and add_polytype t =
+ match ocaml_ptyp_poly with
+ Some ptyp_poly ->
+@@ -379,11 +384,11 @@
+ | None -> false, false
+ ;;
+
+-let mktype loc tl cl tk pf tm =
++let mktype loc tn tl cl tk pf tm =
+ let (params, var_list) = List.split tl in
+ let variance = List.map variance_of_var var_list in
+ let params = List.map uv params in
+- match ocaml_type_declaration params cl tk pf tm (mkloc loc) variance with
++ match ocaml_type_declaration tn params cl tk pf tm (mkloc loc) variance with
+ Right td -> td
+ | Left msg -> error loc msg
+ ;;
+@@ -421,17 +426,18 @@
+ | None -> error loc "no generalized data types in this ocaml version"
+ ;;
+
+-let type_decl tl priv cl =
++let type_decl tn tl priv cl =
+ function
+ TyMan (loc, t, pf, MLast.TyRec (_, ltl)) ->
+ let priv = if uv pf then Private else Public in
+- mktype loc tl cl (mktrecord ltl (uv pf)) priv (Some (ctyp t))
++ mktype loc tn tl cl (mktrecord ltl (uv pf)) priv (Some (ctyp t))
+ | TyMan (loc, t, pf, MLast.TySum (_, ctl)) ->
+ let priv = if uv pf then Private else Public in
+- mktype loc tl cl (mktvariant loc ctl (uv pf)) priv (Some (ctyp t))
+- | TyRec (loc, ltl) -> mktype loc tl cl (mktrecord (uv ltl) false) priv None
++ mktype loc tn tl cl (mktvariant loc ctl (uv pf)) priv (Some (ctyp t))
++ | TyRec (loc, ltl) ->
++ mktype loc tn tl cl (mktrecord (uv ltl) false) priv None
+ | TySum (loc, ctl) ->
+- mktype loc tl cl (mktvariant loc (uv ctl) false) priv None
++ mktype loc tn tl cl (mktvariant loc (uv ctl) false) priv None
+ | t ->
+ let m =
+ match t with
+@@ -440,10 +446,10 @@
+ else None
+ | _ -> Some (ctyp t)
+ in
+- mktype (loc_of_ctyp t) tl cl Ptype_abstract priv m
++ mktype (loc_of_ctyp t) tn tl cl Ptype_abstract priv m
+ ;;
+
+-let mkvalue_desc t p = ocaml_value_description (ctyp t) p;;
++let mkvalue_desc vn t p = ocaml_value_description vn (ctyp t) p;;
+
+ let option f =
+ function
+@@ -469,14 +475,14 @@
+ | t -> error (loc_of_module_expr t) "bad module expr long ident"
+ ;;
+
+-let type_decl_of_with_type loc tpl pf ct =
++let type_decl_of_with_type loc tn tpl pf ct =
+ let (params, var_list) = List.split (uv tpl) in
+ let variance = List.map variance_of_var var_list in
+ let params = List.map uv params in
+ let ct = Some (ctyp ct) in
+ let tk = if pf then ocaml_ptype_abstract else Ptype_abstract in
+ let pf = if pf then Private else Public in
+- ocaml_type_declaration params [] tk pf ct (mkloc loc) variance
++ ocaml_type_declaration tn params [] tk pf ct (mkloc loc) variance
+ ;;
+
+ let mkwithc =
+@@ -492,14 +498,15 @@
+ | None -> error loc "no with module := in this ocaml version"
+ end
+ | WcTyp (loc, id, tpl, pf, ct) ->
+- begin match type_decl_of_with_type loc tpl (uv pf) ct with
+- Right td -> long_id_of_string_list loc (uv id), Pwith_type td
++ let li = long_id_of_string_list loc (uv id) in
++ begin match type_decl_of_with_type loc "" tpl (uv pf) ct with
++ Right td -> li, ocaml_pwith_type (mkloc loc) (li, td)
+ | Left msg -> error loc msg
+ end
+ | WcTys (loc, id, tpl, t) ->
+ match ocaml_pwith_typesubst with
+ Some pwith_typesubst ->
+- begin match type_decl_of_with_type loc tpl false t with
++ begin match type_decl_of_with_type loc "" tpl false t with
+ Right td ->
+ let li = long_id_of_string_list loc (uv id) in
+ li, pwith_typesubst td
+@@ -550,7 +557,7 @@
+ MLast.PaUid (loc, i), il ->
+ begin match p2 with
+ MLast.PaUid (_, s) ->
+- ocaml_ppat_construct (mkli (conv_con s) (i :: il)) (mkloc loc)
++ ocaml_ppat_construct (mkloc loc) (mkli (conv_con s) (i :: il))
+ None (not !(Prtools.no_constructors_arity))
+ | _ -> error (loc_of_patt p2) "bad access pattern"
+ end
+@@ -579,10 +586,8 @@
+ [a] -> a
+ | _ -> mkpat loc (Ppat_tuple al)
+ in
+- mkpat loc (ocaml_ppat_construct li li_loc (Some a) false)
+- else
+- let a = mkpat loc (Ppat_tuple al) in
+- mkpat loc (ocaml_ppat_construct li li_loc (Some a) true)
++ mkpat loc (ocaml_ppat_construct li_loc li (Some a) false)
++ else mkpat_ocaml_ppat_construct_arity (mkloc loc) li_loc li al
+ | Some _ | None ->
+ match ocaml_ppat_variant with
+ Some (ppat_variant_pat, ppat_variant) ->
+@@ -642,7 +647,8 @@
+ mkpat loc (ocaml_ppat_record (List.map mklabpat lpl) is_closed)
+ | PaStr (loc, s) ->
+ mkpat loc
+- (Ppat_constant (Const_string (string_of_string_token loc (uv s))))
++ (Ppat_constant
++ (ocaml_const_string (string_of_string_token loc (uv s))))
+ | PaTup (loc, pl) -> mkpat loc (Ppat_tuple (List.map patt (uv pl)))
+ | PaTyc (loc, p, t) -> mkpat loc (Ppat_constraint (patt p, ctyp t))
+ | PaTyp (loc, sl) ->
+@@ -655,7 +661,7 @@
+ | PaUid (loc, s) ->
+ let ca = not !(Prtools.no_constructors_arity) in
+ mkpat loc
+- (ocaml_ppat_construct (Lident (conv_con (uv s))) (mkloc loc) None ca)
++ (ocaml_ppat_construct (mkloc loc) (Lident (conv_con (uv s))) None ca)
+ | PaUnp (loc, s, mto) ->
+ begin match ocaml_ppat_unpack with
+ Some (ppat_unpack, ptyp_package) ->
+@@ -947,8 +953,8 @@
+ | _ -> f
+ in
+ let al = List.rev (List.fold_left label_expr [] al) in
+- begin match (expr f).pexp_desc with
+- Pexp_construct (li, None, _) ->
++ begin match ocaml_pexp_construct_args (expr f).pexp_desc with
++ Some (li, li_loc, None, _) ->
+ let al = List.map snd al in
+ if !(Prtools.no_constructors_arity) then
+ let a =
+@@ -956,11 +962,10 @@
+ [a] -> a
+ | _ -> mkexp loc (Pexp_tuple al)
+ in
+- mkexp loc (Pexp_construct (li, Some a, false))
+- else
+- let a = mkexp loc (Pexp_tuple al) in
+- mkexp loc (Pexp_construct (li, Some a, true))
+- | e ->
++ mkexp loc (ocaml_pexp_construct li_loc li (Some a) false)
++ else mkexp_ocaml_pexp_construct_arity (mkloc loc) li_loc li al
++ | Some _ | None ->
++ let e = (expr f).pexp_desc in
+ match ocaml_pexp_variant with
+ Some (pexp_variant_pat, pexp_variant) ->
+ begin match pexp_variant_pat e with
+@@ -1024,7 +1029,8 @@
+ | ExChr (loc, s) ->
+ mkexp loc (Pexp_constant (Const_char (char_of_char_token loc (uv s))))
+ | ExCoe (loc, e, t1, t2) ->
+- mkexp loc (Pexp_constraint (expr e, option ctyp t1, Some (ctyp t2)))
++ mkexp loc
++ (ocaml_pexp_constraint (expr e) (option ctyp t1) (Some (ctyp t2)))
+ | ExFlo (loc, s) -> mkexp loc (Pexp_constant (Const_float (uv s)))
+ | ExFor (loc, i, e1, e2, df, el) ->
+ let e3 = MLast.ExSeq (loc, uv el) in
+@@ -1033,16 +1039,17 @@
+ | ExFun (loc, pel) ->
+ begin match uv pel with
+ [PaLab (ploc, lppo), w, e] ->
+- List.fold_right
+- (fun (p, po) e ->
+- let lab = label_of_patt p in
+- let p =
+- match uv po with
+- Some p -> p
+- | None -> p
+- in
+- mkexp loc (ocaml_pexp_function lab None [patt p, e]))
+- (uv lppo) (when_expr e (uv w))
++ begin match uv lppo with
++ [p, po] ->
++ let lab = label_of_patt p in
++ let p =
++ match uv po with
++ Some p -> p
++ | None -> p
++ in
++ mkexp loc (ocaml_pexp_function lab None [mkpwe (p, w, e)])
++ | _ -> error loc "bad AST"
++ end
+ | [PaNty (loc, s), w, e] ->
+ begin match ocaml_pexp_newtype with
+ Some newtype ->
+@@ -1061,7 +1068,7 @@
+ in
+ mkexp loc
+ (ocaml_pexp_function ("?" ^ lab) (option expr (uv eo))
+- [patt p, when_expr e (uv w)])
++ [mkpwe (p, w, e)])
+ | pel ->
+ let pel =
+ if split_or_patterns_with_bindings then
+@@ -1141,8 +1148,8 @@
+ match mto with
+ Some mt ->
+ let pt = package_of_module_type loc mt in
+- Pexp_constraint
+- (mkexp loc e, Some (mktyp loc (ptyp_package pt)), None)
++ ocaml_pexp_constraint (mkexp loc e)
++ (Some (mktyp loc (ptyp_package pt))) None
+ | None -> e
+ in
+ mkexp loc e
+@@ -1211,12 +1218,13 @@
+ ["", expr e1; "", expr e2])
+ | ExStr (loc, s) ->
+ mkexp loc
+- (Pexp_constant (Const_string (string_of_string_token loc (uv s))))
++ (Pexp_constant
++ (ocaml_const_string (string_of_string_token loc (uv s))))
+ | ExTry (loc, e, pel) ->
+ mkexp loc (Pexp_try (expr e, List.map mkpwe (uv pel)))
+ | ExTup (loc, el) -> mkexp loc (Pexp_tuple (List.map expr (uv el)))
+ | ExTyc (loc, e, t) ->
+- mkexp loc (Pexp_constraint (expr e, Some (ctyp t), None))
++ mkexp loc (ocaml_pexp_constraint (expr e) (Some (ctyp t)) None)
+ | ExUid (loc, s) ->
+ let ca = not !(Prtools.no_constructors_arity) in
+ let cloc = mkloc loc in
+@@ -1270,7 +1278,7 @@
+ Some p -> patt p
+ | None ->
+ mkpat loc
+- (ocaml_ppat_construct (Lident "()") (mkloc loc) None
++ (ocaml_ppat_construct (mkloc loc) (Lident "()") None
+ false)
+ in
+ mkloc locp, (mkloc loc, uv s), p)
+@@ -1281,6 +1289,7 @@
+ in
+ mkloc jc.jcLoc, jcval
+ and mkpe (p, e) =
++ let loc = Ploc.encl (loc_of_patt p) (loc_of_expr e) in
+ let (p, e) =
+ match e with
+ ExTyc (loc, e, (TyPol (_, _, _) as t)) -> PaTyc (loc, p, t), e
+@@ -1293,7 +1302,7 @@
+ expand_gadt_type loc p loc1 nt ct e
+ | p -> p, e
+ in
+- patt p, expr e
++ ocaml_value_binding (mkloc loc) (patt p) (expr e)
+ and expand_gadt_type loc p loc1 nt ct e =
+ let nt = uv nt in
+ let e = MLast.ExTyc (loc, e, ct) in
+@@ -1304,11 +1313,8 @@
+ let ct = varify_constructors nt ct in
+ let tp = List.map (fun s -> "&" ^ s) nt in
+ let ct = MLast.TyPol (loc, tp, ct) in MLast.PaTyc (loc, p, ct), e
+-and mkpwe (p, w, e) = patt p, when_expr e (uv w)
+-and when_expr e =
+- function
+- Some w -> mkexp (loc_of_expr e) (Pexp_when (expr w, expr e))
+- | None -> expr e
++and mkpwe (p, w, e) =
++ ocaml_case (patt p, option expr (uv w), mkloc (loc_of_expr e), expr e)
+ and mklabexp (lab, e) =
+ patt_label_long_id lab, mkloc (loc_of_patt lab), expr e
+ and mkideexp (ide, e) = ide, expr e
+@@ -1321,7 +1327,8 @@
+ ctyp t1, ctyp t2, mkloc loc)
+ (uv td.tdCon)
+ in
+- uv (snd (uv td.tdNam)), type_decl (uv td.tdPrm) priv cl td.tdDef
++ let tn = uv (snd (uv td.tdNam)) in
++ tn, type_decl tn (uv td.tdPrm) priv cl td.tdDef
+ and module_type =
+ function
+ MtAcc (loc, _, _) as f ->
+@@ -1360,15 +1367,21 @@
+ | SgDcl (loc, sl) -> List.fold_right sig_item (uv sl) l
+ | SgDir (loc, _, _) -> l
+ | SgExc (loc, n, tl) ->
+- mksig loc (ocaml_psig_exception (uv n) (List.map ctyp (uv tl))) :: l
++ mksig loc
++ (ocaml_psig_exception (mkloc loc) (uv n) (List.map ctyp (uv tl))) ::
++ l
+ | SgExt (loc, n, t, p) ->
+- mksig loc (ocaml_psig_value (uv n) (mkvalue_desc t (uv p))) :: l
+- | SgInc (loc, mt) -> mksig loc (Psig_include (module_type mt)) :: l
++ let vn = uv n in
++ mksig loc (ocaml_psig_value vn (mkvalue_desc vn t (uv p))) :: l
++ | SgInc (loc, mt) ->
++ mksig loc (ocaml_psig_include (mkloc loc) (module_type mt)) :: l
+ | SgMod (loc, rf, ntl) ->
+ if not (uv rf) then
+ List.fold_right
+ (fun (n, mt) l ->
+- mksig loc (ocaml_psig_module (uv n) (module_type mt)) :: l)
++ mksig loc
++ (ocaml_psig_module (mkloc loc) (uv n) (module_type mt)) ::
++ l)
+ (uv ntl) l
+ else
+ begin match ocaml_psig_recmodule with
+@@ -1380,21 +1393,24 @@
+ | None -> error loc "no recursive module in this ocaml version"
+ end
+ | SgMty (loc, n, mt) ->
+- let si =
++ let mto =
+ match mt with
+- MtQuo (_, _) -> Pmodtype_abstract
+- | _ -> Pmodtype_manifest (module_type mt)
++ MtQuo (_, _) -> None
++ | _ -> Some (module_type mt)
+ in
+- mksig loc (ocaml_psig_modtype (uv n) si) :: l
++ mksig loc (ocaml_psig_modtype (mkloc loc) (uv n) mto) :: l
+ | SgOpn (loc, id) ->
+- mksig loc (ocaml_psig_open (long_id_of_string_list loc (uv id))) :: l
++ mksig loc
++ (ocaml_psig_open (mkloc loc) (long_id_of_string_list loc (uv id))) ::
++ l
+ | SgTyp (loc, tdl) ->
+ mksig loc (ocaml_psig_type (List.map mktype_decl (uv tdl))) :: l
+ | SgUse (loc, fn, sl) ->
+ Ploc.call_with glob_fname (uv fn)
+ (fun () -> List.fold_right (fun (si, _) -> sig_item si) (uv sl) l) ()
+ | SgVal (loc, n, t) ->
+- mksig loc (ocaml_psig_value (uv n) (mkvalue_desc t [])) :: l
++ let vn = uv n in
++ mksig loc (ocaml_psig_value vn (mkvalue_desc vn t [])) :: l
+ | SgXtr (loc, _, _) -> error loc "bad ast SgXtr"
+ and module_expr =
+ function
+@@ -1424,7 +1440,7 @@
+ Some mt ->
+ let pt = package_of_module_type loc mt in
+ let t = mktyp loc (ptyp_package pt) in
+- mkexp loc (Pexp_constraint (expr e, Some t, None))
++ mkexp loc (ocaml_pexp_constraint (expr e) (Some t) None)
+ | None -> expr e
+ in
+ mkmod loc (pmod_unpack e)
+@@ -1455,29 +1471,33 @@
+ | StExc (loc, n, tl, sl) ->
+ let si =
+ match uv tl, uv sl with
+- tl, [] -> ocaml_pstr_exception (uv n) (List.map ctyp tl)
++ tl, [] -> ocaml_pstr_exception (mkloc loc) (uv n) (List.map ctyp tl)
+ | [], sl ->
+ begin match ocaml_pstr_exn_rebind with
+ Some pstr_exn_rebind ->
+- pstr_exn_rebind (uv n) (long_id_of_string_list loc sl)
++ pstr_exn_rebind (mkloc loc) (uv n)
++ (long_id_of_string_list loc sl)
+ | None -> error loc "no exception renaming in this ocaml version"
+ end
+ | _ -> error loc "renamed exception should not have parameters"
+ in
+ mkstr loc si :: l
+- | StExp (loc, e) -> mkstr loc (Pstr_eval (expr e)) :: l
++ | StExp (loc, e) -> mkstr loc (ocaml_pstr_eval (expr e)) :: l
+ | StExt (loc, n, t, p) ->
+- mkstr loc (ocaml_pstr_primitive (uv n) (mkvalue_desc t (uv p))) :: l
++ let vn = uv n in
++ mkstr loc (ocaml_pstr_primitive vn (mkvalue_desc vn t (uv p))) :: l
+ | StInc (loc, me) ->
+ begin match ocaml_pstr_include with
+- Some pstr_include -> mkstr loc (pstr_include (module_expr me)) :: l
++ Some pstr_include ->
++ mkstr loc (pstr_include (mkloc loc) (module_expr me)) :: l
+ | None -> error loc "no include in this ocaml version"
+ end
+ | StMod (loc, rf, nel) ->
+ if not (uv rf) then
+ List.fold_right
+ (fun (n, me) l ->
+- mkstr loc (ocaml_pstr_module (uv n) (module_expr me)) :: l)
++ let m = ocaml_pstr_module (mkloc loc) (uv n) (module_expr me) in
++ mkstr loc m :: l)
+ (uv nel) l
+ else
+ begin match ocaml_pstr_recmodule with
+@@ -1499,9 +1519,12 @@
+ | None -> error loc "no recursive module in this ocaml version"
+ end
+ | StMty (loc, n, mt) ->
+- mkstr loc (ocaml_pstr_modtype (uv n) (module_type mt)) :: l
++ let m = ocaml_pstr_modtype (mkloc loc) (uv n) (module_type mt) in
++ mkstr loc m :: l
+ | StOpn (loc, id) ->
+- mkstr loc (ocaml_pstr_open (long_id_of_string_list loc (uv id))) :: l
++ mkstr loc
++ (ocaml_pstr_open (mkloc loc) (long_id_of_string_list loc (uv id))) ::
++ l
+ | StTyp (loc, tdl) ->
+ mkstr loc (ocaml_pstr_type (List.map mktype_decl (uv tdl))) :: l
+ | StUse (loc, fn, sl) ->
+@@ -1581,7 +1604,8 @@
+ end
+ | CgDcl (loc, cl) -> List.fold_right class_sig_item (uv cl) l
+ | CgInh (loc, ct) ->
+- ocaml_class_type_field (mkloc loc) (Pctf_inher (class_type ct)) :: l
++ ocaml_class_type_field (mkloc loc) (ocaml_pctf_inher (class_type ct)) ::
++ l
+ | CgMth (loc, pf, s, t) ->
+ ocaml_class_type_field (mkloc loc)
+ (ocaml_pctf_meth
+@@ -1733,20 +1757,19 @@
+
+ let directive loc =
+ function
+- None -> Pdir_none
+- | Some (MLast.ExStr (_, s)) -> Pdir_string s
+- | Some (MLast.ExInt (_, i, "")) -> Pdir_int (int_of_string_l loc i)
+- | Some (MLast.ExUid (_, "True")) ->
++ MLast.ExStr (_, s) -> Pdir_string s
++ | MLast.ExInt (_, i, "") -> Pdir_int (int_of_string_l loc i)
++ | MLast.ExUid (_, "True") ->
+ begin match ocaml_pdir_bool with
+ Some pdir_bool -> pdir_bool true
+ | None -> error loc "no such kind of directive in this ocaml version"
+ end
+- | Some (MLast.ExUid (_, "False")) ->
++ | MLast.ExUid (_, "False") ->
+ begin match ocaml_pdir_bool with
+ Some pdir_bool -> pdir_bool false
+ | None -> error loc "no such kind of directive in this ocaml version"
+ end
+- | Some e ->
++ | e ->
+ let sl =
+ let rec loop =
+ function
+@@ -1761,8 +1784,14 @@
+ Pdir_ident (long_id_of_string_list loc sl)
+ ;;
+
++let directive_args loc d =
++ match d with
++ Some d -> directive loc d
++ | None -> Pdir_none
++;;
++
+ let phrase =
+ function
+- StDir (loc, d, dp) -> Ptop_dir (uv d, directive loc (uv dp))
++ StDir (loc, d, dp) -> Ptop_dir (uv d, directive_args loc (uv dp))
+ | si -> glob_fname := !(Plexing.input_file); Ptop_def (str_item si [])
+ ;;
+diff -urN camlp5-6.11/ocaml_src/main/ast2pt.mli camlp5-6.12-63a8c30f/ocaml_src/main/ast2pt.mli
+--- camlp5-6.11/ocaml_src/main/ast2pt.mli 2012-06-02 14:23:40.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/main/ast2pt.mli 2014-08-01 10:14:54.311065436 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* ast2pt.mli,v *)
+
+ (** Conversion between Camlp5 AST into OCaml AST *)
+
+diff -urN camlp5-6.11/ocaml_src/main/.cvsignore camlp5-6.12-63a8c30f/ocaml_src/main/.cvsignore
+--- camlp5-6.11/ocaml_src/main/.cvsignore 2010-09-15 17:00:28.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/main/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-camlp5
+diff -urN camlp5-6.11/ocaml_src/main/exparser.ml camlp5-6.12-63a8c30f/ocaml_src/main/exparser.ml
+--- camlp5-6.11/ocaml_src/main/exparser.ml 2013-03-19 14:29:57.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/main/exparser.ml 2014-08-01 10:14:54.311065436 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* exparser.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (* #load "q_MLast.cmo" *)
+diff -urN camlp5-6.11/ocaml_src/main/exparser.mli camlp5-6.12-63a8c30f/ocaml_src/main/exparser.mli
+--- camlp5-6.11/ocaml_src/main/exparser.mli 2012-06-02 14:23:40.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/main/exparser.mli 2014-08-01 10:14:54.311065436 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* exparser.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (* expand parser ast into normal one *)
+diff -urN camlp5-6.11/ocaml_src/main/.gitignore camlp5-6.12-63a8c30f/ocaml_src/main/.gitignore
+--- camlp5-6.11/ocaml_src/main/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/main/.gitignore 2014-08-01 10:14:54.310065435 +0100
+@@ -0,0 +1,2 @@
++*.cm[oi]
++camlp5
+diff -urN camlp5-6.11/ocaml_src/main/main.ml camlp5-6.12-63a8c30f/ocaml_src/main/main.ml
+--- camlp5-6.11/ocaml_src/main/main.ml 2013-03-13 14:55:40.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/main/main.ml 2014-08-01 10:14:54.311065436 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* main.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (* #load "q_MLast.cmo" *)
+diff -urN camlp5-6.11/ocaml_src/main/Makefile camlp5-6.12-63a8c30f/ocaml_src/main/Makefile
+--- camlp5-6.11/ocaml_src/main/Makefile 2012-06-02 14:23:40.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/main/Makefile 2014-08-01 10:14:54.310065435 +0100
+@@ -1,4 +1,4 @@
+-# File generated by program: edit only if it does not compile.
++# Makefile,v
+
+ TOP=../..
+ include $(TOP)/config/Makefile
+diff -urN camlp5-6.11/ocaml_src/main/mLast.mli camlp5-6.12-63a8c30f/ocaml_src/main/mLast.mli
+--- camlp5-6.11/ocaml_src/main/mLast.mli 2013-07-02 17:31:25.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/main/mLast.mli 2014-08-01 10:14:54.311065436 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* mLast.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (* #load "pa_macro.cmo" *)
+diff -urN camlp5-6.11/ocaml_src/main/parserify.ml camlp5-6.12-63a8c30f/ocaml_src/main/parserify.ml
+--- camlp5-6.11/ocaml_src/main/parserify.ml 2013-03-15 09:39:40.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/main/parserify.ml 2014-08-01 10:14:54.311065436 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* parserify.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (* #load "q_MLast.cmo" *)
+diff -urN camlp5-6.11/ocaml_src/main/parserify.mli camlp5-6.12-63a8c30f/ocaml_src/main/parserify.mli
+--- camlp5-6.11/ocaml_src/main/parserify.mli 2012-06-02 14:23:40.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/main/parserify.mli 2014-08-01 10:14:54.311065436 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* parserify.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ type spat_comp =
+diff -urN camlp5-6.11/ocaml_src/main/pcaml.ml camlp5-6.12-63a8c30f/ocaml_src/main/pcaml.ml
+--- camlp5-6.11/ocaml_src/main/pcaml.ml 2013-08-15 23:08:21.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/main/pcaml.ml 2014-08-01 10:14:54.311065436 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* pcaml.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (* #load "pa_macro.cmo" *)
+@@ -7,7 +7,7 @@
+
+ open Printf;;
+
+-let version = "6.11";;
++let version = "6.12-exp";;
+ let syntax_name = ref "";;
+
+ let gram =
+diff -urN camlp5-6.11/ocaml_src/main/pcaml.mli camlp5-6.12-63a8c30f/ocaml_src/main/pcaml.mli
+--- camlp5-6.11/ocaml_src/main/pcaml.mli 2013-04-19 09:43:39.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/main/pcaml.mli 2014-08-01 10:14:54.311065436 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* pcaml.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (* #load "pa_macro.cmo" *)
+diff -urN camlp5-6.11/ocaml_src/main/prtools.ml camlp5-6.12-63a8c30f/ocaml_src/main/prtools.ml
+--- camlp5-6.11/ocaml_src/main/prtools.ml 2012-06-02 14:23:40.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/main/prtools.ml 2014-08-01 10:14:54.311065436 +0100
+@@ -1,11 +1,12 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* prtools.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (* #load "q_MLast.cmo" *)
+ (* #load "pa_macro.cmo" *)
+
+ open Pretty;;
++open Versdep;;
+
+ type pr_context =
+ Pprintf.pr_context =
+@@ -334,11 +335,11 @@
+
+ module Buff =
+ struct
+- let buff = ref (String.create 80);;
++ let buff = ref (string_create 80);;
+ let store len x =
+ if len >= String.length !buff then
+- buff := !buff ^ String.create (String.length !buff);
+- !buff.[len] <- x;
++ buff := !buff ^ string_create (String.length !buff);
++ string_set !buff len x;
+ succ len
+ ;;
+ let mstore len s =
+diff -urN camlp5-6.11/ocaml_src/main/prtools.mli camlp5-6.12-63a8c30f/ocaml_src/main/prtools.mli
+--- camlp5-6.11/ocaml_src/main/prtools.mli 2012-06-02 14:23:40.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/main/prtools.mli 2014-08-01 10:14:54.311065436 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* prtools.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ type pr_context =
+diff -urN camlp5-6.11/ocaml_src/main/quotation.ml camlp5-6.12-63a8c30f/ocaml_src/main/quotation.ml
+--- camlp5-6.11/ocaml_src/main/quotation.ml 2012-06-02 14:23:40.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/main/quotation.ml 2014-08-01 10:14:54.311065436 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* quotation.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ type expander =
+diff -urN camlp5-6.11/ocaml_src/main/quotation.mli camlp5-6.12-63a8c30f/ocaml_src/main/quotation.mli
+--- camlp5-6.11/ocaml_src/main/quotation.mli 2012-06-02 14:23:40.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/main/quotation.mli 2014-08-01 10:14:54.312065436 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* quotation.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (** Quotation operations. *)
+diff -urN camlp5-6.11/ocaml_src/main/reloc.ml camlp5-6.12-63a8c30f/ocaml_src/main/reloc.ml
+--- camlp5-6.11/ocaml_src/main/reloc.ml 2012-06-02 14:23:40.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/main/reloc.ml 2014-08-01 10:14:54.312065436 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* reloc.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (* #load "pa_macro.cmo" *)
+diff -urN camlp5-6.11/ocaml_src/main/reloc.mli camlp5-6.12-63a8c30f/ocaml_src/main/reloc.mli
+--- camlp5-6.11/ocaml_src/main/reloc.mli 2012-06-02 14:23:40.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/main/reloc.mli 2014-08-01 10:14:54.312065436 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* reloc.mli,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ val expr : (MLast.loc -> MLast.loc) -> int -> MLast.expr -> MLast.expr;;
+diff -urN camlp5-6.11/ocaml_src/meta/.cvsignore camlp5-6.12-63a8c30f/ocaml_src/meta/.cvsignore
+--- camlp5-6.11/ocaml_src/meta/.cvsignore 2010-09-15 17:00:29.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/meta/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1,3 +0,0 @@
+-*.cm[oiax]
+-camlp5r
+-camlp5r.opt
+diff -urN camlp5-6.11/ocaml_src/meta/.gitignore camlp5-6.12-63a8c30f/ocaml_src/meta/.gitignore
+--- camlp5-6.11/ocaml_src/meta/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/meta/.gitignore 2014-08-01 10:14:54.312065436 +0100
+@@ -0,0 +1,3 @@
++*.cm[oiax]
++camlp5r
++camlp5r.opt
+diff -urN camlp5-6.11/ocaml_src/meta/Makefile camlp5-6.12-63a8c30f/ocaml_src/meta/Makefile
+--- camlp5-6.11/ocaml_src/meta/Makefile 2012-06-02 14:23:40.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/meta/Makefile 2014-08-01 10:14:54.312065436 +0100
+@@ -1,4 +1,4 @@
+-# File generated by program: edit only if it does not compile.
++# Makefile,v
+
+ TOP=../..
+ include $(TOP)/config/Makefile
+diff -urN camlp5-6.11/ocaml_src/meta/pa_extend.ml camlp5-6.12-63a8c30f/ocaml_src/meta/pa_extend.ml
+--- camlp5-6.11/ocaml_src/meta/pa_extend.ml 2012-06-02 14:23:40.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/meta/pa_extend.ml 2014-08-01 10:14:54.312065436 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* pa_extend.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (* #load "pa_macro.cmo" *)
+diff -urN camlp5-6.11/ocaml_src/meta/pa_extend_m.ml camlp5-6.12-63a8c30f/ocaml_src/meta/pa_extend_m.ml
+--- camlp5-6.11/ocaml_src/meta/pa_extend_m.ml 2012-06-02 14:23:40.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/meta/pa_extend_m.ml 2014-08-01 10:14:54.312065436 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* pa_extend_m.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (* #load "pa_extend.cmo" *)
+diff -urN camlp5-6.11/ocaml_src/meta/pa_fstream.ml camlp5-6.12-63a8c30f/ocaml_src/meta/pa_fstream.ml
+--- camlp5-6.11/ocaml_src/meta/pa_fstream.ml 2012-06-02 14:23:40.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/meta/pa_fstream.ml 2014-08-01 10:14:54.312065436 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* pa_fstream.ml,v *)
+
+ (* #load "pa_extend.cmo" *)
+ (* #load "q_MLast.cmo" *)
+diff -urN camlp5-6.11/ocaml_src/meta/pa_lexer.ml camlp5-6.12-63a8c30f/ocaml_src/meta/pa_lexer.ml
+--- camlp5-6.11/ocaml_src/meta/pa_lexer.ml 2012-06-02 14:23:40.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/meta/pa_lexer.ml 2014-08-01 10:14:54.313065437 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* pa_lexer.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (* #load "pa_extend.cmo" *)
+diff -urN camlp5-6.11/ocaml_src/meta/pa_macro.ml camlp5-6.12-63a8c30f/ocaml_src/meta/pa_macro.ml
+--- camlp5-6.11/ocaml_src/meta/pa_macro.ml 2013-03-13 14:55:40.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_src/meta/pa_macro.ml 2014-08-01 10:14:54.313065437 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* pa_macro.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (* #load "pa_extend.cmo" *)
+@@ -103,6 +103,7 @@
+
+ open Pcaml;;
+ open Printf;;
++open Versdep;;
+
+ type macro_value =
+ MvExpr of string list * MLast.expr
+@@ -129,7 +130,7 @@
+ for i = 0 to String.length v - 1 do
+ match v.[i] with
+ '0'..'9' | 'a'..'z' | 'A'..'Z' -> ()
+- | _ -> v.[i] <- '_'
++ | _ -> string_set v i '_'
+ done;
+ v
+ ;;
+diff -urN camlp5-6.11/ocaml_src/meta/pa_r.ml camlp5-6.12-63a8c30f/ocaml_src/meta/pa_r.ml
+--- camlp5-6.11/ocaml_src/meta/pa_r.ml 2013-07-02 17:12:43.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/meta/pa_r.ml 2014-08-01 10:14:54.313065437 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* pa_r.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (* #load "pa_extend.cmo" *)
+diff -urN camlp5-6.11/ocaml_src/meta/pa_rp.ml camlp5-6.12-63a8c30f/ocaml_src/meta/pa_rp.ml
+--- camlp5-6.11/ocaml_src/meta/pa_rp.ml 2012-06-02 14:23:40.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/meta/pa_rp.ml 2014-08-01 10:14:54.313065437 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* pa_rp.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (* #load "pa_extend.cmo" *)
+diff -urN camlp5-6.11/ocaml_src/meta/pr_dump.ml camlp5-6.12-63a8c30f/ocaml_src/meta/pr_dump.ml
+--- camlp5-6.11/ocaml_src/meta/pr_dump.ml 2012-06-02 14:23:40.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/meta/pr_dump.ml 2014-08-01 10:14:54.314065438 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* pr_dump.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Versdep;;
+diff -urN camlp5-6.11/ocaml_src/meta/q_ast.ml camlp5-6.12-63a8c30f/ocaml_src/meta/q_ast.ml
+--- camlp5-6.11/ocaml_src/meta/q_ast.ml 2012-06-02 14:23:42.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/meta/q_ast.ml 2014-08-01 10:14:54.315065438 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* q_ast.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (* #load "pa_macro.cmo" *)
+diff -urN camlp5-6.11/ocaml_src/meta/q_MLast.ml camlp5-6.12-63a8c30f/ocaml_src/meta/q_MLast.ml
+--- camlp5-6.11/ocaml_src/meta/q_MLast.ml 2013-07-02 17:12:43.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/meta/q_MLast.ml 2014-08-01 10:14:54.315065438 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* q_MLast.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ (* #load "pa_extend.cmo" *)
+diff -urN camlp5-6.11/ocaml_src/odyl/.cvsignore camlp5-6.12-63a8c30f/ocaml_src/odyl/.cvsignore
+--- camlp5-6.11/ocaml_src/odyl/.cvsignore 2010-09-15 17:00:29.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/odyl/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1,2 +0,0 @@
+-odyl
+-odyl_config.ml
+diff -urN camlp5-6.11/ocaml_src/odyl/.gitignore camlp5-6.12-63a8c30f/ocaml_src/odyl/.gitignore
+--- camlp5-6.11/ocaml_src/odyl/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/odyl/.gitignore 2014-08-01 10:14:54.315065438 +0100
+@@ -0,0 +1,3 @@
++*.cm[oia]
++odyl
++odyl_config.ml
+diff -urN camlp5-6.11/ocaml_src/odyl/Makefile camlp5-6.12-63a8c30f/ocaml_src/odyl/Makefile
+--- camlp5-6.11/ocaml_src/odyl/Makefile 2012-06-02 14:23:42.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/odyl/Makefile 2014-08-01 10:14:54.315065438 +0100
+@@ -1,4 +1,4 @@
+-# File generated by program: edit only if it does not compile.
++# Makefile,v
+
+ TOP=../..
+ include $(TOP)/config/Makefile
+diff -urN camlp5-6.11/ocaml_src/odyl/odyl_main.ml camlp5-6.12-63a8c30f/ocaml_src/odyl/odyl_main.ml
+--- camlp5-6.11/ocaml_src/odyl/odyl_main.ml 2012-06-02 14:23:42.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/odyl/odyl_main.ml 2014-08-01 10:14:54.315065438 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* File generated by program: edit only if it does not compile. *)
++(* odyl_main.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ let go = ref (fun () -> ());;
+diff -urN camlp5-6.11/ocaml_src/odyl/odyl_main.mli camlp5-6.12-63a8c30f/ocaml_src/odyl/odyl_main.mli
+--- camlp5-6.11/ocaml_src/odyl/odyl_main.mli 2012-06-02 14:23:42.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/odyl/odyl_main.mli 2014-08-01 10:14:54.316065439 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* odyl_main.mli,v *)
+
+ exception Error of string * string;;
+
+diff -urN camlp5-6.11/ocaml_src/odyl/odyl.ml camlp5-6.12-63a8c30f/ocaml_src/odyl/odyl.ml
+--- camlp5-6.11/ocaml_src/odyl/odyl.ml 2012-06-02 14:23:42.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_src/odyl/odyl.ml 2014-08-01 10:14:54.315065438 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* File generated by program: edit only if it does not compile. *)
++(* odyl.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ let apply_load () =
+diff -urN camlp5-6.11/ocaml_stuff/1.06/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/1.06/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/1.06/parsing/.cvsignore 2010-09-15 17:00:30.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/1.06/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/1.06/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/1.06/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/1.06/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/1.06/parsing/.gitignore 2014-08-01 10:14:54.316065439 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/1.06/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/1.06/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/1.06/utils/.cvsignore 2010-09-15 17:00:30.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/1.06/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/1.06/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/1.06/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/1.06/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/1.06/utils/.gitignore 2014-08-01 10:14:54.316065439 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/1.07/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/1.07/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/1.07/parsing/.cvsignore 2010-09-15 17:00:30.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/1.07/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/1.07/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/1.07/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/1.07/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/1.07/parsing/.gitignore 2014-08-01 10:14:54.316065439 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/1.07/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/1.07/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/1.07/utils/.cvsignore 2010-09-15 17:00:30.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/1.07/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/1.07/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/1.07/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/1.07/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/1.07/utils/.gitignore 2014-08-01 10:14:54.317065439 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/2.00/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/2.00/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/2.00/parsing/.cvsignore 2010-09-15 17:00:30.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/2.00/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/2.00/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/2.00/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/2.00/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/2.00/parsing/.gitignore 2014-08-01 10:14:54.317065439 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/2.00/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/2.00/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/2.00/utils/.cvsignore 2010-09-15 17:00:31.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/2.00/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/2.00/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/2.00/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/2.00/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/2.00/utils/.gitignore 2014-08-01 10:14:54.317065439 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/2.01/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/2.01/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/2.01/parsing/.cvsignore 2010-09-15 17:00:31.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/2.01/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/2.01/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/2.01/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/2.01/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/2.01/parsing/.gitignore 2014-08-01 10:14:54.318065440 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/2.01/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/2.01/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/2.01/utils/.cvsignore 2010-09-15 17:00:31.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/2.01/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/2.01/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/2.01/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/2.01/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/2.01/utils/.gitignore 2014-08-01 10:14:54.318065440 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/2.02/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/2.02/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/2.02/parsing/.cvsignore 2010-09-15 17:00:31.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/2.02/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/2.02/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/2.02/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/2.02/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/2.02/parsing/.gitignore 2014-08-01 10:14:54.318065440 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/2.02/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/2.02/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/2.02/utils/.cvsignore 2010-09-15 17:00:32.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/2.02/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/2.02/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/2.02/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/2.02/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/2.02/utils/.gitignore 2014-08-01 10:14:54.319065441 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/2.03/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/2.03/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/2.03/parsing/.cvsignore 2010-09-15 17:00:32.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/2.03/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/2.03/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/2.03/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/2.03/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/2.03/parsing/.gitignore 2014-08-01 10:14:54.319065441 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/2.03/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/2.03/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/2.03/utils/.cvsignore 2010-09-15 17:00:32.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/2.03/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/2.03/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/2.03/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/2.03/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/2.03/utils/.gitignore 2014-08-01 10:14:54.319065441 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/2.04/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/2.04/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/2.04/parsing/.cvsignore 2010-09-15 17:00:32.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/2.04/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/2.04/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/2.04/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/2.04/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/2.04/parsing/.gitignore 2014-08-01 10:14:54.319065441 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/2.04/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/2.04/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/2.04/utils/.cvsignore 2010-09-15 17:00:32.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/2.04/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/2.04/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/2.04/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/2.04/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/2.04/utils/.gitignore 2014-08-01 10:14:54.320065441 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/2.99/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/2.99/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/2.99/parsing/.cvsignore 2010-09-15 17:00:33.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/2.99/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/2.99/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/2.99/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/2.99/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/2.99/parsing/.gitignore 2014-08-01 10:14:54.320065441 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/2.99/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/2.99/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/2.99/utils/.cvsignore 2010-09-15 17:00:33.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/2.99/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/2.99/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/2.99/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/2.99/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/2.99/utils/.gitignore 2014-08-01 10:14:54.320065441 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.00/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.00/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.00/parsing/.cvsignore 2010-09-15 17:00:33.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.00/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.00/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.00/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.00/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.00/parsing/.gitignore 2014-08-01 10:14:54.321065442 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.00/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.00/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.00/utils/.cvsignore 2010-09-15 17:00:33.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.00/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.00/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.00/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.00/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.00/utils/.gitignore 2014-08-01 10:14:54.321065442 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.01/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.01/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.01/parsing/.cvsignore 2010-09-15 17:00:34.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.01/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.01/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.01/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.01/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.01/parsing/.gitignore 2014-08-01 10:14:54.321065442 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.01/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.01/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.01/utils/.cvsignore 2010-09-15 17:00:34.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.01/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.01/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.01/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.01/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.01/utils/.gitignore 2014-08-01 10:14:54.322065443 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.02/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.02/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.02/parsing/.cvsignore 2010-09-15 17:00:34.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.02/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.02/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.02/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.02/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.02/parsing/.gitignore 2014-08-01 10:14:54.322065443 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.02/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.02/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.02/utils/.cvsignore 2010-09-15 17:00:34.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.02/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.02/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.02/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.02/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.02/utils/.gitignore 2014-08-01 10:14:54.322065443 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.03/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.03/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.03/parsing/.cvsignore 2010-09-15 17:00:35.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.03/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.03/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.03/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.03/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.03/parsing/.gitignore 2014-08-01 10:14:54.322065443 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.03/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.03/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.03/utils/.cvsignore 2010-09-15 17:00:35.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.03/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.03/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.03/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.03/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.03/utils/.gitignore 2014-08-01 10:14:54.323065443 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.04/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.04/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.04/parsing/.cvsignore 2010-09-15 17:00:35.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.04/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.04/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.04/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.04/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.04/parsing/.gitignore 2014-08-01 10:14:54.323065443 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.04/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.04/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.04/utils/.cvsignore 2010-09-15 17:00:35.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.04/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.04/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.04/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.04/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.04/utils/.gitignore 2014-08-01 10:14:54.323065443 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.05/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.05/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.05/parsing/.cvsignore 2010-09-15 17:00:35.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.05/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.05/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.05/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.05/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.05/parsing/.gitignore 2014-08-01 10:14:54.324065444 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.05/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.05/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.05/utils/.cvsignore 2010-09-15 17:00:36.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.05/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.05/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.05/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.05/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.05/utils/.gitignore 2014-08-01 10:14:54.324065444 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.06/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.06/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.06/parsing/.cvsignore 2010-09-15 17:00:36.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.06/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.06/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.06/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.06/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.06/parsing/.gitignore 2014-08-01 10:14:54.324065444 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.06/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.06/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.06/utils/.cvsignore 2010-09-15 17:00:36.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.06/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.06/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.06/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.06/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.06/utils/.gitignore 2014-08-01 10:14:54.324065444 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.07/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.07/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.07/parsing/.cvsignore 2010-09-15 17:00:36.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.07/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.07/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.07/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.07/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.07/parsing/.gitignore 2014-08-01 10:14:54.325065444 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.07/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.07/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.07/utils/.cvsignore 2010-09-15 17:00:37.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.07/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.07/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.07/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.07/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.07/utils/.gitignore 2014-08-01 10:14:54.325065444 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.08.0/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.08.0/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.08.0/parsing/.cvsignore 2010-09-15 17:00:37.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.08.0/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.08.0/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.08.0/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.08.0/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.08.0/parsing/.gitignore 2014-08-01 10:14:54.325065444 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.08.0/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.08.0/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.08.0/utils/.cvsignore 2010-09-15 17:00:37.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.08.0/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.08.0/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.08.0/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.08.0/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.08.0/utils/.gitignore 2014-08-01 10:14:54.326065445 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.08.1/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.08.1/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.08.1/parsing/.cvsignore 2010-09-15 17:00:37.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.08.1/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.08.1/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.08.1/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.08.1/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.08.1/parsing/.gitignore 2014-08-01 10:14:54.326065445 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.08.1/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.08.1/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.08.1/utils/.cvsignore 2010-09-15 17:00:38.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.08.1/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.08.1/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.08.1/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.08.1/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.08.1/utils/.gitignore 2014-08-01 10:14:54.327065446 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.08.2/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.08.2/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.08.2/parsing/.cvsignore 2010-09-15 17:00:38.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.08.2/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.08.2/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.08.2/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.08.2/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.08.2/parsing/.gitignore 2014-08-01 10:14:54.327065446 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.08.2/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.08.2/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.08.2/utils/.cvsignore 2010-09-15 17:00:38.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.08.2/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.08.2/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.08.2/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.08.2/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.08.2/utils/.gitignore 2014-08-01 10:14:54.327065446 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.08.3/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.08.3/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.08.3/parsing/.cvsignore 2010-09-15 17:00:38.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.08.3/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.08.3/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.08.3/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.08.3/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.08.3/parsing/.gitignore 2014-08-01 10:14:54.327065446 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.08.3/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.08.3/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.08.3/utils/.cvsignore 2010-09-15 17:00:39.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.08.3/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.08.3/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.08.3/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.08.3/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.08.3/utils/.gitignore 2014-08-01 10:14:54.328065446 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.08.4/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.08.4/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.08.4/parsing/.cvsignore 2010-09-15 17:00:39.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.08.4/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.08.4/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.08.4/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.08.4/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.08.4/parsing/.gitignore 2014-08-01 10:14:54.328065446 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.08.4/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.08.4/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.08.4/utils/.cvsignore 2010-09-15 17:00:39.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.08.4/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.08.4/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.08.4/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.08.4/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.08.4/utils/.gitignore 2014-08-01 10:14:54.328065446 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.09.0/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.09.0/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.09.0/parsing/.cvsignore 2010-09-15 17:00:39.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.09.0/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.09.0/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.09.0/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.09.0/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.09.0/parsing/.gitignore 2014-08-01 10:14:54.329065447 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.09.0/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.09.0/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.09.0/utils/.cvsignore 2010-09-15 17:00:39.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.09.0/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.09.0/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.09.0/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.09.0/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.09.0/utils/.gitignore 2014-08-01 10:14:54.329065447 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.09.1/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.09.1/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.09.1/parsing/.cvsignore 2010-09-15 17:00:40.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.09.1/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.09.1/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.09.1/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.09.1/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.09.1/parsing/.gitignore 2014-08-01 10:14:54.329065447 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.09.1/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.09.1/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.09.1/utils/.cvsignore 2010-09-15 17:00:40.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.09.1/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.09.1/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.09.1/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.09.1/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.09.1/utils/.gitignore 2014-08-01 10:14:54.329065447 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.09.2/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.09.2/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.09.2/parsing/.cvsignore 2010-09-15 17:00:40.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.09.2/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.09.2/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.09.2/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.09.2/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.09.2/parsing/.gitignore 2014-08-01 10:14:54.330065448 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.09.2/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.09.2/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.09.2/utils/.cvsignore 2010-09-15 17:00:40.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.09.2/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.09.2/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.09.2/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.09.2/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.09.2/utils/.gitignore 2014-08-01 10:14:54.330065448 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.09.3/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.09.3/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.09.3/parsing/.cvsignore 2010-09-15 17:00:41.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.09.3/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.09.3/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.09.3/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.09.3/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.09.3/parsing/.gitignore 2014-08-01 10:14:54.330065448 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.09.3/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.09.3/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.09.3/utils/.cvsignore 2010-09-15 17:00:41.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.09.3/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.09.3/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.09.3/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.09.3/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.09.3/utils/.gitignore 2014-08-01 10:14:54.331065448 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.09.4/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.09.4/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.09.4/parsing/.cvsignore 2010-09-15 17:00:41.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.09.4/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.09.4/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.09.4/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.09.4/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.09.4/parsing/.gitignore 2014-08-01 10:14:54.331065448 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.09.4/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.09.4/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.09.4/utils/.cvsignore 2010-09-15 17:00:41.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.09.4/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.09.4/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.09.4/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.09.4/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.09.4/utils/.gitignore 2014-08-01 10:14:54.331065448 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.10/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.10/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.10/parsing/.cvsignore 2010-09-15 17:00:41.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.10/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.10/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.10/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.10/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.10/parsing/.gitignore 2014-08-01 10:14:54.334065450 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.10/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.10/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.10/utils/.cvsignore 2010-09-15 17:00:42.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.10/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.10/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.10/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.10/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.10/utils/.gitignore 2014-08-01 10:14:54.334065450 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.10.0/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.10.0/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.10.0/parsing/.cvsignore 2010-09-15 17:00:42.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.10.0/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.10.0/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.10.0/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.10.0/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.10.0/parsing/.gitignore 2014-08-01 10:14:54.331065448 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.10.0/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.10.0/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.10.0/utils/.cvsignore 2010-09-15 17:00:42.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.10.0/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.10.0/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.10.0/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.10.0/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.10.0/utils/.gitignore 2014-08-01 10:14:54.332065449 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.10.1/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.10.1/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.10.1/parsing/.cvsignore 2010-09-15 17:00:43.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.10.1/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.10.1/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.10.1/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.10.1/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.10.1/parsing/.gitignore 2014-08-01 10:14:54.332065449 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.10.1/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.10.1/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.10.1/utils/.cvsignore 2010-09-15 17:00:43.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.10.1/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.10.1/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.10.1/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.10.1/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.10.1/utils/.gitignore 2014-08-01 10:14:54.332065449 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.10.2/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.10.2/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.10.2/parsing/.cvsignore 2010-09-15 17:00:43.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.10.2/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.10.2/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.10.2/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.10.2/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.10.2/parsing/.gitignore 2014-08-01 10:14:54.333065449 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.10.2/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.10.2/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.10.2/utils/.cvsignore 2010-09-15 17:00:43.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.10.2/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.10.2/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.10.2/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.10.2/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.10.2/utils/.gitignore 2014-08-01 10:14:54.333065449 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.10.3/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.10.3/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.10.3/parsing/.cvsignore 2010-09-15 17:00:43.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.10.3/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.10.3/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.10.3/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.10.3/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.10.3/parsing/.gitignore 2014-08-01 10:14:54.333065449 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.10.3/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.10.3/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.10.3/utils/.cvsignore 2010-09-15 17:00:44.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.10.3/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.10.3/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.10.3/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.10.3/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.10.3/utils/.gitignore 2014-08-01 10:14:54.333065449 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.11/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.11/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.11/parsing/.cvsignore 2010-09-15 17:00:44.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.11/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.11/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.11/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.11/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.11/parsing/.gitignore 2014-08-01 10:14:54.337065452 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.11/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.11/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.11/utils/.cvsignore 2010-09-15 17:00:44.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.11/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.11/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.11/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.11/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.11/utils/.gitignore 2014-08-01 10:14:54.337065452 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.11.0/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.11.0/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.11.0/parsing/.cvsignore 2010-09-15 17:00:44.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.11.0/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.11.0/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.11.0/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.11.0/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.11.0/parsing/.gitignore 2014-08-01 10:14:54.334065450 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.11.0/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.11.0/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.11.0/utils/.cvsignore 2010-09-15 17:00:45.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.11.0/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.11.0/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.11.0/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.11.0/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.11.0/utils/.gitignore 2014-08-01 10:14:54.335065451 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.11.1/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.11.1/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.11.1/parsing/.cvsignore 2010-09-15 17:00:45.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.11.1/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.11.1/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.11.1/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.11.1/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.11.1/parsing/.gitignore 2014-08-01 10:14:54.335065451 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.11.1/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.11.1/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.11.1/utils/.cvsignore 2010-09-15 17:00:45.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.11.1/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.11.1/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.11.1/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.11.1/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.11.1/utils/.gitignore 2014-08-01 10:14:54.335065451 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.11.2/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.11.2/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.11.2/parsing/.cvsignore 2010-09-15 17:00:45.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.11.2/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.11.2/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.11.2/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.11.2/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.11.2/parsing/.gitignore 2014-08-01 10:14:54.335065451 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.11.2/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.11.2/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.11.2/utils/.cvsignore 2010-09-15 17:00:45.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.11.2/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.11.2/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.11.2/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.11.2/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.11.2/utils/.gitignore 2014-08-01 10:14:54.336065452 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.11.3/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.11.3/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.11.3/parsing/.cvsignore 2010-09-15 17:00:46.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.11.3/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.11.3/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.11.3/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.11.3/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.11.3/parsing/.gitignore 2014-08-01 10:14:54.336065452 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.11.3/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.11.3/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.11.3/utils/.cvsignore 2010-09-15 17:00:46.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.11.3/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.11.3/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.11.3/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.11.3/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.11.3/utils/.gitignore 2014-08-01 10:14:54.336065452 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.12.0/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.12.0/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.12.0/parsing/.cvsignore 2010-09-15 17:00:46.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.12.0/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.12.0/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.12.0/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.12.0/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.12.0/parsing/.gitignore 2014-08-01 10:14:54.337065452 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.12.0/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.12.0/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.12.0/utils/.cvsignore 2010-09-15 17:00:46.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.12.0/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.12.0/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.12.0/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.12.0/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.12.0/utils/.gitignore 2014-08-01 10:14:54.338065453 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.12.1/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.12.1/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.12.1/parsing/.cvsignore 2010-09-15 17:00:47.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.12.1/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.12.1/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.12.1/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.12.1/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.12.1/parsing/.gitignore 2014-08-01 10:14:54.338065453 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.12.1/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.12.1/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.12.1/utils/.cvsignore 2010-09-15 17:00:47.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.12.1/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.12.1/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.12.1/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.12.1/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.12.1/utils/.gitignore 2014-08-01 10:14:54.338065453 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.12.2/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.12.2/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.12.2/parsing/.cvsignore 2012-03-14 09:25:26.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.12.2/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.12.2/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.12.2/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.12.2/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.12.2/parsing/.gitignore 2014-08-01 10:14:54.338065453 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.12.2/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.12.2/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.12.2/utils/.cvsignore 2012-03-14 09:25:26.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.12.2/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.12.2/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.12.2/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.12.2/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.12.2/utils/.gitignore 2014-08-01 10:14:54.339065453 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.13.0-gadt/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.13.0-gadt/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.13.0-gadt/parsing/.cvsignore 2010-11-12 23:24:02.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.13.0-gadt/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.13.0-gadt/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.13.0-gadt/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.13.0-gadt/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.13.0-gadt/parsing/.gitignore 2014-08-01 10:14:54.339065453 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/3.13.0-gadt/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/3.13.0-gadt/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/3.13.0-gadt/utils/.cvsignore 2010-11-12 23:24:03.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.13.0-gadt/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/3.13.0-gadt/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/3.13.0-gadt/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/3.13.0-gadt/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/3.13.0-gadt/utils/.gitignore 2014-08-01 10:14:54.340065454 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/4.00.0/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/4.00.0/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/4.00.0/parsing/.cvsignore 2012-03-09 19:31:12.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.00.0/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/4.00.0/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/4.00.0/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/4.00.0/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.00.0/parsing/.gitignore 2014-08-01 10:14:54.340065454 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/4.00.0/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/4.00.0/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/4.00.0/utils/.cvsignore 2012-03-09 19:31:12.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.00.0/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/4.00.0/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/4.00.0/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/4.00.0/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.00.0/utils/.gitignore 2014-08-01 10:14:54.340065454 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/4.00.1/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/4.00.1/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/4.00.1/parsing/.cvsignore 2012-09-12 09:11:07.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.00.1/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/4.00.1/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/4.00.1/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/4.00.1/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.00.1/parsing/.gitignore 2014-08-01 10:14:54.341065454 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/4.00.1/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/4.00.1/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/4.00.1/utils/.cvsignore 2012-09-12 09:11:07.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.00.1/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/4.00.1/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/4.00.1/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/4.00.1/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.00.1/utils/.gitignore 2014-08-01 10:14:54.341065454 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/4.00.2/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/4.00.2/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/4.00.2/parsing/.cvsignore 2013-03-15 18:30:46.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.00.2/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/4.00.2/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/4.00.2/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/4.00.2/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.00.2/parsing/.gitignore 2014-08-01 10:14:54.341065454 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/4.00.2/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/4.00.2/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/4.00.2/utils/.cvsignore 2013-03-15 18:30:46.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.00.2/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/4.00.2/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/4.00.2/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/4.00.2/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.00.2/utils/.gitignore 2014-08-01 10:14:54.342065455 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/4.01.0/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/4.01.0/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/4.01.0/parsing/.cvsignore 2012-06-01 15:56:53.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.01.0/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/4.01.0/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/4.01.0/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/4.01.0/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.01.0/parsing/.gitignore 2014-08-01 10:14:54.342065455 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/4.01.0/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/4.01.0/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/4.01.0/utils/.cvsignore 2012-06-01 15:56:53.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.01.0/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/4.01.0/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/4.01.0/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/4.01.0/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.01.0/utils/.gitignore 2014-08-01 10:14:54.342065455 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/4.01.1/parsing/asttypes.mli camlp5-6.12-63a8c30f/ocaml_stuff/4.01.1/parsing/asttypes.mli
+--- camlp5-6.11/ocaml_stuff/4.01.1/parsing/asttypes.mli 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.01.1/parsing/asttypes.mli 2014-08-01 10:14:54.343065456 +0100
+@@ -0,0 +1,43 @@
++(***********************************************************************)
++(* *)
++(* OCaml *)
++(* *)
++(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
++(* *)
++(* Copyright 1996 Institut National de Recherche en Informatique et *)
++(* en Automatique. All rights reserved. This file is distributed *)
++(* under the terms of the Q Public License version 1.0. *)
++(* *)
++(***********************************************************************)
++
++(* Auxiliary a.s.t. types used by parsetree and typedtree. *)
++
++type constant =
++ Const_int of int
++ | Const_char of char
++ | Const_string of string
++ | Const_float of string
++ | Const_int32 of int32
++ | Const_int64 of int64
++ | Const_nativeint of nativeint
++
++type rec_flag = Nonrecursive | Recursive | Default
++
++type direction_flag = Upto | Downto
++
++type private_flag = Private | Public
++
++type mutable_flag = Immutable | Mutable
++
++type virtual_flag = Virtual | Concrete
++
++type override_flag = Override | Fresh
++
++type closed_flag = Closed | Open
++
++type label = string
++
++type 'a loc = 'a Location.loc = {
++ txt : 'a;
++ loc : Location.t;
++}
+diff -urN camlp5-6.11/ocaml_stuff/4.01.1/parsing/.depend camlp5-6.12-63a8c30f/ocaml_stuff/4.01.1/parsing/.depend
+--- camlp5-6.11/ocaml_stuff/4.01.1/parsing/.depend 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.01.1/parsing/.depend 2014-08-01 10:14:54.343065456 +0100
+@@ -0,0 +1,4 @@
++asttypes.cmi : location.cmi
++location.cmi : ../utils/warnings.cmi
++longident.cmi :
++parsetree.cmi : longident.cmi location.cmi asttypes.cmi
+diff -urN camlp5-6.11/ocaml_stuff/4.01.1/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/4.01.1/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/4.01.1/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.01.1/parsing/.gitignore 2014-08-01 10:14:54.343065456 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/4.01.1/parsing/location.mli camlp5-6.12-63a8c30f/ocaml_stuff/4.01.1/parsing/location.mli
+--- camlp5-6.11/ocaml_stuff/4.01.1/parsing/location.mli 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.01.1/parsing/location.mli 2014-08-01 10:14:54.343065456 +0100
+@@ -0,0 +1,77 @@
++(***********************************************************************)
++(* *)
++(* OCaml *)
++(* *)
++(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
++(* *)
++(* Copyright 1996 Institut National de Recherche en Informatique et *)
++(* en Automatique. All rights reserved. This file is distributed *)
++(* under the terms of the Q Public License version 1.0. *)
++(* *)
++(***********************************************************************)
++
++(* Source code locations (ranges of positions), used in parsetree. *)
++
++open Format
++
++type t = {
++ loc_start: Lexing.position;
++ loc_end: Lexing.position;
++ loc_ghost: bool;
++}
++
++(* Note on the use of Lexing.position in this module.
++ If [pos_fname = ""], then use [!input_name] instead.
++ If [pos_lnum = -1], then [pos_bol = 0]. Use [pos_cnum] and
++ re-parse the file to get the line and character numbers.
++ Else all fields are correct.
++*)
++
++val none : t
++(** An arbitrary value of type [t]; describes an empty ghost range. *)
++val in_file : string -> t;;
++(** Return an empty ghost range located in a given file. *)
++val init : Lexing.lexbuf -> string -> unit
++(** Set the file name and line number of the [lexbuf] to be the start
++ of the named file. *)
++val curr : Lexing.lexbuf -> t
++(** Get the location of the current token from the [lexbuf]. *)
++
++val symbol_rloc: unit -> t
++val symbol_gloc: unit -> t
++
++(** [rhs_loc n] returns the location of the symbol at position [n], starting
++ at 1, in the current parser rule. *)
++val rhs_loc: int -> t
++
++val input_name: string ref
++val input_lexbuf: Lexing.lexbuf option ref
++
++val get_pos_info: Lexing.position -> string * int * int (* file, line, char *)
++val print_loc: formatter -> t -> unit
++val print_error: formatter -> t -> unit
++val print_error_cur_file: formatter -> unit
++val print_warning: t -> formatter -> Warnings.t -> unit
++val prerr_warning: t -> Warnings.t -> unit
++val echo_eof: unit -> unit
++val reset: unit -> unit
++
++val highlight_locations: formatter -> t -> t -> bool
++
++type 'a loc = {
++ txt : 'a;
++ loc : t;
++}
++
++val mknoloc : 'a -> 'a loc
++val mkloc : 'a -> t -> 'a loc
++
++val print: formatter -> t -> unit
++val print_filename: formatter -> string -> unit
++
++val show_filename: string -> string
++ (** In -absname mode, return the absolute path for this filename.
++ Otherwise, returns the filename unchanged. *)
++
++
++val absname: bool ref
+diff -urN camlp5-6.11/ocaml_stuff/4.01.1/parsing/longident.mli camlp5-6.12-63a8c30f/ocaml_stuff/4.01.1/parsing/longident.mli
+--- camlp5-6.11/ocaml_stuff/4.01.1/parsing/longident.mli 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.01.1/parsing/longident.mli 2014-08-01 10:14:54.343065456 +0100
+@@ -0,0 +1,22 @@
++(***********************************************************************)
++(* *)
++(* OCaml *)
++(* *)
++(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
++(* *)
++(* Copyright 1996 Institut National de Recherche en Informatique et *)
++(* en Automatique. All rights reserved. This file is distributed *)
++(* under the terms of the Q Public License version 1.0. *)
++(* *)
++(***********************************************************************)
++
++(* Long identifiers, used in parsetree. *)
++
++type t =
++ Lident of string
++ | Ldot of t * string
++ | Lapply of t * t
++
++val flatten: t -> string list
++val last: t -> string
++val parse: string -> t
+diff -urN camlp5-6.11/ocaml_stuff/4.01.1/parsing/Makefile camlp5-6.12-63a8c30f/ocaml_stuff/4.01.1/parsing/Makefile
+--- camlp5-6.11/ocaml_stuff/4.01.1/parsing/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.01.1/parsing/Makefile 2014-08-01 10:14:54.343065456 +0100
+@@ -0,0 +1,19 @@
++# Id
++
++FILES=asttypes.cmi location.cmi longident.cmi parsetree.cmi
++INCL=-I ../utils
++
++all: $(FILES)
++
++clean:
++ rm -f *.cmi
++
++depend:
++ ocamldep $(INCL) *.ml* | sed -e 's/ *$$//' > .depend
++
++.SUFFIXES: .mli .cmi
++
++.mli.cmi:
++ $(OCAMLN)c $(INCL) -c $<
++
++include .depend
+diff -urN camlp5-6.11/ocaml_stuff/4.01.1/parsing/parsetree.mli camlp5-6.12-63a8c30f/ocaml_stuff/4.01.1/parsing/parsetree.mli
+--- camlp5-6.11/ocaml_stuff/4.01.1/parsing/parsetree.mli 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.01.1/parsing/parsetree.mli 2014-08-01 10:14:54.343065456 +0100
+@@ -0,0 +1,306 @@
++(***********************************************************************)
++(* *)
++(* OCaml *)
++(* *)
++(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
++(* *)
++(* Copyright 1996 Institut National de Recherche en Informatique et *)
++(* en Automatique. All rights reserved. This file is distributed *)
++(* under the terms of the Q Public License version 1.0. *)
++(* *)
++(***********************************************************************)
++
++(* Abstract syntax tree produced by parsing *)
++
++open Asttypes
++
++(* Type expressions for the core language *)
++
++type core_type =
++ { ptyp_desc: core_type_desc;
++ ptyp_loc: Location.t }
++
++and core_type_desc =
++ Ptyp_any
++ | Ptyp_var of string
++ | Ptyp_arrow of label * core_type * core_type
++ | Ptyp_tuple of core_type list
++ | Ptyp_constr of Longident.t loc * core_type list
++ | Ptyp_object of core_field_type list
++ | Ptyp_class of Longident.t loc * core_type list * label list
++ | Ptyp_alias of core_type * string
++ | Ptyp_variant of row_field list * bool * label list option
++ | Ptyp_poly of string list * core_type
++ | Ptyp_package of package_type
++
++
++and package_type = Longident.t loc * (Longident.t loc * core_type) list
++
++and core_field_type =
++ { pfield_desc: core_field_desc;
++ pfield_loc: Location.t }
++
++and core_field_desc =
++ Pfield of string * core_type
++ | Pfield_var
++
++and row_field =
++ Rtag of label * bool * core_type list
++ | Rinherit of core_type
++
++(* Type expressions for the class language *)
++
++type 'a class_infos =
++ { pci_virt: virtual_flag;
++ pci_params: string loc list * Location.t;
++ pci_name: string loc;
++ pci_expr: 'a;
++ pci_variance: (bool * bool) list;
++ pci_loc: Location.t }
++
++(* Value expressions for the core language *)
++
++type pattern =
++ { ppat_desc: pattern_desc;
++ ppat_loc: Location.t }
++
++and pattern_desc =
++ Ppat_any
++ | Ppat_var of string loc
++ | Ppat_alias of pattern * string loc
++ | Ppat_constant of constant
++ | Ppat_tuple of pattern list
++ | Ppat_construct of Longident.t loc * pattern option * bool
++ | Ppat_variant of label * pattern option
++ | Ppat_record of (Longident.t loc * pattern) list * closed_flag
++ | Ppat_array of pattern list
++ | Ppat_or of pattern * pattern
++ | Ppat_constraint of pattern * core_type
++ | Ppat_type of Longident.t loc
++ | Ppat_lazy of pattern
++ | Ppat_unpack of string loc
++
++type expression =
++ { pexp_desc: expression_desc;
++ pexp_loc: Location.t }
++
++and expression_desc =
++ Pexp_ident of Longident.t loc
++ | Pexp_constant of constant
++ | Pexp_let of rec_flag * (pattern * expression) list * expression
++ | Pexp_function of label * expression option * (pattern * expression) list
++ | Pexp_apply of expression * (label * expression) list
++ | Pexp_match of expression * (pattern * expression) list
++ | Pexp_try of expression * (pattern * expression) list
++ | Pexp_tuple of expression list
++ | Pexp_construct of Longident.t loc * expression option * bool
++ | Pexp_variant of label * expression option
++ | Pexp_record of (Longident.t loc * expression) list * expression option
++ | Pexp_field of expression * Longident.t loc
++ | Pexp_setfield of expression * Longident.t loc * expression
++ | Pexp_array of expression list
++ | Pexp_ifthenelse of expression * expression * expression option
++ | Pexp_sequence of expression * expression
++ | Pexp_while of expression * expression
++ | Pexp_for of
++ string loc * expression * expression * direction_flag * expression
++ | Pexp_constraint of expression * core_type option * core_type option
++ | Pexp_when of expression * expression
++ | Pexp_send of expression * string
++ | Pexp_new of Longident.t loc
++ | Pexp_setinstvar of string loc * expression
++ | Pexp_override of (string loc * expression) list
++ | Pexp_letmodule of string loc * module_expr * expression
++ | Pexp_assert of expression
++ | Pexp_assertfalse
++ | Pexp_lazy of expression
++ | Pexp_poly of expression * core_type option
++ | Pexp_object of class_structure
++ | Pexp_newtype of string * expression
++ | Pexp_pack of module_expr
++ | Pexp_open of override_flag * Longident.t loc * expression
++
++(* Value descriptions *)
++
++and value_description =
++ { pval_type: core_type;
++ pval_prim: string list;
++ pval_loc: Location.t
++ }
++
++(* Type declarations *)
++
++and type_declaration =
++ { ptype_params: string loc option list;
++ ptype_cstrs: (core_type * core_type * Location.t) list;
++ ptype_kind: type_kind;
++ ptype_private: private_flag;
++ ptype_manifest: core_type option;
++ ptype_variance: (bool * bool) list;
++ ptype_loc: Location.t }
++
++and type_kind =
++ Ptype_abstract
++ | Ptype_variant of
++ (string loc * core_type list * core_type option * Location.t) list
++ | Ptype_record of
++ (string loc * mutable_flag * core_type * Location.t) list
++
++and exception_declaration = core_type list
++
++(* Type expressions for the class language *)
++
++and class_type =
++ { pcty_desc: class_type_desc;
++ pcty_loc: Location.t }
++
++and class_type_desc =
++ Pcty_constr of Longident.t loc * core_type list
++ | Pcty_signature of class_signature
++ | Pcty_fun of label * core_type * class_type
++
++and class_signature = {
++ pcsig_self: core_type;
++ pcsig_fields: class_type_field list;
++ pcsig_loc: Location.t;
++ }
++
++and class_type_field = {
++ pctf_desc: class_type_field_desc;
++ pctf_loc: Location.t;
++ }
++
++and class_type_field_desc =
++ Pctf_inher of class_type
++ | Pctf_val of (string * mutable_flag * virtual_flag * core_type)
++ | Pctf_virt of (string * private_flag * core_type)
++ | Pctf_meth of (string * private_flag * core_type)
++ | Pctf_cstr of (core_type * core_type)
++
++and class_description = class_type class_infos
++
++and class_type_declaration = class_type class_infos
++
++(* Value expressions for the class language *)
++
++and class_expr =
++ { pcl_desc: class_expr_desc;
++ pcl_loc: Location.t }
++
++and class_expr_desc =
++ Pcl_constr of Longident.t loc * core_type list
++ | Pcl_structure of class_structure
++ | Pcl_fun of label * expression option * pattern * class_expr
++ | Pcl_apply of class_expr * (label * expression) list
++ | Pcl_let of rec_flag * (pattern * expression) list * class_expr
++ | Pcl_constraint of class_expr * class_type
++
++and class_structure = {
++ pcstr_pat: pattern;
++ pcstr_fields: class_field list;
++ }
++
++and class_field = {
++ pcf_desc: class_field_desc;
++ pcf_loc: Location.t;
++ }
++
++and class_field_desc =
++ Pcf_inher of override_flag * class_expr * string option
++ | Pcf_valvirt of (string loc * mutable_flag * core_type)
++ | Pcf_val of (string loc * mutable_flag * override_flag * expression)
++ | Pcf_virt of (string loc * private_flag * core_type)
++ | Pcf_meth of (string loc * private_flag * override_flag * expression)
++ | Pcf_constr of (core_type * core_type)
++ | Pcf_init of expression
++
++and class_declaration = class_expr class_infos
++
++(* Type expressions for the module language *)
++
++and module_type =
++ { pmty_desc: module_type_desc;
++ pmty_loc: Location.t }
++
++and module_type_desc =
++ Pmty_ident of Longident.t loc
++ | Pmty_signature of signature
++ | Pmty_functor of string loc * module_type * module_type
++ | Pmty_with of module_type * (Longident.t loc * with_constraint) list
++ | Pmty_typeof of module_expr
++
++and signature = signature_item list
++
++and signature_item =
++ { psig_desc: signature_item_desc;
++ psig_loc: Location.t }
++
++and signature_item_desc =
++ Psig_value of string loc * value_description
++ | Psig_type of (string loc * type_declaration) list
++ | Psig_exception of string loc * exception_declaration
++ | Psig_module of string loc * module_type
++ | Psig_recmodule of (string loc * module_type) list
++ | Psig_modtype of string loc * modtype_declaration
++ | Psig_open of override_flag * Longident.t loc
++ | Psig_include of module_type
++ | Psig_class of class_description list
++ | Psig_class_type of class_type_declaration list
++
++and modtype_declaration =
++ Pmodtype_abstract
++ | Pmodtype_manifest of module_type
++
++and with_constraint =
++ Pwith_type of type_declaration
++ | Pwith_module of Longident.t loc
++ | Pwith_typesubst of type_declaration
++ | Pwith_modsubst of Longident.t loc
++
++(* Value expressions for the module language *)
++
++and module_expr =
++ { pmod_desc: module_expr_desc;
++ pmod_loc: Location.t }
++
++and module_expr_desc =
++ Pmod_ident of Longident.t loc
++ | Pmod_structure of structure
++ | Pmod_functor of string loc * module_type * module_expr
++ | Pmod_apply of module_expr * module_expr
++ | Pmod_constraint of module_expr * module_type
++ | Pmod_unpack of expression
++
++and structure = structure_item list
++
++and structure_item =
++ { pstr_desc: structure_item_desc;
++ pstr_loc: Location.t }
++
++and structure_item_desc =
++ Pstr_eval of expression
++ | Pstr_value of rec_flag * (pattern * expression) list
++ | Pstr_primitive of string loc * value_description
++ | Pstr_type of (string loc * type_declaration) list
++ | Pstr_exception of string loc * exception_declaration
++ | Pstr_exn_rebind of string loc * Longident.t loc
++ | Pstr_module of string loc * module_expr
++ | Pstr_recmodule of (string loc * module_type * module_expr) list
++ | Pstr_modtype of string loc * module_type
++ | Pstr_open of override_flag * Longident.t loc
++ | Pstr_class of class_declaration list
++ | Pstr_class_type of class_type_declaration list
++ | Pstr_include of module_expr
++
++(* Toplevel phrases *)
++
++type toplevel_phrase =
++ Ptop_def of structure
++ | Ptop_dir of string * directive_argument
++
++and directive_argument =
++ Pdir_none
++ | Pdir_string of string
++ | Pdir_int of int
++ | Pdir_ident of Longident.t
++ | Pdir_bool of bool
+diff -urN camlp5-6.11/ocaml_stuff/4.01.1/utils/.depend camlp5-6.12-63a8c30f/ocaml_stuff/4.01.1/utils/.depend
+--- camlp5-6.11/ocaml_stuff/4.01.1/utils/.depend 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.01.1/utils/.depend 2014-08-01 10:14:54.343065456 +0100
+@@ -0,0 +1,2 @@
++pconfig.cmo: pconfig.cmi
++pconfig.cmx: pconfig.cmi
+diff -urN camlp5-6.11/ocaml_stuff/4.01.1/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/4.01.1/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/4.01.1/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.01.1/utils/.gitignore 2014-08-01 10:14:54.343065456 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/4.01.1/utils/Makefile camlp5-6.12-63a8c30f/ocaml_stuff/4.01.1/utils/Makefile
+--- camlp5-6.11/ocaml_stuff/4.01.1/utils/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.01.1/utils/Makefile 2014-08-01 10:14:54.343065456 +0100
+@@ -0,0 +1,27 @@
++# Id
++
++FILES=warnings.cmi pconfig.cmo
++INCL=
++
++all: $(FILES)
++
++opt: pconfig.cmx
++
++clean:
++ rm -f *.cm[oix] *.o
++
++depend:
++ ocamldep $(INCL) *.ml* | sed -e 's/ *$$//' > .depend
++
++.SUFFIXES: .mli .cmi .ml .cmo .cmx
++
++.mli.cmi:
++ $(OCAMLN)c $(INCL) -c $<
++
++.ml.cmo:
++ $(OCAMLN)c $(INCL) -c $<
++
++.ml.cmx:
++ $(OCAMLN)opt $(INCL) -c $<
++
++include .depend
+diff -urN camlp5-6.11/ocaml_stuff/4.01.1/utils/pconfig.ml camlp5-6.12-63a8c30f/ocaml_stuff/4.01.1/utils/pconfig.ml
+--- camlp5-6.11/ocaml_stuff/4.01.1/utils/pconfig.ml 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.01.1/utils/pconfig.ml 2014-08-01 10:14:54.343065456 +0100
+@@ -0,0 +1,4 @@
++let ocaml_version = "4.01.1"
++let ocaml_name = "ocaml"
++let ast_impl_magic_number = "Caml1999M016"
++let ast_intf_magic_number = "Caml1999N015"
+diff -urN camlp5-6.11/ocaml_stuff/4.01.1/utils/pconfig.mli camlp5-6.12-63a8c30f/ocaml_stuff/4.01.1/utils/pconfig.mli
+--- camlp5-6.11/ocaml_stuff/4.01.1/utils/pconfig.mli 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.01.1/utils/pconfig.mli 2014-08-01 10:14:54.343065456 +0100
+@@ -0,0 +1,4 @@
++val ocaml_version : string
++val ocaml_name : string
++val ast_impl_magic_number : string
++val ast_intf_magic_number : string
+diff -urN camlp5-6.11/ocaml_stuff/4.01.1/utils/warnings.mli camlp5-6.12-63a8c30f/ocaml_stuff/4.01.1/utils/warnings.mli
+--- camlp5-6.11/ocaml_stuff/4.01.1/utils/warnings.mli 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.01.1/utils/warnings.mli 2014-08-01 10:14:54.343065456 +0100
+@@ -0,0 +1,80 @@
++(***********************************************************************)
++(* *)
++(* OCaml *)
++(* *)
++(* Pierre Weis && Damien Doligez, INRIA Rocquencourt *)
++(* *)
++(* Copyright 1998 Institut National de Recherche en Informatique et *)
++(* en Automatique. All rights reserved. This file is distributed *)
++(* under the terms of the Q Public License version 1.0. *)
++(* *)
++(***********************************************************************)
++
++open Format
++
++type t =
++ | Comment_start (* 1 *)
++ | Comment_not_end (* 2 *)
++ | Deprecated of string (* 3 *)
++ | Fragile_match of string (* 4 *)
++ | Partial_application (* 5 *)
++ | Labels_omitted (* 6 *)
++ | Method_override of string list (* 7 *)
++ | Partial_match of string (* 8 *)
++ | Non_closed_record_pattern of string (* 9 *)
++ | Statement_type (* 10 *)
++ | Unused_match (* 11 *)
++ | Unused_pat (* 12 *)
++ | Instance_variable_override of string list (* 13 *)
++ | Illegal_backslash (* 14 *)
++ | Implicit_public_methods of string list (* 15 *)
++ | Unerasable_optional_argument (* 16 *)
++ | Undeclared_virtual_method of string (* 17 *)
++ | Not_principal of string (* 18 *)
++ | Without_principality of string (* 19 *)
++ | Unused_argument (* 20 *)
++ | Nonreturning_statement (* 21 *)
++ | Camlp4 of string (* 22 *)
++ | Useless_record_with (* 23 *)
++ | Bad_module_name of string (* 24 *)
++ | All_clauses_guarded (* 25 *)
++ | Unused_var of string (* 26 *)
++ | Unused_var_strict of string (* 27 *)
++ | Wildcard_arg_to_constant_constr (* 28 *)
++ | Eol_in_string (* 29 *)
++ | Duplicate_definitions of string * string * string * string (* 30 *)
++ | Multiple_definition of string * string * string (* 31 *)
++ | Unused_value_declaration of string (* 32 *)
++ | Unused_open of string (* 33 *)
++ | Unused_type_declaration of string (* 34 *)
++ | Unused_for_index of string (* 35 *)
++ | Unused_ancestor of string (* 36 *)
++ | Unused_constructor of string * bool * bool (* 37 *)
++ | Unused_exception of string * bool (* 38 *)
++ | Unused_rec_flag (* 39 *)
++ | Name_out_of_scope of string * string list * bool (* 40 *)
++ | Ambiguous_name of string list * string list * bool (* 41 *)
++ | Disambiguated_name of string (* 42 *)
++ | Nonoptional_label of string (* 43 *)
++ | Open_shadow_identifier of string * string (* 44 *)
++ | Open_shadow_label_constructor of string * string (* 45 *)
++ | Bad_env_variable of string * string
++;;
++
++val parse_options : bool -> string -> unit;;
++
++val is_active : t -> bool;;
++val is_error : t -> bool;;
++
++val defaults_w : string;;
++val defaults_warn_error : string;;
++
++val print : formatter -> t -> int;;
++ (* returns the number of newlines in the printed string *)
++
++
++exception Errors of int;;
++
++val check_fatal : unit -> unit;;
++
++val help_warnings: unit -> unit
+diff -urN camlp5-6.11/ocaml_stuff/4.02.0/parsing/asttypes.mli camlp5-6.12-63a8c30f/ocaml_stuff/4.02.0/parsing/asttypes.mli
+--- camlp5-6.11/ocaml_stuff/4.02.0/parsing/asttypes.mli 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.02.0/parsing/asttypes.mli 2014-08-01 10:14:54.343065456 +0100
+@@ -0,0 +1,49 @@
++(***********************************************************************)
++(* *)
++(* OCaml *)
++(* *)
++(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
++(* *)
++(* Copyright 1996 Institut National de Recherche en Informatique et *)
++(* en Automatique. All rights reserved. This file is distributed *)
++(* under the terms of the Q Public License version 1.0. *)
++(* *)
++(***********************************************************************)
++
++(* Auxiliary a.s.t. types used by parsetree and typedtree. *)
++
++type constant =
++ Const_int of int
++ | Const_char of char
++ | Const_string of string * string option
++ | Const_float of string
++ | Const_int32 of int32
++ | Const_int64 of int64
++ | Const_nativeint of nativeint
++
++type rec_flag = Nonrecursive | Recursive
++
++type direction_flag = Upto | Downto
++
++type private_flag = Private | Public
++
++type mutable_flag = Immutable | Mutable
++
++type virtual_flag = Virtual | Concrete
++
++type override_flag = Override | Fresh
++
++type closed_flag = Closed | Open
++
++type label = string
++
++type 'a loc = 'a Location.loc = {
++ txt : 'a;
++ loc : Location.t;
++}
++
++
++type variance =
++ | Covariant
++ | Contravariant
++ | Invariant
+diff -urN camlp5-6.11/ocaml_stuff/4.02.0/parsing/.depend camlp5-6.12-63a8c30f/ocaml_stuff/4.02.0/parsing/.depend
+--- camlp5-6.11/ocaml_stuff/4.02.0/parsing/.depend 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.02.0/parsing/.depend 2014-08-01 10:14:54.343065456 +0100
+@@ -0,0 +1,4 @@
++asttypes.cmi : location.cmi
++location.cmi : ../utils/warnings.cmi
++longident.cmi :
++parsetree.cmi : longident.cmi location.cmi asttypes.cmi
+diff -urN camlp5-6.11/ocaml_stuff/4.02.0/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/4.02.0/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/4.02.0/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.02.0/parsing/.gitignore 2014-08-01 10:14:54.343065456 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/4.02.0/parsing/location.mli camlp5-6.12-63a8c30f/ocaml_stuff/4.02.0/parsing/location.mli
+--- camlp5-6.11/ocaml_stuff/4.02.0/parsing/location.mli 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.02.0/parsing/location.mli 2014-08-01 10:14:54.343065456 +0100
+@@ -0,0 +1,116 @@
++(***********************************************************************)
++(* *)
++(* OCaml *)
++(* *)
++(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
++(* *)
++(* Copyright 1996 Institut National de Recherche en Informatique et *)
++(* en Automatique. All rights reserved. This file is distributed *)
++(* under the terms of the Q Public License version 1.0. *)
++(* *)
++(***********************************************************************)
++
++(* Source code locations (ranges of positions), used in parsetree. *)
++
++open Format
++
++type t = {
++ loc_start: Lexing.position;
++ loc_end: Lexing.position;
++ loc_ghost: bool;
++}
++
++(* Note on the use of Lexing.position in this module.
++ If [pos_fname = ""], then use [!input_name] instead.
++ If [pos_lnum = -1], then [pos_bol = 0]. Use [pos_cnum] and
++ re-parse the file to get the line and character numbers.
++ Else all fields are correct.
++*)
++
++val none : t
++(** An arbitrary value of type [t]; describes an empty ghost range. *)
++val in_file : string -> t;;
++(** Return an empty ghost range located in a given file. *)
++val init : Lexing.lexbuf -> string -> unit
++(** Set the file name and line number of the [lexbuf] to be the start
++ of the named file. *)
++val curr : Lexing.lexbuf -> t
++(** Get the location of the current token from the [lexbuf]. *)
++
++val symbol_rloc: unit -> t
++val symbol_gloc: unit -> t
++
++(** [rhs_loc n] returns the location of the symbol at position [n], starting
++ at 1, in the current parser rule. *)
++val rhs_loc: int -> t
++
++val input_name: string ref
++val input_lexbuf: Lexing.lexbuf option ref
++
++val get_pos_info: Lexing.position -> string * int * int (* file, line, char *)
++val print_loc: formatter -> t -> unit
++val print_error: formatter -> t -> unit
++val print_error_cur_file: formatter -> unit
++val print_warning: t -> formatter -> Warnings.t -> unit
++val prerr_warning: t -> Warnings.t -> unit
++val echo_eof: unit -> unit
++val reset: unit -> unit
++
++val highlight_locations: formatter -> t list -> bool
++
++type 'a loc = {
++ txt : 'a;
++ loc : t;
++}
++
++val mknoloc : 'a -> 'a loc
++val mkloc : 'a -> t -> 'a loc
++
++val print: formatter -> t -> unit
++val print_filename: formatter -> string -> unit
++
++val absolute_path: string -> string
++
++val show_filename: string -> string
++ (** In -absname mode, return the absolute path for this filename.
++ Otherwise, returns the filename unchanged. *)
++
++
++val absname: bool ref
++
++
++(* Support for located errors *)
++
++type error =
++ {
++ loc: t;
++ msg: string;
++ sub: error list;
++ if_highlight: string; (* alternative message if locations are highlighted *)
++ }
++
++exception Error of error
++
++val error: ?loc:t -> ?sub:error list -> ?if_highlight:string -> string -> error
++
++val errorf: ?loc:t -> ?sub:error list -> ?if_highlight:string
++ -> ('a, unit, string, error) format4 -> 'a
++
++val error_of_printer: t -> (formatter -> 'a -> unit) -> 'a -> error
++
++val error_of_printer_file: (formatter -> 'a -> unit) -> 'a -> error
++
++val error_of_exn: exn -> error option
++
++val register_error_of_exn: (exn -> error option) -> unit
++ (* Each compiler module which defines a custom type of exception
++ which can surface as a user-visible error should register
++ a "printer" for this exception using [register_error_of_exn].
++ The result of the printer is an [error] value containing
++ a location, a message, and optionally sub-messages (each of them
++ being located as well). *)
++
++val report_error: formatter -> error -> unit
++
++val report_exception: formatter -> exn -> unit
++ (* Reraise the exception if it is unknown. *)
+diff -urN camlp5-6.11/ocaml_stuff/4.02.0/parsing/longident.mli camlp5-6.12-63a8c30f/ocaml_stuff/4.02.0/parsing/longident.mli
+--- camlp5-6.11/ocaml_stuff/4.02.0/parsing/longident.mli 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.02.0/parsing/longident.mli 2014-08-01 10:14:54.343065456 +0100
+@@ -0,0 +1,22 @@
++(***********************************************************************)
++(* *)
++(* OCaml *)
++(* *)
++(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
++(* *)
++(* Copyright 1996 Institut National de Recherche en Informatique et *)
++(* en Automatique. All rights reserved. This file is distributed *)
++(* under the terms of the Q Public License version 1.0. *)
++(* *)
++(***********************************************************************)
++
++(* Long identifiers, used in parsetree. *)
++
++type t =
++ Lident of string
++ | Ldot of t * string
++ | Lapply of t * t
++
++val flatten: t -> string list
++val last: t -> string
++val parse: string -> t
+diff -urN camlp5-6.11/ocaml_stuff/4.02.0/parsing/Makefile camlp5-6.12-63a8c30f/ocaml_stuff/4.02.0/parsing/Makefile
+--- camlp5-6.11/ocaml_stuff/4.02.0/parsing/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.02.0/parsing/Makefile 2014-08-01 10:14:54.343065456 +0100
+@@ -0,0 +1,19 @@
++# Makefile,v
++
++FILES=asttypes.cmi location.cmi longident.cmi parsetree.cmi
++INCL=-I ../utils
++
++all: $(FILES)
++
++clean:
++ rm -f *.cmi
++
++depend:
++ ocamldep $(INCL) *.ml* | sed -e 's/ *$$//' > .depend
++
++.SUFFIXES: .mli .cmi
++
++.mli.cmi:
++ $(OCAMLN)c $(INCL) -c $<
++
++include .depend
+diff -urN camlp5-6.11/ocaml_stuff/4.02.0/parsing/parsetree.mli camlp5-6.12-63a8c30f/ocaml_stuff/4.02.0/parsing/parsetree.mli
+--- camlp5-6.11/ocaml_stuff/4.02.0/parsing/parsetree.mli 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.02.0/parsing/parsetree.mli 2014-08-01 10:14:54.343065456 +0100
+@@ -0,0 +1,829 @@
++(***********************************************************************)
++(* *)
++(* OCaml *)
++(* *)
++(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
++(* *)
++(* Copyright 1996 Institut National de Recherche en Informatique et *)
++(* en Automatique. All rights reserved. This file is distributed *)
++(* under the terms of the Q Public License version 1.0. *)
++(* *)
++(***********************************************************************)
++
++(** Abstract syntax tree produced by parsing *)
++
++open Asttypes
++
++(** {2 Extension points} *)
++
++type attribute = string loc * payload
++ (* [@id ARG]
++ [@@id ARG]
++
++ Metadata containers passed around within the AST.
++ The compiler ignores unknown attributes.
++ *)
++
++and extension = string loc * payload
++ (* [%id ARG]
++ [%%id ARG]
++
++ Sub-language placeholder -- rejected by the typechecker.
++ *)
++
++and attributes = attribute list
++
++and payload =
++ | PStr of structure
++ | PTyp of core_type (* : T *)
++ | PPat of pattern * expression option (* : P or : P when E *)
++
++(** {2 Core language} *)
++
++(* Type expressions *)
++
++and core_type =
++ {
++ ptyp_desc: core_type_desc;
++ ptyp_loc: Location.t;
++ ptyp_attributes: attributes; (* ... [@id1] [@id2] *)
++ }
++
++and core_type_desc =
++ | Ptyp_any
++ (* _ *)
++ | Ptyp_var of string
++ (* 'a *)
++ | Ptyp_arrow of label * core_type * core_type
++ (* T1 -> T2 (label = "")
++ ~l:T1 -> T2 (label = "l")
++ ?l:T1 -> T2 (label = "?l")
++ *)
++ | Ptyp_tuple of core_type list
++ (* T1 * ... * Tn
++
++ Invariant: n >= 2
++ *)
++ | Ptyp_constr of Longident.t loc * core_type list
++ (* tconstr
++ T tconstr
++ (T1, ..., Tn) tconstr
++ *)
++ | Ptyp_object of (string * attributes * core_type) list * closed_flag
++ (* < l1:T1; ...; ln:Tn > (flag = Closed)
++ < l1:T1; ...; ln:Tn; .. > (flag = Open)
++ *)
++ | Ptyp_class of Longident.t loc * core_type list
++ (* #tconstr
++ T #tconstr
++ (T1, ..., Tn) #tconstr
++ *)
++ | Ptyp_alias of core_type * string
++ (* T as 'a *)
++ | Ptyp_variant of row_field list * closed_flag * label list option
++ (* [ `A|`B ] (flag = Closed; labels = None)
++ [> `A|`B ] (flag = Open; labels = None)
++ [< `A|`B ] (flag = Closed; labels = Some [])
++ [< `A|`B > `X `Y ](flag = Closed; labels = Some ["X";"Y"])
++ *)
++ | Ptyp_poly of string list * core_type
++ (* 'a1 ... 'an. T
++
++ Can only appear in the following context:
++
++ - As the core_type of a Ppat_constraint node corresponding
++ to a constraint on a let-binding: let x : 'a1 ... 'an. T
++ = e ...
++
++ - Under Cfk_virtual for methods (not values).
++
++ - As the core_type of a Pctf_method node.
++
++ - As the core_type of a Pexp_poly node.
++
++ - As the pld_type field of a label_declaration.
++
++ - As a core_type of a Ptyp_object node.
++ *)
++
++ | Ptyp_package of package_type
++ (* (module S) *)
++ | Ptyp_extension of extension
++ (* [%id] *)
++
++and package_type = Longident.t loc * (Longident.t loc * core_type) list
++ (*
++ (module S)
++ (module S with type t1 = T1 and ... and tn = Tn)
++ *)
++
++and row_field =
++ | Rtag of label * attributes * bool * core_type list
++ (* [`A] ( true, [] )
++ [`A of T] ( false, [T] )
++ [`A of T1 & .. & Tn] ( false, [T1;...Tn] )
++ [`A of & T1 & .. & Tn] ( true, [T1;...Tn] )
++
++ - The 2nd field is true if the tag contains a
++ constant (empty) constructor.
++ - '&' occurs when several types are used for the same constructor
++ (see 4.2 in the manual)
++
++ - TODO: switch to a record representation, and keep location
++ *)
++ | Rinherit of core_type
++ (* [ T ] *)
++
++(* Patterns *)
++
++and pattern =
++ {
++ ppat_desc: pattern_desc;
++ ppat_loc: Location.t;
++ ppat_attributes: attributes; (* ... [@id1] [@id2] *)
++ }
++
++and pattern_desc =
++ | Ppat_any
++ (* _ *)
++ | Ppat_var of string loc
++ (* x *)
++ | Ppat_alias of pattern * string loc
++ (* P as 'a *)
++ | Ppat_constant of constant
++ (* 1, 'a', "true", 1.0, 1l, 1L, 1n *)
++ | Ppat_interval of constant * constant
++ (* 'a'..'z'
++
++ Other forms of interval are recognized by the parser
++ but rejected by the type-checker. *)
++ | Ppat_tuple of pattern list
++ (* (P1, ..., Pn)
++
++ Invariant: n >= 2
++ *)
++ | Ppat_construct of Longident.t loc * pattern option
++ (* C None
++ C P Some P
++ C (P1, ..., Pn) Some (Ppat_tuple [P1; ...; Pn])
++ *)
++ | Ppat_variant of label * pattern option
++ (* `A (None)
++ `A P (Some P)
++ *)
++ | Ppat_record of (Longident.t loc * pattern) list * closed_flag
++ (* { l1=P1; ...; ln=Pn } (flag = Closed)
++ { l1=P1; ...; ln=Pn; _} (flag = Open)
++
++ Invariant: n > 0
++ *)
++ | Ppat_array of pattern list
++ (* [| P1; ...; Pn |] *)
++ | Ppat_or of pattern * pattern
++ (* P1 | P2 *)
++ | Ppat_constraint of pattern * core_type
++ (* (P : T) *)
++ | Ppat_type of Longident.t loc
++ (* #tconst *)
++ | Ppat_lazy of pattern
++ (* lazy P *)
++ | Ppat_unpack of string loc
++ (* (module P)
++ Note: (module P : S) is represented as
++ Ppat_constraint(Ppat_unpack, Ptyp_package)
++ *)
++ | Ppat_exception of pattern
++ (* exception P *)
++ | Ppat_extension of extension
++ (* [%id] *)
++
++(* Value expressions *)
++
++and expression =
++ {
++ pexp_desc: expression_desc;
++ pexp_loc: Location.t;
++ pexp_attributes: attributes; (* ... [@id1] [@id2] *)
++ }
++
++and expression_desc =
++ | Pexp_ident of Longident.t loc
++ (* x
++ M.x
++ *)
++ | Pexp_constant of constant
++ (* 1, 'a', "true", 1.0, 1l, 1L, 1n *)
++ | Pexp_let of rec_flag * value_binding list * expression
++ (* let P1 = E1 and ... and Pn = EN in E (flag = Nonrecursive)
++ let rec P1 = E1 and ... and Pn = EN in E (flag = Recursive)
++ *)
++ | Pexp_function of case list
++ (* function P1 -> E1 | ... | Pn -> En *)
++ | Pexp_fun of label * expression option * pattern * expression
++ (* fun P -> E1 (lab = "", None)
++ fun ~l:P -> E1 (lab = "l", None)
++ fun ?l:P -> E1 (lab = "?l", None)
++ fun ?l:(P = E0) -> E1 (lab = "?l", Some E0)
++
++ Notes:
++ - If E0 is provided, lab must start with '?'.
++ - "fun P1 P2 .. Pn -> E1" is represented as nested Pexp_fun.
++ - "let f P = E" is represented using Pexp_fun.
++ *)
++ | Pexp_apply of expression * (label * expression) list
++ (* E0 ~l1:E1 ... ~ln:En
++ li can be empty (non labeled argument) or start with '?'
++ (optional argument).
++
++ Invariant: n > 0
++ *)
++ | Pexp_match of expression * case list
++ (* match E0 with P1 -> E1 | ... | Pn -> En *)
++ | Pexp_try of expression * case list
++ (* try E0 with P1 -> E1 | ... | Pn -> En *)
++ | Pexp_tuple of expression list
++ (* (E1, ..., En)
++
++ Invariant: n >= 2
++ *)
++ | Pexp_construct of Longident.t loc * expression option
++ (* C None
++ C E Some E
++ C (E1, ..., En) Some (Pexp_tuple[E1;...;En])
++ *)
++ | Pexp_variant of label * expression option
++ (* `A (None)
++ `A E (Some E)
++ *)
++ | Pexp_record of (Longident.t loc * expression) list * expression option
++ (* { l1=P1; ...; ln=Pn } (None)
++ { E0 with l1=P1; ...; ln=Pn } (Some E0)
++
++ Invariant: n > 0
++ *)
++ | Pexp_field of expression * Longident.t loc
++ (* E.l *)
++ | Pexp_setfield of expression * Longident.t loc * expression
++ (* E1.l <- E2 *)
++ | Pexp_array of expression list
++ (* [| E1; ...; En |] *)
++ | Pexp_ifthenelse of expression * expression * expression option
++ (* if E1 then E2 else E3 *)
++ | Pexp_sequence of expression * expression
++ (* E1; E2 *)
++ | Pexp_while of expression * expression
++ (* while E1 do E2 done *)
++ | Pexp_for of
++ pattern * expression * expression * direction_flag * expression
++ (* for i = E1 to E2 do E3 done (flag = Upto)
++ for i = E1 downto E2 do E3 done (flag = Downto)
++ *)
++ | Pexp_constraint of expression * core_type
++ (* (E : T) *)
++ | Pexp_coerce of expression * core_type option * core_type
++ (* (E :> T) (None, T)
++ (E : T0 :> T) (Some T0, T)
++ *)
++ | Pexp_send of expression * string
++ (* E # m *)
++ | Pexp_new of Longident.t loc
++ (* new M.c *)
++ | Pexp_setinstvar of string loc * expression
++ (* x <- 2 *)
++ | Pexp_override of (string loc * expression) list
++ (* {< x1 = E1; ...; Xn = En >} *)
++ | Pexp_letmodule of string loc * module_expr * expression
++ (* let module M = ME in E *)
++ | Pexp_assert of expression
++ (* assert E
++ Note: "assert false" is treated in a special way by the
++ type-checker. *)
++ | Pexp_lazy of expression
++ (* lazy E *)
++ | Pexp_poly of expression * core_type option
++ (* Used for method bodies.
++
++ Can only be used as the expression under Cfk_concrete
++ for methods (not values). *)
++ | Pexp_object of class_structure
++ (* object ... end *)
++ | Pexp_newtype of string * expression
++ (* fun (type t) -> E *)
++ | Pexp_pack of module_expr
++ (* (module ME)
++
++ (module ME : S) is represented as
++ Pexp_constraint(Pexp_pack, Ptyp_package S) *)
++ | Pexp_open of override_flag * Longident.t loc * expression
++ (* let open M in E
++ let! open M in E
++ *)
++ | Pexp_extension of extension
++ (* [%id] *)
++
++and case = (* (P -> E) or (P when E0 -> E) *)
++ {
++ pc_lhs: pattern;
++ pc_guard: expression option;
++ pc_rhs: expression;
++ }
++
++(* Value descriptions *)
++
++and value_description =
++ {
++ pval_name: string loc;
++ pval_type: core_type;
++ pval_prim: string list;
++ pval_attributes: attributes; (* ... [@@id1] [@@id2] *)
++ pval_loc: Location.t;
++ }
++
++(*
++ val x: T (prim = [])
++ external x: T = "s1" ... "sn" (prim = ["s1";..."sn"])
++
++ Note: when used under Pstr_primitive, prim cannot be empty
++*)
++
++(* Type declarations *)
++
++and type_declaration =
++ {
++ ptype_name: string loc;
++ ptype_params: (core_type * variance) list;
++ (* ('a1,...'an) t; None represents _*)
++ ptype_cstrs: (core_type * core_type * Location.t) list;
++ (* ... constraint T1=T1' ... constraint Tn=Tn' *)
++ ptype_kind: type_kind;
++ ptype_private: private_flag; (* = private ... *)
++ ptype_manifest: core_type option; (* = T *)
++ ptype_attributes: attributes; (* ... [@@id1] [@@id2] *)
++ ptype_loc: Location.t;
++ }
++
++(*
++ type t (abstract, no manifest)
++ type t = T0 (abstract, manifest=T0)
++ type t = C of T | ... (variant, no manifest)
++ type t = T0 = C of T | ... (variant, manifest=T0)
++ type t = {l: T; ...} (record, no manifest)
++ type t = T0 = {l : T; ...} (record, manifest=T0)
++ type t = .. (open, no manifest)
++*)
++
++and type_kind =
++ | Ptype_abstract
++ | Ptype_variant of constructor_declaration list
++ (* Invariant: non-empty list *)
++ | Ptype_record of label_declaration list
++ (* Invariant: non-empty list *)
++ | Ptype_open
++
++and label_declaration =
++ {
++ pld_name: string loc;
++ pld_mutable: mutable_flag;
++ pld_type: core_type;
++ pld_loc: Location.t;
++ pld_attributes: attributes; (* l [@id1] [@id2] : T *)
++ }
++
++(* { ...; l: T; ... } (mutable=Immutable)
++ { ...; mutable l: T; ... } (mutable=Mutable)
++
++ Note: T can be a Pexp_poly.
++*)
++
++and constructor_declaration =
++ {
++ pcd_name: string loc;
++ pcd_args: core_type list;
++ pcd_res: core_type option;
++ pcd_loc: Location.t;
++ pcd_attributes: attributes; (* C [@id1] [@id2] of ... *)
++ }
++(*
++ | C of T1 * ... * Tn (res = None)
++ | C: T0 (args = [], res = Some T0)
++ | C: T1 * ... * Tn -> T0 (res = Some T0)
++*)
++
++and type_extension =
++ {
++ ptyext_path: Longident.t loc;
++ ptyext_params: (core_type * variance) list;
++ ptyext_constructors: extension_constructor list;
++ ptyext_private: private_flag;
++ ptyext_attributes: attributes; (* ... [@@id1] [@@id2] *)
++ }
++(*
++ type t += ...
++*)
++
++and extension_constructor =
++ {
++ pext_name: string loc;
++ pext_kind : extension_constructor_kind;
++ pext_loc : Location.t;
++ pext_attributes: attributes; (* C [@id1] [@id2] of ... *)
++ }
++
++and extension_constructor_kind =
++ Pext_decl of core_type list * core_type option
++ (*
++ | C of T1 * ... * Tn ([T1; ...; Tn], None)
++ | C: T0 ([], Some T0)
++ | C: T1 * ... * Tn -> T0 ([T1; ...; Tn], Some T0)
++ *)
++ | Pext_rebind of Longident.t loc
++ (*
++ | C = D
++ *)
++
++(** {2 Class language} *)
++
++(* Type expressions for the class language *)
++
++and class_type =
++ {
++ pcty_desc: class_type_desc;
++ pcty_loc: Location.t;
++ pcty_attributes: attributes; (* ... [@id1] [@id2] *)
++ }
++
++and class_type_desc =
++ | Pcty_constr of Longident.t loc * core_type list
++ (* c
++ ['a1, ..., 'an] c *)
++ | Pcty_signature of class_signature
++ (* object ... end *)
++ | Pcty_arrow of label * core_type * class_type
++ (* T -> CT (label = "")
++ ~l:T -> CT (label = "l")
++ ?l:T -> CT (label = "?l")
++ *)
++ | Pcty_extension of extension
++ (* [%id] *)
++
++and class_signature =
++ {
++ pcsig_self: core_type;
++ pcsig_fields: class_type_field list;
++ }
++(* object('selfpat) ... end
++ object ... end (self = Ptyp_any)
++ *)
++
++and class_type_field =
++ {
++ pctf_desc: class_type_field_desc;
++ pctf_loc: Location.t;
++ pctf_attributes: attributes; (* ... [@@id1] [@@id2] *)
++ }
++
++and class_type_field_desc =
++ | Pctf_inherit of class_type
++ (* inherit CT *)
++ | Pctf_val of (string * mutable_flag * virtual_flag * core_type)
++ (* val x: T *)
++ | Pctf_method of (string * private_flag * virtual_flag * core_type)
++ (* method x: T
++
++ Note: T can be a Pexp_poly.
++ *)
++ | Pctf_constraint of (core_type * core_type)
++ (* constraint T1 = T2 *)
++ | Pctf_attribute of attribute
++ (* [@@@id] *)
++ | Pctf_extension of extension
++ (* [%%id] *)
++
++and 'a class_infos =
++ {
++ pci_virt: virtual_flag;
++ pci_params: (core_type * variance) list;
++ pci_name: string loc;
++ pci_expr: 'a;
++ pci_loc: Location.t;
++ pci_attributes: attributes; (* ... [@@id1] [@@id2] *)
++ }
++(* class c = ...
++ class ['a1,...,'an] c = ...
++ class virtual c = ...
++
++ Also used for "class type" declaration.
++*)
++
++and class_description = class_type class_infos
++
++and class_type_declaration = class_type class_infos
++
++(* Value expressions for the class language *)
++
++and class_expr =
++ {
++ pcl_desc: class_expr_desc;
++ pcl_loc: Location.t;
++ pcl_attributes: attributes; (* ... [@id1] [@id2] *)
++ }
++
++and class_expr_desc =
++ | Pcl_constr of Longident.t loc * core_type list
++ (* c
++ ['a1, ..., 'an] c *)
++ | Pcl_structure of class_structure
++ (* object ... end *)
++ | Pcl_fun of label * expression option * pattern * class_expr
++ (* fun P -> CE (lab = "", None)
++ fun ~l:P -> CE (lab = "l", None)
++ fun ?l:P -> CE (lab = "?l", None)
++ fun ?l:(P = E0) -> CE (lab = "?l", Some E0)
++ *)
++ | Pcl_apply of class_expr * (label * expression) list
++ (* CE ~l1:E1 ... ~ln:En
++ li can be empty (non labeled argument) or start with '?'
++ (optional argument).
++
++ Invariant: n > 0
++ *)
++ | Pcl_let of rec_flag * value_binding list * class_expr
++ (* let P1 = E1 and ... and Pn = EN in CE (flag = Nonrecursive)
++ let rec P1 = E1 and ... and Pn = EN in CE (flag = Recursive)
++ *)
++ | Pcl_constraint of class_expr * class_type
++ (* (CE : CT) *)
++ | Pcl_extension of extension
++ (* [%id] *)
++
++and class_structure =
++ {
++ pcstr_self: pattern;
++ pcstr_fields: class_field list;
++ }
++(* object(selfpat) ... end
++ object ... end (self = Ppat_any)
++ *)
++
++and class_field =
++ {
++ pcf_desc: class_field_desc;
++ pcf_loc: Location.t;
++ pcf_attributes: attributes; (* ... [@@id1] [@@id2] *)
++ }
++
++and class_field_desc =
++ | Pcf_inherit of override_flag * class_expr * string option
++ (* inherit CE
++ inherit CE as x
++ inherit! CE
++ inherit! CE as x
++ *)
++ | Pcf_val of (string loc * mutable_flag * class_field_kind)
++ (* val x = E
++ val virtual x: T
++ *)
++ | Pcf_method of (string loc * private_flag * class_field_kind)
++ (* method x = E (E can be a Pexp_poly)
++ method virtual x: T (T can be a Ptyp_poly)
++ *)
++ | Pcf_constraint of (core_type * core_type)
++ (* constraint T1 = T2 *)
++ | Pcf_initializer of expression
++ (* initializer E *)
++ | Pcf_attribute of attribute
++ (* [@@@id] *)
++ | Pcf_extension of extension
++ (* [%%id] *)
++
++and class_field_kind =
++ | Cfk_virtual of core_type
++ | Cfk_concrete of override_flag * expression
++
++and class_declaration = class_expr class_infos
++
++(** {2 Module language} *)
++
++(* Type expressions for the module language *)
++
++and module_type =
++ {
++ pmty_desc: module_type_desc;
++ pmty_loc: Location.t;
++ pmty_attributes: attributes; (* ... [@id1] [@id2] *)
++ }
++
++and module_type_desc =
++ | Pmty_ident of Longident.t loc
++ (* S *)
++ | Pmty_signature of signature
++ (* sig ... end *)
++ | Pmty_functor of string loc * module_type option * module_type
++ (* functor(X : MT1) -> MT2 *)
++ | Pmty_with of module_type * with_constraint list
++ (* MT with ... *)
++ | Pmty_typeof of module_expr
++ (* module type of ME *)
++ | Pmty_extension of extension
++ (* [%id] *)
++ | Pmty_alias of Longident.t loc
++ (* (module M) *)
++
++and signature = signature_item list
++
++and signature_item =
++ {
++ psig_desc: signature_item_desc;
++ psig_loc: Location.t;
++ }
++
++and signature_item_desc =
++ | Psig_value of value_description
++ (*
++ val x: T
++ external x: T = "s1" ... "sn"
++ *)
++ | Psig_type of type_declaration list
++ (* type t1 = ... and ... and tn = ... *)
++ | Psig_typext of type_extension
++ (* type t1 += ... *)
++ | Psig_exception of extension_constructor
++ (* exception C of T *)
++ | Psig_module of module_declaration
++ (* module X : MT *)
++ | Psig_recmodule of module_declaration list
++ (* module rec X1 : MT1 and ... and Xn : MTn *)
++ | Psig_modtype of module_type_declaration
++ (* module type S = MT
++ module type S *)
++ | Psig_open of open_description
++ (* open X *)
++ | Psig_include of include_description
++ (* include MT *)
++ | Psig_class of class_description list
++ (* class c1 : ... and ... and cn : ... *)
++ | Psig_class_type of class_type_declaration list
++ (* class type ct1 = ... and ... and ctn = ... *)
++ | Psig_attribute of attribute
++ (* [@@@id] *)
++ | Psig_extension of extension * attributes
++ (* [%%id] *)
++
++and module_declaration =
++ {
++ pmd_name: string loc;
++ pmd_type: module_type;
++ pmd_attributes: attributes; (* ... [@@id1] [@@id2] *)
++ pmd_loc: Location.t;
++ }
++(* S : MT *)
++
++and module_type_declaration =
++ {
++ pmtd_name: string loc;
++ pmtd_type: module_type option;
++ pmtd_attributes: attributes; (* ... [@@id1] [@@id2] *)
++ pmtd_loc: Location.t;
++ }
++(* S = MT
++ S (abstract module type declaration, pmtd_type = None)
++*)
++
++and open_description =
++ {
++ popen_lid: Longident.t loc;
++ popen_override: override_flag;
++ popen_loc: Location.t;
++ popen_attributes: attributes;
++ }
++(* open! X - popen_override = Override (silences the 'used identifier
++ shadowing' warning)
++ open X - popen_override = Fresh
++ *)
++
++and 'a include_infos =
++ {
++ pincl_mod: 'a;
++ pincl_loc: Location.t;
++ pincl_attributes: attributes;
++ }
++
++and include_description = module_type include_infos
++(* include MT *)
++
++and include_declaration = module_expr include_infos
++(* include ME *)
++
++and with_constraint =
++ | Pwith_type of Longident.t loc * type_declaration
++ (* with type X.t = ...
++
++ Note: the last component of the longident must match
++ the name of the type_declaration. *)
++ | Pwith_module of Longident.t loc * Longident.t loc
++ (* with module X.Y = Z *)
++ | Pwith_typesubst of type_declaration
++ (* with type t := ... *)
++ | Pwith_modsubst of string loc * Longident.t loc
++ (* with module X := Z *)
++
++(* Value expressions for the module language *)
++
++and module_expr =
++ {
++ pmod_desc: module_expr_desc;
++ pmod_loc: Location.t;
++ pmod_attributes: attributes; (* ... [@id1] [@id2] *)
++ }
++
++and module_expr_desc =
++ | Pmod_ident of Longident.t loc
++ (* X *)
++ | Pmod_structure of structure
++ (* struct ... end *)
++ | Pmod_functor of string loc * module_type option * module_expr
++ (* functor(X : MT1) -> ME *)
++ | Pmod_apply of module_expr * module_expr
++ (* ME1(ME2) *)
++ | Pmod_constraint of module_expr * module_type
++ (* (ME : MT) *)
++ | Pmod_unpack of expression
++ (* (val E) *)
++ | Pmod_extension of extension
++ (* [%id] *)
++
++and structure = structure_item list
++
++and structure_item =
++ {
++ pstr_desc: structure_item_desc;
++ pstr_loc: Location.t;
++ }
++
++and structure_item_desc =
++ | Pstr_eval of expression * attributes
++ (* E *)
++ | Pstr_value of rec_flag * value_binding list
++ (* let P1 = E1 and ... and Pn = EN (flag = Nonrecursive)
++ let rec P1 = E1 and ... and Pn = EN (flag = Recursive)
++ *)
++ | Pstr_primitive of value_description
++ (* external x: T = "s1" ... "sn" *)
++ | Pstr_type of type_declaration list
++ (* type t1 = ... and ... and tn = ... *)
++ | Pstr_typext of type_extension
++ (* type t1 += ... *)
++ | Pstr_exception of extension_constructor
++ (* exception C of T
++ exception C = M.X *)
++ | Pstr_module of module_binding
++ (* module X = ME *)
++ | Pstr_recmodule of module_binding list
++ (* module rec X1 = ME1 and ... and Xn = MEn *)
++ | Pstr_modtype of module_type_declaration
++ (* module type S = MT *)
++ | Pstr_open of open_description
++ (* open X *)
++ | Pstr_class of class_declaration list
++ (* class c1 = ... and ... and cn = ... *)
++ | Pstr_class_type of class_type_declaration list
++ (* class type ct1 = ... and ... and ctn = ... *)
++ | Pstr_include of include_declaration
++ (* include ME *)
++ | Pstr_attribute of attribute
++ (* [@@@id] *)
++ | Pstr_extension of extension * attributes
++ (* [%%id] *)
++
++and value_binding =
++ {
++ pvb_pat: pattern;
++ pvb_expr: expression;
++ pvb_attributes: attributes;
++ pvb_loc: Location.t;
++ }
++
++and module_binding =
++ {
++ pmb_name: string loc;
++ pmb_expr: module_expr;
++ pmb_attributes: attributes;
++ pmb_loc: Location.t;
++ }
++(* X = ME *)
++
++(** {2 Toplevel} *)
++
++(* Toplevel phrases *)
++
++type toplevel_phrase =
++ | Ptop_def of structure
++ | Ptop_dir of string * directive_argument
++ (* #use, #load ... *)
++
++and directive_argument =
++ | Pdir_none
++ | Pdir_string of string
++ | Pdir_int of int
++ | Pdir_ident of Longident.t
++ | Pdir_bool of bool
+diff -urN camlp5-6.11/ocaml_stuff/4.02.0/utils/.depend camlp5-6.12-63a8c30f/ocaml_stuff/4.02.0/utils/.depend
+--- camlp5-6.11/ocaml_stuff/4.02.0/utils/.depend 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.02.0/utils/.depend 2014-08-01 10:14:54.343065456 +0100
+@@ -0,0 +1,2 @@
++pconfig.cmo: pconfig.cmi
++pconfig.cmx: pconfig.cmi
+diff -urN camlp5-6.11/ocaml_stuff/4.02.0/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/4.02.0/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/4.02.0/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.02.0/utils/.gitignore 2014-08-01 10:14:54.343065456 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/4.02.0/utils/Makefile camlp5-6.12-63a8c30f/ocaml_stuff/4.02.0/utils/Makefile
+--- camlp5-6.11/ocaml_stuff/4.02.0/utils/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.02.0/utils/Makefile 2014-08-01 10:14:54.344065456 +0100
+@@ -0,0 +1,27 @@
++# Makefile,v
++
++FILES=warnings.cmi pconfig.cmo
++INCL=
++
++all: $(FILES)
++
++opt: pconfig.cmx
++
++clean:
++ rm -f *.cm[oix] *.o
++
++depend:
++ ocamldep $(INCL) *.ml* | sed -e 's/ *$$//' > .depend
++
++.SUFFIXES: .mli .cmi .ml .cmo .cmx
++
++.mli.cmi:
++ $(OCAMLN)c $(INCL) -c $<
++
++.ml.cmo:
++ $(OCAMLN)c $(INCL) -c $<
++
++.ml.cmx:
++ $(OCAMLN)opt $(INCL) -c $<
++
++include .depend
+diff -urN camlp5-6.11/ocaml_stuff/4.02.0/utils/pconfig.ml camlp5-6.12-63a8c30f/ocaml_stuff/4.02.0/utils/pconfig.ml
+--- camlp5-6.11/ocaml_stuff/4.02.0/utils/pconfig.ml 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.02.0/utils/pconfig.ml 2014-08-01 10:14:54.344065456 +0100
+@@ -0,0 +1,4 @@
++let ocaml_version = "4.02.0"
++let ocaml_name = "ocaml"
++let ast_impl_magic_number = "Caml1999M016"
++let ast_intf_magic_number = "Caml1999N015"
+diff -urN camlp5-6.11/ocaml_stuff/4.02.0/utils/pconfig.mli camlp5-6.12-63a8c30f/ocaml_stuff/4.02.0/utils/pconfig.mli
+--- camlp5-6.11/ocaml_stuff/4.02.0/utils/pconfig.mli 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.02.0/utils/pconfig.mli 2014-08-01 10:14:54.344065456 +0100
+@@ -0,0 +1,4 @@
++val ocaml_version : string
++val ocaml_name : string
++val ast_impl_magic_number : string
++val ast_intf_magic_number : string
+diff -urN camlp5-6.11/ocaml_stuff/4.02.0/utils/warnings.mli camlp5-6.12-63a8c30f/ocaml_stuff/4.02.0/utils/warnings.mli
+--- camlp5-6.11/ocaml_stuff/4.02.0/utils/warnings.mli 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.02.0/utils/warnings.mli 2014-08-01 10:14:54.344065456 +0100
+@@ -0,0 +1,87 @@
++(***********************************************************************)
++(* *)
++(* OCaml *)
++(* *)
++(* Pierre Weis && Damien Doligez, INRIA Rocquencourt *)
++(* *)
++(* Copyright 1998 Institut National de Recherche en Informatique et *)
++(* en Automatique. All rights reserved. This file is distributed *)
++(* under the terms of the Q Public License version 1.0. *)
++(* *)
++(***********************************************************************)
++
++open Format
++
++type t =
++ | Comment_start (* 1 *)
++ | Comment_not_end (* 2 *)
++ | Deprecated of string (* 3 *)
++ | Fragile_match of string (* 4 *)
++ | Partial_application (* 5 *)
++ | Labels_omitted (* 6 *)
++ | Method_override of string list (* 7 *)
++ | Partial_match of string (* 8 *)
++ | Non_closed_record_pattern of string (* 9 *)
++ | Statement_type (* 10 *)
++ | Unused_match (* 11 *)
++ | Unused_pat (* 12 *)
++ | Instance_variable_override of string list (* 13 *)
++ | Illegal_backslash (* 14 *)
++ | Implicit_public_methods of string list (* 15 *)
++ | Unerasable_optional_argument (* 16 *)
++ | Undeclared_virtual_method of string (* 17 *)
++ | Not_principal of string (* 18 *)
++ | Without_principality of string (* 19 *)
++ | Unused_argument (* 20 *)
++ | Nonreturning_statement (* 21 *)
++ | Preprocessor of string (* 22 *)
++ | Useless_record_with (* 23 *)
++ | Bad_module_name of string (* 24 *)
++ | All_clauses_guarded (* 25 *)
++ | Unused_var of string (* 26 *)
++ | Unused_var_strict of string (* 27 *)
++ | Wildcard_arg_to_constant_constr (* 28 *)
++ | Eol_in_string (* 29 *)
++ | Duplicate_definitions of string * string * string * string (* 30 *)
++ | Multiple_definition of string * string * string (* 31 *)
++ | Unused_value_declaration of string (* 32 *)
++ | Unused_open of string (* 33 *)
++ | Unused_type_declaration of string (* 34 *)
++ | Unused_for_index of string (* 35 *)
++ | Unused_ancestor of string (* 36 *)
++ | Unused_constructor of string * bool * bool (* 37 *)
++ | Unused_extension of string * bool * bool (* 38 *)
++ | Unused_rec_flag (* 39 *)
++ | Name_out_of_scope of string * string list * bool (* 40 *)
++ | Ambiguous_name of string list * string list * bool (* 41 *)
++ | Disambiguated_name of string (* 42 *)
++ | Nonoptional_label of string (* 43 *)
++ | Open_shadow_identifier of string * string (* 44 *)
++ | Open_shadow_label_constructor of string * string (* 45 *)
++ | Bad_env_variable of string * string (* 46 *)
++ | Attribute_payload of string * string (* 47 *)
++ | Eliminated_optional_arguments of string list (* 48 *)
++ | No_cmi_file of string (* 49 *)
++;;
++
++val parse_options : bool -> string -> unit;;
++
++val is_active : t -> bool;;
++val is_error : t -> bool;;
++
++val defaults_w : string;;
++val defaults_warn_error : string;;
++
++val print : formatter -> t -> int;;
++ (* returns the number of newlines in the printed string *)
++
++
++exception Errors of int;;
++
++val check_fatal : unit -> unit;;
++
++val help_warnings: unit -> unit
++
++type state
++val backup: unit -> state
++val restore: state -> unit
+diff -urN camlp5-6.11/ocaml_stuff/4.03.0/parsing/asttypes.mli camlp5-6.12-63a8c30f/ocaml_stuff/4.03.0/parsing/asttypes.mli
+--- camlp5-6.11/ocaml_stuff/4.03.0/parsing/asttypes.mli 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.03.0/parsing/asttypes.mli 2014-08-01 10:14:54.344065456 +0100
+@@ -0,0 +1,49 @@
++(***********************************************************************)
++(* *)
++(* OCaml *)
++(* *)
++(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
++(* *)
++(* Copyright 1996 Institut National de Recherche en Informatique et *)
++(* en Automatique. All rights reserved. This file is distributed *)
++(* under the terms of the Q Public License version 1.0. *)
++(* *)
++(***********************************************************************)
++
++(* Auxiliary a.s.t. types used by parsetree and typedtree. *)
++
++type constant =
++ Const_int of int
++ | Const_char of char
++ | Const_string of string * string option
++ | Const_float of string
++ | Const_int32 of int32
++ | Const_int64 of int64
++ | Const_nativeint of nativeint
++
++type rec_flag = Nonrecursive | Recursive
++
++type direction_flag = Upto | Downto
++
++type private_flag = Private | Public
++
++type mutable_flag = Immutable | Mutable
++
++type virtual_flag = Virtual | Concrete
++
++type override_flag = Override | Fresh
++
++type closed_flag = Closed | Open
++
++type label = string
++
++type 'a loc = 'a Location.loc = {
++ txt : 'a;
++ loc : Location.t;
++}
++
++
++type variance =
++ | Covariant
++ | Contravariant
++ | Invariant
+diff -urN camlp5-6.11/ocaml_stuff/4.03.0/parsing/.depend camlp5-6.12-63a8c30f/ocaml_stuff/4.03.0/parsing/.depend
+--- camlp5-6.11/ocaml_stuff/4.03.0/parsing/.depend 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.03.0/parsing/.depend 2014-08-01 10:14:54.344065456 +0100
+@@ -0,0 +1,4 @@
++asttypes.cmi : location.cmi
++location.cmi : ../utils/warnings.cmi
++longident.cmi :
++parsetree.cmi : longident.cmi location.cmi asttypes.cmi
+diff -urN camlp5-6.11/ocaml_stuff/4.03.0/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/4.03.0/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/4.03.0/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.03.0/parsing/.gitignore 2014-08-01 10:14:54.344065456 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/4.03.0/parsing/location.mli camlp5-6.12-63a8c30f/ocaml_stuff/4.03.0/parsing/location.mli
+--- camlp5-6.11/ocaml_stuff/4.03.0/parsing/location.mli 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.03.0/parsing/location.mli 2014-08-01 10:14:54.344065456 +0100
+@@ -0,0 +1,116 @@
++(***********************************************************************)
++(* *)
++(* OCaml *)
++(* *)
++(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
++(* *)
++(* Copyright 1996 Institut National de Recherche en Informatique et *)
++(* en Automatique. All rights reserved. This file is distributed *)
++(* under the terms of the Q Public License version 1.0. *)
++(* *)
++(***********************************************************************)
++
++(* Source code locations (ranges of positions), used in parsetree. *)
++
++open Format
++
++type t = {
++ loc_start: Lexing.position;
++ loc_end: Lexing.position;
++ loc_ghost: bool;
++}
++
++(* Note on the use of Lexing.position in this module.
++ If [pos_fname = ""], then use [!input_name] instead.
++ If [pos_lnum = -1], then [pos_bol = 0]. Use [pos_cnum] and
++ re-parse the file to get the line and character numbers.
++ Else all fields are correct.
++*)
++
++val none : t
++(** An arbitrary value of type [t]; describes an empty ghost range. *)
++val in_file : string -> t;;
++(** Return an empty ghost range located in a given file. *)
++val init : Lexing.lexbuf -> string -> unit
++(** Set the file name and line number of the [lexbuf] to be the start
++ of the named file. *)
++val curr : Lexing.lexbuf -> t
++(** Get the location of the current token from the [lexbuf]. *)
++
++val symbol_rloc: unit -> t
++val symbol_gloc: unit -> t
++
++(** [rhs_loc n] returns the location of the symbol at position [n], starting
++ at 1, in the current parser rule. *)
++val rhs_loc: int -> t
++
++val input_name: string ref
++val input_lexbuf: Lexing.lexbuf option ref
++
++val get_pos_info: Lexing.position -> string * int * int (* file, line, char *)
++val print_loc: formatter -> t -> unit
++val print_error: formatter -> t -> unit
++val print_error_cur_file: formatter -> unit
++val print_warning: t -> formatter -> Warnings.t -> unit
++val prerr_warning: t -> Warnings.t -> unit
++val echo_eof: unit -> unit
++val reset: unit -> unit
++
++val highlight_locations: formatter -> t list -> bool
++
++type 'a loc = {
++ txt : 'a;
++ loc : t;
++}
++
++val mknoloc : 'a -> 'a loc
++val mkloc : 'a -> t -> 'a loc
++
++val print: formatter -> t -> unit
++val print_filename: formatter -> string -> unit
++
++val absolute_path: string -> string
++
++val show_filename: string -> string
++ (** In -absname mode, return the absolute path for this filename.
++ Otherwise, returns the filename unchanged. *)
++
++
++val absname: bool ref
++
++
++(* Support for located errors *)
++
++type error =
++ {
++ loc: t;
++ msg: string;
++ sub: error list;
++ if_highlight: string; (* alternative message if locations are highlighted *)
++ }
++
++exception Error of error
++
++val error: ?loc:t -> ?sub:error list -> ?if_highlight:string -> string -> error
++
++val errorf: ?loc:t -> ?sub:error list -> ?if_highlight:string
++ -> ('a, unit, string, error) format4 -> 'a
++
++val error_of_printer: t -> (formatter -> 'a -> unit) -> 'a -> error
++
++val error_of_printer_file: (formatter -> 'a -> unit) -> 'a -> error
++
++val error_of_exn: exn -> error option
++
++val register_error_of_exn: (exn -> error option) -> unit
++ (* Each compiler module which defines a custom type of exception
++ which can surface as a user-visible error should register
++ a "printer" for this exception using [register_error_of_exn].
++ The result of the printer is an [error] value containing
++ a location, a message, and optionally sub-messages (each of them
++ being located as well). *)
++
++val report_error: formatter -> error -> unit
++
++val report_exception: formatter -> exn -> unit
++ (* Reraise the exception if it is unknown. *)
+diff -urN camlp5-6.11/ocaml_stuff/4.03.0/parsing/longident.mli camlp5-6.12-63a8c30f/ocaml_stuff/4.03.0/parsing/longident.mli
+--- camlp5-6.11/ocaml_stuff/4.03.0/parsing/longident.mli 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.03.0/parsing/longident.mli 2014-08-01 10:14:54.344065456 +0100
+@@ -0,0 +1,22 @@
++(***********************************************************************)
++(* *)
++(* OCaml *)
++(* *)
++(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
++(* *)
++(* Copyright 1996 Institut National de Recherche en Informatique et *)
++(* en Automatique. All rights reserved. This file is distributed *)
++(* under the terms of the Q Public License version 1.0. *)
++(* *)
++(***********************************************************************)
++
++(* Long identifiers, used in parsetree. *)
++
++type t =
++ Lident of string
++ | Ldot of t * string
++ | Lapply of t * t
++
++val flatten: t -> string list
++val last: t -> string
++val parse: string -> t
+diff -urN camlp5-6.11/ocaml_stuff/4.03.0/parsing/Makefile camlp5-6.12-63a8c30f/ocaml_stuff/4.03.0/parsing/Makefile
+--- camlp5-6.11/ocaml_stuff/4.03.0/parsing/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.03.0/parsing/Makefile 2014-08-01 10:14:54.344065456 +0100
+@@ -0,0 +1,19 @@
++# Makefile,v
++
++FILES=asttypes.cmi location.cmi longident.cmi parsetree.cmi
++INCL=-I ../utils
++
++all: $(FILES)
++
++clean:
++ rm -f *.cmi
++
++depend:
++ ocamldep $(INCL) *.ml* | sed -e 's/ *$$//' > .depend
++
++.SUFFIXES: .mli .cmi
++
++.mli.cmi:
++ $(OCAMLN)c $(INCL) -c $<
++
++include .depend
+diff -urN camlp5-6.11/ocaml_stuff/4.03.0/parsing/parsetree.mli camlp5-6.12-63a8c30f/ocaml_stuff/4.03.0/parsing/parsetree.mli
+--- camlp5-6.11/ocaml_stuff/4.03.0/parsing/parsetree.mli 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.03.0/parsing/parsetree.mli 2014-08-01 10:14:54.344065456 +0100
+@@ -0,0 +1,810 @@
++(***********************************************************************)
++(* *)
++(* OCaml *)
++(* *)
++(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
++(* *)
++(* Copyright 1996 Institut National de Recherche en Informatique et *)
++(* en Automatique. All rights reserved. This file is distributed *)
++(* under the terms of the Q Public License version 1.0. *)
++(* *)
++(***********************************************************************)
++
++(** Abstract syntax tree produced by parsing *)
++
++open Asttypes
++
++(** {2 Extension points} *)
++
++type attribute = string loc * payload
++ (* [@id ARG]
++ [@@id ARG]
++
++ Metadata containers passed around within the AST.
++ The compiler ignores unknown attributes.
++ *)
++
++and extension = string loc * payload
++ (* [%id ARG]
++ [%%id ARG]
++
++ Sub-language placeholder -- rejected by the typechecker.
++ *)
++
++and attributes = attribute list
++
++and payload =
++ | PStr of structure
++ | PTyp of core_type (* : T *)
++ | PPat of pattern * expression option (* : P or : P when E *)
++
++(** {2 Core language} *)
++
++(* Type expressions *)
++
++and core_type =
++ {
++ ptyp_desc: core_type_desc;
++ ptyp_loc: Location.t;
++ ptyp_attributes: attributes; (* ... [@id1] [@id2] *)
++ }
++
++and core_type_desc =
++ | Ptyp_any
++ (* _ *)
++ | Ptyp_var of string
++ (* 'a *)
++ | Ptyp_arrow of label * core_type * core_type
++ (* T1 -> T2 (label = "")
++ ~l:T1 -> T2 (label = "l")
++ ?l:T1 -> T2 (label = "?l")
++ *)
++ | Ptyp_tuple of core_type list
++ (* T1 * ... * Tn (n >= 2) *)
++ | Ptyp_constr of Longident.t loc * core_type list
++ (* tconstr
++ T tconstr
++ (T1, ..., Tn) tconstr
++ *)
++ | Ptyp_object of (string * attributes * core_type) list * closed_flag
++ (* < l1:T1; ...; ln:Tn > (flag = Closed)
++ < l1:T1; ...; ln:Tn; .. > (flag = Open)
++ *)
++ | Ptyp_class of Longident.t loc * core_type list
++ (* #tconstr
++ T #tconstr
++ (T1, ..., Tn) #tconstr
++ *)
++ | Ptyp_alias of core_type * string
++ (* T as 'a *)
++ | Ptyp_variant of row_field list * closed_flag * label list option
++ (* [ `A|`B ] (flag = Closed; labels = None)
++ [> `A|`B ] (flag = Open; labels = None)
++ [< `A|`B ] (flag = Closed; labels = Some [])
++ [< `A|`B > `X `Y ](flag = Closed; labels = Some ["X";"Y"])
++ *)
++ | Ptyp_poly of string list * core_type
++ (* 'a1 ... 'an. T
++
++ Can only appear in the following context:
++
++ - As the core_type of a Ppat_constraint node corresponding
++ to a constraint on a let-binding: let x : 'a1 ... 'an. T
++ = e ...
++
++ - Under Cfk_virtual for methods (not values).
++
++ - As the core_type of a Pctf_method node.
++
++ - As the core_type of a Pexp_poly node.
++
++ - As the pld_type field of a label_declaration.
++
++ - As a core_type of a Ptyp_object node.
++ *)
++
++ | Ptyp_package of package_type
++ (* (module S) *)
++ | Ptyp_extension of extension
++ (* [%id] *)
++
++and package_type = Longident.t loc * (Longident.t loc * core_type) list
++ (*
++ (module S)
++ (module S with type t1 = T1 and ... and tn = Tn)
++ *)
++
++and row_field =
++ | Rtag of label * attributes * bool * core_type list
++ (* [`A] ( true, [] )
++ [`A of T] ( false, [T] )
++ [`A of T1 & .. & Tn] ( false, [T1;...Tn] )
++ [`A of & T1 & .. & Tn] ( true, [T1;...Tn] )
++
++ - The 2nd field is true if the tag contains a
++ constant (empty) constructor.
++ - '&' occurs when several types are used for the same constructor
++ (see 4.2 in the manual)
++
++ - TODO: switch to a record representation, and keep location
++ *)
++ | Rinherit of core_type
++ (* [ T ] *)
++
++(* Patterns *)
++
++and pattern =
++ {
++ ppat_desc: pattern_desc;
++ ppat_loc: Location.t;
++ ppat_attributes: attributes; (* ... [@id1] [@id2] *)
++ }
++
++and pattern_desc =
++ | Ppat_any
++ (* _ *)
++ | Ppat_var of string loc
++ (* x *)
++ | Ppat_alias of pattern * string loc
++ (* P as 'a *)
++ | Ppat_constant of constant
++ (* 1, 'a', "true", 1.0, 1l, 1L, 1n *)
++ | Ppat_interval of constant * constant
++ (* 'a'..'z'
++
++ Other forms of interval are recognized by the parser
++ but rejected by the type-checker. *)
++ | Ppat_tuple of pattern list
++ (* (P1, ..., Pn) (n >= 2) *)
++ | Ppat_construct of Longident.t loc * pattern option
++ (* C None
++ C P Some P
++ C (P1, ..., Pn) Some (Ppat_tuple [P1; ...; Pn])
++ *)
++ | Ppat_variant of label * pattern option
++ (* `A (None)
++ `A P (Some P)
++ *)
++ | Ppat_record of (Longident.t loc * pattern) list * closed_flag
++ (* { l1=P1; ...; ln=Pn } (flag = Closed)
++ { l1=P1; ...; ln=Pn; _} (flag = Open)
++ *)
++ | Ppat_array of pattern list
++ (* [| P1; ...; Pn |] *)
++ | Ppat_or of pattern * pattern
++ (* P1 | P2 *)
++ | Ppat_constraint of pattern * core_type
++ (* (P : T) *)
++ | Ppat_type of Longident.t loc
++ (* #tconst *)
++ | Ppat_lazy of pattern
++ (* lazy P *)
++ | Ppat_unpack of string loc
++ (* (module P)
++ Note: (module P : S) is represented as
++ Ppat_constraint(Ppat_unpack, Ptyp_package)
++ *)
++ | Ppat_exception of pattern
++ (* exception P *)
++ | Ppat_extension of extension
++ (* [%id] *)
++
++(* Value expressions *)
++
++and expression =
++ {
++ pexp_desc: expression_desc;
++ pexp_loc: Location.t;
++ pexp_attributes: attributes; (* ... [@id1] [@id2] *)
++ }
++
++and expression_desc =
++ | Pexp_ident of Longident.t loc
++ (* x
++ M.x
++ *)
++ | Pexp_constant of constant
++ (* 1, 'a', "true", 1.0, 1l, 1L, 1n *)
++ | Pexp_let of rec_flag * value_binding list * expression
++ (* let P1 = E1 and ... and Pn = EN in E (flag = Nonrecursive)
++ let rec P1 = E1 and ... and Pn = EN in E (flag = Recursive)
++ *)
++ | Pexp_function of case list
++ (* function P1 -> E1 | ... | Pn -> En *)
++ | Pexp_fun of label * expression option * pattern * expression
++ (* fun P -> E1 (lab = "", None)
++ fun ~l:P -> E1 (lab = "l", None)
++ fun ?l:P -> E1 (lab = "?l", None)
++ fun ?l:(P = E0) -> E1 (lab = "?l", Some E0)
++
++ Notes:
++ - If E0 is provided, lab must start with '?'.
++ - "fun P1 P2 .. Pn -> E1" is represented as nested Pexp_fun.
++ - "let f P = E" is represented using Pexp_fun.
++ *)
++ | Pexp_apply of expression * (label * expression) list
++ (* E0 ~l1:E1 ... ~ln:En
++ li can be empty (non labeled argument) or start with '?'
++ (optional argument).
++ *)
++ | Pexp_match of expression * case list
++ (* match E0 with P1 -> E1 | ... | Pn -> En *)
++ | Pexp_try of expression * case list
++ (* try E0 with P1 -> E1 | ... | Pn -> En *)
++ | Pexp_tuple of expression list
++ (* (E1, ..., En) (n >= 2) *)
++ | Pexp_construct of Longident.t loc * expression option
++ (* C None
++ C E Some E
++ C (E1, ..., En) Some (Pexp_tuple[E1;...;En])
++ *)
++ | Pexp_variant of label * expression option
++ (* `A (None)
++ `A E (Some E)
++ *)
++ | Pexp_record of (Longident.t loc * expression) list * expression option
++ (* { l1=P1; ...; ln=Pn } (None)
++ { E0 with l1=P1; ...; ln=Pn } (Some E0)
++ *)
++ | Pexp_field of expression * Longident.t loc
++ (* E.l *)
++ | Pexp_setfield of expression * Longident.t loc * expression
++ (* E1.l <- E2 *)
++ | Pexp_array of expression list
++ (* [| E1; ...; En |] *)
++ | Pexp_ifthenelse of expression * expression * expression option
++ (* if E1 then E2 else E3 *)
++ | Pexp_sequence of expression * expression
++ (* E1; E2 *)
++ | Pexp_while of expression * expression
++ (* while E1 do E2 done *)
++ | Pexp_for of
++ pattern * expression * expression * direction_flag * expression
++ (* for i = E1 to E2 do E3 done (flag = Upto)
++ for i = E1 downto E2 do E3 done (flag = Downto)
++ *)
++ | Pexp_constraint of expression * core_type
++ (* (E : T) *)
++ | Pexp_coerce of expression * core_type option * core_type
++ (* (E :> T) (None, T)
++ (E : T0 :> T) (Some T0, T)
++ *)
++ | Pexp_send of expression * string
++ (* E # m *)
++ | Pexp_new of Longident.t loc
++ (* new M.c *)
++ | Pexp_setinstvar of string loc * expression
++ (* x <- 2 *)
++ | Pexp_override of (string loc * expression) list
++ (* {< x1 = E1; ...; Xn = En >} *)
++ | Pexp_letmodule of string loc * module_expr * expression
++ (* let module M = ME in E *)
++ | Pexp_assert of expression
++ (* assert E
++ Note: "assert false" is treated in a special way by the
++ type-checker. *)
++ | Pexp_lazy of expression
++ (* lazy E *)
++ | Pexp_poly of expression * core_type option
++ (* Used for method bodies.
++
++ Can only be used as the expression under Cfk_concrete
++ for methods (not values). *)
++ | Pexp_object of class_structure
++ (* object ... end *)
++ | Pexp_newtype of string * expression
++ (* fun (type t) -> E *)
++ | Pexp_pack of module_expr
++ (* (module ME)
++
++ (module ME : S) is represented as
++ Pexp_constraint(Pexp_pack, Ptyp_package S) *)
++ | Pexp_open of override_flag * Longident.t loc * expression
++ (* let open M in E
++ let! open M in E
++ *)
++ | Pexp_extension of extension
++ (* [%id] *)
++
++and case = (* (P -> E) or (P when E0 -> E) *)
++ {
++ pc_lhs: pattern;
++ pc_guard: expression option;
++ pc_rhs: expression;
++ }
++
++(* Value descriptions *)
++
++and value_description =
++ {
++ pval_name: string loc;
++ pval_type: core_type;
++ pval_prim: string list;
++ pval_attributes: attributes; (* ... [@@id1] [@@id2] *)
++ pval_loc: Location.t;
++ }
++
++(*
++ val x: T (prim = [])
++ external x: T = "s1" ... "sn" (prim = ["s1";..."sn"])
++
++ Note: when used under Pstr_primitive, prim cannot be empty
++*)
++
++(* Type declarations *)
++
++and type_declaration =
++ {
++ ptype_name: string loc;
++ ptype_params: (core_type * variance) list;
++ (* ('a1,...'an) t; None represents _*)
++ ptype_cstrs: (core_type * core_type * Location.t) list;
++ (* ... constraint T1=T1' ... constraint Tn=Tn' *)
++ ptype_kind: type_kind;
++ ptype_private: private_flag; (* = private ... *)
++ ptype_manifest: core_type option; (* = T *)
++ ptype_attributes: attributes; (* ... [@@id1] [@@id2] *)
++ ptype_loc: Location.t;
++ }
++
++(*
++ type t (abstract, no manifest)
++ type t = T0 (abstract, manifest=T0)
++ type t = C of T | ... (variant, no manifest)
++ type t = T0 = C of T | ... (variant, manifest=T0)
++ type t = {l: T; ...} (record, no manifest)
++ type t = T0 = {l : T; ...} (record, manifest=T0)
++ type t = .. (open, no manifest)
++*)
++
++and type_kind =
++ | Ptype_abstract
++ | Ptype_variant of constructor_declaration list
++ | Ptype_record of label_declaration list
++ | Ptype_open
++
++and label_declaration =
++ {
++ pld_name: string loc;
++ pld_mutable: mutable_flag;
++ pld_type: core_type;
++ pld_loc: Location.t;
++ pld_attributes: attributes; (* l [@id1] [@id2] : T *)
++ }
++
++(* { ...; l: T; ... } (mutable=Immutable)
++ { ...; mutable l: T; ... } (mutable=Mutable)
++
++ Note: T can be a Pexp_poly.
++*)
++
++and constructor_declaration =
++ {
++ pcd_name: string loc;
++ pcd_args: core_type list;
++ pcd_res: core_type option;
++ pcd_loc: Location.t;
++ pcd_attributes: attributes; (* C [@id1] [@id2] of ... *)
++ }
++(*
++ | C of T1 * ... * Tn (res = None)
++ | C: T0 (args = [], res = Some T0)
++ | C: T1 * ... * Tn -> T0 (res = Some T0)
++*)
++
++and type_extension =
++ {
++ ptyext_path: Longident.t loc;
++ ptyext_params: (core_type * variance) list;
++ ptyext_constructors: extension_constructor list;
++ ptyext_private: private_flag;
++ ptyext_attributes: attributes; (* ... [@@id1] [@@id2] *)
++ }
++(*
++ type t += ...
++*)
++
++and extension_constructor =
++ {
++ pext_name: string loc;
++ pext_kind : extension_constructor_kind;
++ pext_loc : Location.t;
++ pext_attributes: attributes; (* C [@id1] [@id2] of ... *)
++ }
++
++and extension_constructor_kind =
++ Pext_decl of core_type list * core_type option
++ (*
++ | C of T1 * ... * Tn ([T1; ...; Tn], None)
++ | C: T0 ([], Some T0)
++ | C: T1 * ... * Tn -> T0 ([T1; ...; Tn], Some T0)
++ *)
++ | Pext_rebind of Longident.t loc
++ (*
++ | C = D
++ *)
++
++(** {2 Class language} *)
++
++(* Type expressions for the class language *)
++
++and class_type =
++ {
++ pcty_desc: class_type_desc;
++ pcty_loc: Location.t;
++ pcty_attributes: attributes; (* ... [@id1] [@id2] *)
++ }
++
++and class_type_desc =
++ | Pcty_constr of Longident.t loc * core_type list
++ (* c
++ ['a1, ..., 'an] c *)
++ | Pcty_signature of class_signature
++ (* object ... end *)
++ | Pcty_arrow of label * core_type * class_type
++ (* T -> CT (label = "")
++ ~l:T -> CT (label = "l")
++ ?l:T -> CT (label = "?l")
++ *)
++ | Pcty_extension of extension
++ (* [%id] *)
++
++and class_signature =
++ {
++ pcsig_self: core_type;
++ pcsig_fields: class_type_field list;
++ }
++(* object('selfpat) ... end
++ object ... end (self = Ptyp_any)
++ *)
++
++and class_type_field =
++ {
++ pctf_desc: class_type_field_desc;
++ pctf_loc: Location.t;
++ pctf_attributes: attributes; (* ... [@@id1] [@@id2] *)
++ }
++
++and class_type_field_desc =
++ | Pctf_inherit of class_type
++ (* inherit CT *)
++ | Pctf_val of (string * mutable_flag * virtual_flag * core_type)
++ (* val x: T *)
++ | Pctf_method of (string * private_flag * virtual_flag * core_type)
++ (* method x: T
++
++ Note: T can be a Pexp_poly.
++ *)
++ | Pctf_constraint of (core_type * core_type)
++ (* constraint T1 = T2 *)
++ | Pctf_attribute of attribute
++ (* [@@@id] *)
++ | Pctf_extension of extension
++ (* [%%id] *)
++
++and 'a class_infos =
++ {
++ pci_virt: virtual_flag;
++ pci_params: (core_type * variance) list;
++ pci_name: string loc;
++ pci_expr: 'a;
++ pci_loc: Location.t;
++ pci_attributes: attributes; (* ... [@@id1] [@@id2] *)
++ }
++(* class c = ...
++ class ['a1,...,'an] c = ...
++ class virtual c = ...
++
++ Also used for "class type" declaration.
++*)
++
++and class_description = class_type class_infos
++
++and class_type_declaration = class_type class_infos
++
++(* Value expressions for the class language *)
++
++and class_expr =
++ {
++ pcl_desc: class_expr_desc;
++ pcl_loc: Location.t;
++ pcl_attributes: attributes; (* ... [@id1] [@id2] *)
++ }
++
++and class_expr_desc =
++ | Pcl_constr of Longident.t loc * core_type list
++ (* c
++ ['a1, ..., 'an] c *)
++ | Pcl_structure of class_structure
++ (* object ... end *)
++ | Pcl_fun of label * expression option * pattern * class_expr
++ (* fun P -> CE (lab = "", None)
++ fun ~l:P -> CE (lab = "l", None)
++ fun ?l:P -> CE (lab = "?l", None)
++ fun ?l:(P = E0) -> CE (lab = "?l", Some E0)
++ *)
++ | Pcl_apply of class_expr * (label * expression) list
++ (* CE ~l1:E1 ... ~ln:En
++ li can be empty (non labeled argument) or start with '?'
++ (optional argument).
++ *)
++ | Pcl_let of rec_flag * value_binding list * class_expr
++ (* let P1 = E1 and ... and Pn = EN in CE (flag = Nonrecursive)
++ let rec P1 = E1 and ... and Pn = EN in CE (flag = Recursive)
++ *)
++ | Pcl_constraint of class_expr * class_type
++ (* (CE : CT) *)
++ | Pcl_extension of extension
++ (* [%id] *)
++
++and class_structure =
++ {
++ pcstr_self: pattern;
++ pcstr_fields: class_field list;
++ }
++(* object(selfpat) ... end
++ object ... end (self = Ppat_any)
++ *)
++
++and class_field =
++ {
++ pcf_desc: class_field_desc;
++ pcf_loc: Location.t;
++ pcf_attributes: attributes; (* ... [@@id1] [@@id2] *)
++ }
++
++and class_field_desc =
++ | Pcf_inherit of override_flag * class_expr * string option
++ (* inherit CE
++ inherit CE as x
++ inherit! CE
++ inherit! CE as x
++ *)
++ | Pcf_val of (string loc * mutable_flag * class_field_kind)
++ (* val x = E
++ val virtual x: T
++ *)
++ | Pcf_method of (string loc * private_flag * class_field_kind)
++ (* method x = E (E can be a Pexp_poly)
++ method virtual x: T (T can be a Ptyp_poly)
++ *)
++ | Pcf_constraint of (core_type * core_type)
++ (* constraint T1 = T2 *)
++ | Pcf_initializer of expression
++ (* initializer E *)
++ | Pcf_attribute of attribute
++ (* [@@@id] *)
++ | Pcf_extension of extension
++ (* [%%id] *)
++
++and class_field_kind =
++ | Cfk_virtual of core_type
++ | Cfk_concrete of override_flag * expression
++
++and class_declaration = class_expr class_infos
++
++(** {2 Module language} *)
++
++(* Type expressions for the module language *)
++
++and module_type =
++ {
++ pmty_desc: module_type_desc;
++ pmty_loc: Location.t;
++ pmty_attributes: attributes; (* ... [@id1] [@id2] *)
++ }
++
++and module_type_desc =
++ | Pmty_ident of Longident.t loc
++ (* S *)
++ | Pmty_signature of signature
++ (* sig ... end *)
++ | Pmty_functor of string loc * module_type option * module_type
++ (* functor(X : MT1) -> MT2 *)
++ | Pmty_with of module_type * with_constraint list
++ (* MT with ... *)
++ | Pmty_typeof of module_expr
++ (* module type of ME *)
++ | Pmty_extension of extension
++ (* [%id] *)
++ | Pmty_alias of Longident.t loc
++ (* (module M) *)
++
++and signature = signature_item list
++
++and signature_item =
++ {
++ psig_desc: signature_item_desc;
++ psig_loc: Location.t;
++ }
++
++and signature_item_desc =
++ | Psig_value of value_description
++ (*
++ val x: T
++ external x: T = "s1" ... "sn"
++ *)
++ | Psig_type of type_declaration list
++ (* type t1 = ... and ... and tn = ... *)
++ | Psig_typext of type_extension
++ (* type t1 += ... *)
++ | Psig_exception of extension_constructor
++ (* exception C of T *)
++ | Psig_module of module_declaration
++ (* module X : MT *)
++ | Psig_recmodule of module_declaration list
++ (* module rec X1 : MT1 and ... and Xn : MTn *)
++ | Psig_modtype of module_type_declaration
++ (* module type S = MT
++ module type S *)
++ | Psig_open of open_description
++ (* open X *)
++ | Psig_include of include_description
++ (* include MT *)
++ | Psig_class of class_description list
++ (* class c1 : ... and ... and cn : ... *)
++ | Psig_class_type of class_type_declaration list
++ (* class type ct1 = ... and ... and ctn = ... *)
++ | Psig_attribute of attribute
++ (* [@@@id] *)
++ | Psig_extension of extension * attributes
++ (* [%%id] *)
++
++and module_declaration =
++ {
++ pmd_name: string loc;
++ pmd_type: module_type;
++ pmd_attributes: attributes; (* ... [@@id1] [@@id2] *)
++ pmd_loc: Location.t;
++ }
++(* S : MT *)
++
++and module_type_declaration =
++ {
++ pmtd_name: string loc;
++ pmtd_type: module_type option;
++ pmtd_attributes: attributes; (* ... [@@id1] [@@id2] *)
++ pmtd_loc: Location.t;
++ }
++(* S = MT
++ S (abstract module type declaration, pmtd_type = None)
++*)
++
++and open_description =
++ {
++ popen_lid: Longident.t loc;
++ popen_override: override_flag;
++ popen_loc: Location.t;
++ popen_attributes: attributes;
++ }
++(* open! X - popen_override = Override (silences the 'used identifier
++ shadowing' warning)
++ open X - popen_override = Fresh
++ *)
++
++and 'a include_infos =
++ {
++ pincl_mod: 'a;
++ pincl_loc: Location.t;
++ pincl_attributes: attributes;
++ }
++
++and include_description = module_type include_infos
++(* include MT *)
++
++and include_declaration = module_expr include_infos
++(* include ME *)
++
++and with_constraint =
++ | Pwith_type of Longident.t loc * type_declaration
++ (* with type X.t = ...
++
++ Note: the last component of the longident must match
++ the name of the type_declaration. *)
++ | Pwith_module of Longident.t loc * Longident.t loc
++ (* with module X.Y = Z *)
++ | Pwith_typesubst of type_declaration
++ (* with type t := ... *)
++ | Pwith_modsubst of string loc * Longident.t loc
++ (* with module X := Z *)
++
++(* Value expressions for the module language *)
++
++and module_expr =
++ {
++ pmod_desc: module_expr_desc;
++ pmod_loc: Location.t;
++ pmod_attributes: attributes; (* ... [@id1] [@id2] *)
++ }
++
++and module_expr_desc =
++ | Pmod_ident of Longident.t loc
++ (* X *)
++ | Pmod_structure of structure
++ (* struct ... end *)
++ | Pmod_functor of string loc * module_type option * module_expr
++ (* functor(X : MT1) -> ME *)
++ | Pmod_apply of module_expr * module_expr
++ (* ME1(ME2) *)
++ | Pmod_constraint of module_expr * module_type
++ (* (ME : MT) *)
++ | Pmod_unpack of expression
++ (* (val E) *)
++ | Pmod_extension of extension
++ (* [%id] *)
++
++and structure = structure_item list
++
++and structure_item =
++ {
++ pstr_desc: structure_item_desc;
++ pstr_loc: Location.t;
++ }
++
++and structure_item_desc =
++ | Pstr_eval of expression * attributes
++ (* E *)
++ | Pstr_value of rec_flag * value_binding list
++ (* let P1 = E1 and ... and Pn = EN (flag = Nonrecursive)
++ let rec P1 = E1 and ... and Pn = EN (flag = Recursive)
++ *)
++ | Pstr_primitive of value_description
++ (* external x: T = "s1" ... "sn" *)
++ | Pstr_type of type_declaration list
++ (* type t1 = ... and ... and tn = ... *)
++ | Pstr_typext of type_extension
++ (* type t1 += ... *)
++ | Pstr_exception of extension_constructor
++ (* exception C of T
++ exception C = M.X *)
++ | Pstr_module of module_binding
++ (* module X = ME *)
++ | Pstr_recmodule of module_binding list
++ (* module rec X1 = ME1 and ... and Xn = MEn *)
++ | Pstr_modtype of module_type_declaration
++ (* module type S = MT *)
++ | Pstr_open of open_description
++ (* open X *)
++ | Pstr_class of class_declaration list
++ (* class c1 = ... and ... and cn = ... *)
++ | Pstr_class_type of class_type_declaration list
++ (* class type ct1 = ... and ... and ctn = ... *)
++ | Pstr_include of include_declaration
++ (* include ME *)
++ | Pstr_attribute of attribute
++ (* [@@@id] *)
++ | Pstr_extension of extension * attributes
++ (* [%%id] *)
++
++and value_binding =
++ {
++ pvb_pat: pattern;
++ pvb_expr: expression;
++ pvb_attributes: attributes;
++ pvb_loc: Location.t;
++ }
++
++and module_binding =
++ {
++ pmb_name: string loc;
++ pmb_expr: module_expr;
++ pmb_attributes: attributes;
++ pmb_loc: Location.t;
++ }
++(* X = ME *)
++
++(** {2 Toplevel} *)
++
++(* Toplevel phrases *)
++
++type toplevel_phrase =
++ | Ptop_def of structure
++ | Ptop_dir of string * directive_argument
++ (* #use, #load ... *)
++
++and directive_argument =
++ | Pdir_none
++ | Pdir_string of string
++ | Pdir_int of int
++ | Pdir_ident of Longident.t
++ | Pdir_bool of bool
+diff -urN camlp5-6.11/ocaml_stuff/4.03.0/utils/.depend camlp5-6.12-63a8c30f/ocaml_stuff/4.03.0/utils/.depend
+--- camlp5-6.11/ocaml_stuff/4.03.0/utils/.depend 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.03.0/utils/.depend 2014-08-01 10:14:54.344065456 +0100
+@@ -0,0 +1,2 @@
++pconfig.cmo: pconfig.cmi
++pconfig.cmx: pconfig.cmi
+diff -urN camlp5-6.11/ocaml_stuff/4.03.0/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/4.03.0/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/4.03.0/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.03.0/utils/.gitignore 2014-08-01 10:14:54.344065456 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/4.03.0/utils/Makefile camlp5-6.12-63a8c30f/ocaml_stuff/4.03.0/utils/Makefile
+--- camlp5-6.11/ocaml_stuff/4.03.0/utils/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.03.0/utils/Makefile 2014-08-01 10:14:54.344065456 +0100
+@@ -0,0 +1,27 @@
++# Makefile,v
++
++FILES=warnings.cmi pconfig.cmo
++INCL=
++
++all: $(FILES)
++
++opt: pconfig.cmx
++
++clean:
++ rm -f *.cm[oix] *.o
++
++depend:
++ ocamldep $(INCL) *.ml* | sed -e 's/ *$$//' > .depend
++
++.SUFFIXES: .mli .cmi .ml .cmo .cmx
++
++.mli.cmi:
++ $(OCAMLN)c $(INCL) -c $<
++
++.ml.cmo:
++ $(OCAMLN)c $(INCL) -c $<
++
++.ml.cmx:
++ $(OCAMLN)opt $(INCL) -c $<
++
++include .depend
+diff -urN camlp5-6.11/ocaml_stuff/4.03.0/utils/pconfig.ml camlp5-6.12-63a8c30f/ocaml_stuff/4.03.0/utils/pconfig.ml
+--- camlp5-6.11/ocaml_stuff/4.03.0/utils/pconfig.ml 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.03.0/utils/pconfig.ml 2014-08-01 10:14:54.344065456 +0100
+@@ -0,0 +1,4 @@
++let ocaml_version = "4.03.0"
++let ocaml_name = "ocaml"
++let ast_impl_magic_number = "Caml1999M016"
++let ast_intf_magic_number = "Caml1999N015"
+diff -urN camlp5-6.11/ocaml_stuff/4.03.0/utils/pconfig.mli camlp5-6.12-63a8c30f/ocaml_stuff/4.03.0/utils/pconfig.mli
+--- camlp5-6.11/ocaml_stuff/4.03.0/utils/pconfig.mli 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.03.0/utils/pconfig.mli 2014-08-01 10:14:54.344065456 +0100
+@@ -0,0 +1,4 @@
++val ocaml_version : string
++val ocaml_name : string
++val ast_impl_magic_number : string
++val ast_intf_magic_number : string
+diff -urN camlp5-6.11/ocaml_stuff/4.03.0/utils/warnings.mli camlp5-6.12-63a8c30f/ocaml_stuff/4.03.0/utils/warnings.mli
+--- camlp5-6.11/ocaml_stuff/4.03.0/utils/warnings.mli 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/4.03.0/utils/warnings.mli 2014-08-01 10:14:54.344065456 +0100
+@@ -0,0 +1,87 @@
++(***********************************************************************)
++(* *)
++(* OCaml *)
++(* *)
++(* Pierre Weis && Damien Doligez, INRIA Rocquencourt *)
++(* *)
++(* Copyright 1998 Institut National de Recherche en Informatique et *)
++(* en Automatique. All rights reserved. This file is distributed *)
++(* under the terms of the Q Public License version 1.0. *)
++(* *)
++(***********************************************************************)
++
++open Format
++
++type t =
++ | Comment_start (* 1 *)
++ | Comment_not_end (* 2 *)
++ | Deprecated of string (* 3 *)
++ | Fragile_match of string (* 4 *)
++ | Partial_application (* 5 *)
++ | Labels_omitted (* 6 *)
++ | Method_override of string list (* 7 *)
++ | Partial_match of string (* 8 *)
++ | Non_closed_record_pattern of string (* 9 *)
++ | Statement_type (* 10 *)
++ | Unused_match (* 11 *)
++ | Unused_pat (* 12 *)
++ | Instance_variable_override of string list (* 13 *)
++ | Illegal_backslash (* 14 *)
++ | Implicit_public_methods of string list (* 15 *)
++ | Unerasable_optional_argument (* 16 *)
++ | Undeclared_virtual_method of string (* 17 *)
++ | Not_principal of string (* 18 *)
++ | Without_principality of string (* 19 *)
++ | Unused_argument (* 20 *)
++ | Nonreturning_statement (* 21 *)
++ | Preprocessor of string (* 22 *)
++ | Useless_record_with (* 23 *)
++ | Bad_module_name of string (* 24 *)
++ | All_clauses_guarded (* 25 *)
++ | Unused_var of string (* 26 *)
++ | Unused_var_strict of string (* 27 *)
++ | Wildcard_arg_to_constant_constr (* 28 *)
++ | Eol_in_string (* 29 *)
++ | Duplicate_definitions of string * string * string * string (* 30 *)
++ | Multiple_definition of string * string * string (* 31 *)
++ | Unused_value_declaration of string (* 32 *)
++ | Unused_open of string (* 33 *)
++ | Unused_type_declaration of string (* 34 *)
++ | Unused_for_index of string (* 35 *)
++ | Unused_ancestor of string (* 36 *)
++ | Unused_constructor of string * bool * bool (* 37 *)
++ | Unused_extension of string * bool * bool (* 38 *)
++ | Unused_rec_flag (* 39 *)
++ | Name_out_of_scope of string * string list * bool (* 40 *)
++ | Ambiguous_name of string list * string list * bool (* 41 *)
++ | Disambiguated_name of string (* 42 *)
++ | Nonoptional_label of string (* 43 *)
++ | Open_shadow_identifier of string * string (* 44 *)
++ | Open_shadow_label_constructor of string * string (* 45 *)
++ | Bad_env_variable of string * string (* 46 *)
++ | Attribute_payload of string * string (* 47 *)
++ | Eliminated_optional_arguments of string list (* 48 *)
++ | No_cmi_file of string (* 49 *)
++;;
++
++val parse_options : bool -> string -> unit;;
++
++val is_active : t -> bool;;
++val is_error : t -> bool;;
++
++val defaults_w : string;;
++val defaults_warn_error : string;;
++
++val print : formatter -> t -> int;;
++ (* returns the number of newlines in the printed string *)
++
++
++exception Errors of int;;
++
++val check_fatal : unit -> unit;;
++
++val help_warnings: unit -> unit
++
++type state
++val backup: unit -> state
++val restore: state -> unit
+diff -urN camlp5-6.11/ocaml_stuff/common/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/common/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/common/parsing/.cvsignore 2010-09-15 17:00:47.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/common/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/common/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/common/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/common/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/common/parsing/.gitignore 2014-08-01 10:14:54.344065456 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/common/parsing/Makefile camlp5-6.12-63a8c30f/ocaml_stuff/common/parsing/Makefile
+--- camlp5-6.11/ocaml_stuff/common/parsing/Makefile 2012-03-02 18:49:57.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_stuff/common/parsing/Makefile 2014-08-01 10:14:54.344065456 +0100
+@@ -1,4 +1,4 @@
+-# $Id: Makefile,v 6.3 2012-03-02 18:49:57 deraugla Exp $
++# Makefile,v
+
+ FILES=asttypes.cmi location.cmi longident.cmi parsetree.cmi
+ INCL=-I ../utils
+diff -urN camlp5-6.11/ocaml_stuff/common/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/common/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/common/utils/.cvsignore 2010-09-15 17:00:48.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/common/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/common/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/common/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/common/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/common/utils/.gitignore 2014-08-01 10:14:54.344065456 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/common/utils/Makefile camlp5-6.12-63a8c30f/ocaml_stuff/common/utils/Makefile
+--- camlp5-6.11/ocaml_stuff/common/utils/Makefile 2012-03-02 18:49:57.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_stuff/common/utils/Makefile 2014-08-01 10:14:54.344065456 +0100
+@@ -1,4 +1,4 @@
+-# $Id: Makefile,v 6.3 2012-03-02 18:49:57 deraugla Exp $
++# Makefile,v
+
+ FILES=warnings.cmi pconfig.cmo
+ INCL=
+diff -urN camlp5-6.11/ocaml_stuff/jocaml/3.12.0/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/jocaml/3.12.0/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/jocaml/3.12.0/parsing/.cvsignore 2012-03-06 10:09:10.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_stuff/jocaml/3.12.0/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/jocaml/3.12.0/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/jocaml/3.12.0/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/jocaml/3.12.0/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/jocaml/3.12.0/parsing/.gitignore 2014-08-01 10:14:54.345065457 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/jocaml/3.12.0/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/jocaml/3.12.0/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/jocaml/3.12.0/utils/.cvsignore 2012-03-06 10:09:10.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_stuff/jocaml/3.12.0/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/jocaml/3.12.0/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/jocaml/3.12.0/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/jocaml/3.12.0/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/jocaml/3.12.0/utils/.gitignore 2014-08-01 10:14:54.345065457 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/jocaml/3.12.1/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/jocaml/3.12.1/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/jocaml/3.12.1/parsing/.cvsignore 2012-03-06 09:57:07.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_stuff/jocaml/3.12.1/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/jocaml/3.12.1/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/jocaml/3.12.1/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/jocaml/3.12.1/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/jocaml/3.12.1/parsing/.gitignore 2014-08-01 10:14:54.345065457 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/jocaml/3.12.1/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/jocaml/3.12.1/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/jocaml/3.12.1/utils/.cvsignore 2012-03-06 09:57:07.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_stuff/jocaml/3.12.1/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/jocaml/3.12.1/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/jocaml/3.12.1/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/jocaml/3.12.1/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/jocaml/3.12.1/utils/.gitignore 2014-08-01 10:14:54.346065458 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/jocaml/3.13.0/parsing/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/jocaml/3.13.0/parsing/.cvsignore
+--- camlp5-6.11/ocaml_stuff/jocaml/3.13.0/parsing/.cvsignore 2012-03-02 18:49:57.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_stuff/jocaml/3.13.0/parsing/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/jocaml/3.13.0/parsing/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/jocaml/3.13.0/parsing/.gitignore
+--- camlp5-6.11/ocaml_stuff/jocaml/3.13.0/parsing/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/jocaml/3.13.0/parsing/.gitignore 2014-08-01 10:14:54.346065458 +0100
+@@ -0,0 +1 @@
++*.cm[oi]
+diff -urN camlp5-6.11/ocaml_stuff/jocaml/3.13.0/utils/.cvsignore camlp5-6.12-63a8c30f/ocaml_stuff/jocaml/3.13.0/utils/.cvsignore
+--- camlp5-6.11/ocaml_stuff/jocaml/3.13.0/utils/.cvsignore 2012-03-02 18:49:57.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocaml_stuff/jocaml/3.13.0/utils/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/jocaml/3.13.0/utils/.gitignore camlp5-6.12-63a8c30f/ocaml_stuff/jocaml/3.13.0/utils/.gitignore
+--- camlp5-6.11/ocaml_stuff/jocaml/3.13.0/utils/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/jocaml/3.13.0/utils/.gitignore 2014-08-01 10:14:54.346065458 +0100
+@@ -0,0 +1 @@
++*.cm[oix]
+diff -urN camlp5-6.11/ocaml_stuff/Makefile camlp5-6.12-63a8c30f/ocaml_stuff/Makefile
+--- camlp5-6.11/ocaml_stuff/Makefile 2013-06-10 16:41:26.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocaml_stuff/Makefile 2014-08-01 10:14:54.344065456 +0100
+@@ -1,4 +1,4 @@
+-# $Id: Makefile,v 6.8 2013-06-10 15:41:26 deraugla Exp $
++# Makefile,v
+
+ TOP=..
+ include ../config/Makefile
+@@ -38,11 +38,11 @@
+ cp common/utils/pconfig.mli $(VERSSDIR)/utils/.
+ sed 's/\$$Id.*\$$/Id/' common/utils/Makefile > \
+ $(VERSSDIR)/utils/Makefile
+- cp common/utils/.cvsignore $(VERSSDIR)/utils/.
++ cp common/utils/.gitignore $(VERSSDIR)/utils/.
+ cp common/utils/.depend $(VERSSDIR)/utils/.
+ sed 's/\$$Id.*\$$/Id/' common/parsing/Makefile > \
+ $(VERSSDIR)/parsing/Makefile
+- cp common/parsing/.cvsignore $(VERSSDIR)/parsing/.
++ cp common/parsing/.gitignore $(VERSSDIR)/parsing/.
+ cp common/parsing/.depend $(VERSSDIR)/parsing/.
+ (echo "let ocaml_version = \"$(OVERSION)\""; \
+ echo "let ocaml_name = \"$(OCAMLN)\""; \
+diff -urN camlp5-6.11/ocpp/.cvsignore camlp5-6.12-63a8c30f/ocpp/.cvsignore
+--- camlp5-6.11/ocpp/.cvsignore 2010-09-15 17:00:48.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocpp/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1,3 +0,0 @@
+-*.cm[oia]
+-ocpp
+-crc.ml
+diff -urN camlp5-6.11/ocpp/.gitignore camlp5-6.12-63a8c30f/ocpp/.gitignore
+--- camlp5-6.11/ocpp/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/ocpp/.gitignore 2014-08-01 10:14:54.346065458 +0100
+@@ -0,0 +1,3 @@
++*.cm[oia]
++ocpp
++crc.ml
+diff -urN camlp5-6.11/ocpp/Makefile camlp5-6.12-63a8c30f/ocpp/Makefile
+--- camlp5-6.11/ocpp/Makefile 2012-03-01 03:33:19.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocpp/Makefile 2014-08-01 10:14:54.346065458 +0100
+@@ -1,10 +1,10 @@
+-# $Id: Makefile,v 6.2 2012-03-01 03:33:19 deraugla Exp $
++# Makefile,v
+
+ include ../config/Makefile
+
+ SHELL=/bin/sh
+
+-INCLUDES=-I ../main -I ../boot -I ../odyl
++INCLUDES=-I ../main -I ../boot -I ../odyl -I ../lib
+ OCAMLCFLAGS=$(WARNERR) $(INCLUDES)
+ LINKFLAGS=$(INCLUDES)
+ OBJS=ocpp.cmo
+@@ -12,7 +12,7 @@
+ all: ocpp$(EXE)
+
+ ocpp$(EXE): $(OBJS)
+- $(OCAMLC) $(LINKFLAGS) ../boot/ploc.cmo ../boot/stdpp.cmo ../main/quotation.cmo ../odyl/odyl.cma $(OBJS) ../odyl/odyl.cmo -linkall -o ocpp$(EXE)
++ $(OCAMLC) $(LINKFLAGS) ../boot/versdep.cmo ../boot/ploc.cmo ../boot/stdpp.cmo ../main/quotation.cmo ../odyl/odyl.cma $(OBJS) ../odyl/odyl.cmo -linkall -o ocpp$(EXE)
+
+ clean::
+ rm -f *.cm[ioa] *.pp[io] *.[ao] *.obj *.lib *.out *.bak .*.bak
+diff -urN camlp5-6.11/ocpp/ocpp.ml camlp5-6.12-63a8c30f/ocpp/ocpp.ml
+--- camlp5-6.11/ocpp/ocpp.ml 2012-01-09 14:22:25.000000000 +0000
++++ camlp5-6.12-63a8c30f/ocpp/ocpp.ml 2014-08-01 10:14:54.346065458 +0100
+@@ -1,14 +1,16 @@
+ (* camlp5r *)
+-(* $Id: ocpp.ml,v 6.3 2012-01-09 14:22:25 deraugla Exp $ *)
++(* ocpp.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+-value buff = ref (String.create 80);
++open Versdep;
++
++value buff = ref (string_create 80);
+ value store len x =
+ do {
+ if len >= String.length buff.val then
+- buff.val := buff.val ^ String.create (String.length buff.val)
++ buff.val := buff.val ^ string_create (String.length buff.val)
+ else ();
+- buff.val.[len] := x;
++ string_set buff.val len x;
+ succ len
+ }
+ ;
+diff -urN camlp5-6.11/odyl/.cvsignore camlp5-6.12-63a8c30f/odyl/.cvsignore
+--- camlp5-6.11/odyl/.cvsignore 2010-09-15 17:00:48.000000000 +0100
++++ camlp5-6.12-63a8c30f/odyl/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1,6 +0,0 @@
+-*.a
+-*.cm[oiax]
+-*.cmxa
+-*.lib
+-odyl
+-odyl_config.ml
+diff -urN camlp5-6.11/odyl/.gitignore camlp5-6.12-63a8c30f/odyl/.gitignore
+--- camlp5-6.11/odyl/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/odyl/.gitignore 2014-08-01 10:14:54.347065458 +0100
+@@ -0,0 +1,6 @@
++*.a
++*.cm[oiax]
++*.cmxa
++*.lib
++odyl
++odyl_config.ml
+diff -urN camlp5-6.11/odyl/Makefile camlp5-6.12-63a8c30f/odyl/Makefile
+--- camlp5-6.11/odyl/Makefile 2012-03-01 03:33:19.000000000 +0000
++++ camlp5-6.12-63a8c30f/odyl/Makefile 2014-08-01 10:14:54.347065458 +0100
+@@ -1,4 +1,4 @@
+-# $Id: Makefile,v 6.2 2012-03-01 03:33:19 deraugla Exp $
++# Makefile,v
+
+ TOP=..
+ include $(TOP)/config/Makefile
+diff -urN camlp5-6.11/odyl/odyl_main.ml camlp5-6.12-63a8c30f/odyl/odyl_main.ml
+--- camlp5-6.11/odyl/odyl_main.ml 2012-01-09 14:22:25.000000000 +0000
++++ camlp5-6.12-63a8c30f/odyl/odyl_main.ml 2014-08-01 10:14:54.347065458 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* $Id: odyl_main.ml,v 6.3 2012-01-09 14:22:25 deraugla Exp $ *)
++(* odyl_main.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ value go = ref (fun () -> ());
+diff -urN camlp5-6.11/odyl/odyl_main.mli camlp5-6.12-63a8c30f/odyl/odyl_main.mli
+--- camlp5-6.11/odyl/odyl_main.mli 2010-09-15 17:00:48.000000000 +0100
++++ camlp5-6.12-63a8c30f/odyl/odyl_main.mli 2014-08-01 10:14:54.347065458 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: odyl_main.mli,v 6.1 2010-09-15 16:00:48 deraugla Exp $ *)
++(* odyl_main.mli,v *)
+
+ exception Error of string and string;
+
+diff -urN camlp5-6.11/odyl/odyl.ml camlp5-6.12-63a8c30f/odyl/odyl.ml
+--- camlp5-6.11/odyl/odyl.ml 2012-01-09 14:22:25.000000000 +0000
++++ camlp5-6.12-63a8c30f/odyl/odyl.ml 2014-08-01 10:14:54.347065458 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: odyl.ml,v 6.3 2012-01-09 14:22:25 deraugla Exp $ *)
++(* odyl.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ value apply_load () =
+diff -urN camlp5-6.11/README camlp5-6.12-63a8c30f/README
+--- camlp5-6.11/README 2013-08-15 23:08:21.000000000 +0100
++++ camlp5-6.12-63a8c30f/README 2014-08-01 10:14:54.283065418 +0100
+@@ -5,7 +5,7 @@
+ It is compatible with all versions of ocaml from 1.07 to 4.01.0 and
+ jocaml 3.12.0 to 3.12.1.
+
+- This Camlp5 version is 6.11.
++ This Camlp5 version is 6.12-exp.
+
+ Camlp5 must be compiled either in "transitional mode" or in "strict mode".
+ See the file MODE for information.
+diff -urN camlp5-6.11/test/check_ocaml_sources.sh camlp5-6.12-63a8c30f/test/check_ocaml_sources.sh
+--- camlp5-6.11/test/check_ocaml_sources.sh 2010-09-24 12:04:54.000000000 +0100
++++ camlp5-6.12-63a8c30f/test/check_ocaml_sources.sh 2014-08-01 10:14:54.347065458 +0100
+@@ -1,5 +1,5 @@
+ #!/bin/sh
+-# $Id: check_ocaml_sources.sh,v 6.18 2010-09-24 11:04:54 deraugla Exp $
++# check_ocaml_sources.sh,v
+
+ dir='../ocaml/trunk'
+ suff=ml
+diff -urN camlp5-6.11/test/check_ocaml_versions.sh camlp5-6.12-63a8c30f/test/check_ocaml_versions.sh
+--- camlp5-6.11/test/check_ocaml_versions.sh 2012-06-18 10:53:42.000000000 +0100
++++ camlp5-6.12-63a8c30f/test/check_ocaml_versions.sh 2014-08-01 10:14:54.347065458 +0100
+@@ -1,5 +1,5 @@
+ #!/bin/sh -e
+-# $Id: check_ocaml_versions.sh,v 6.11 2012-06-18 09:53:42 deraugla Exp $
++# check_ocaml_versions.sh,v
+
+ TOP=$HOME/work
+ DEST=$TOP/usr
+diff -urN camlp5-6.11/test/.cvsignore camlp5-6.12-63a8c30f/test/.cvsignore
+--- camlp5-6.11/test/.cvsignore 2010-09-30 08:33:58.000000000 +0100
++++ camlp5-6.12-63a8c30f/test/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.ml[tu]
+diff -urN camlp5-6.11/test/.gitignore camlp5-6.12-63a8c30f/test/.gitignore
+--- camlp5-6.11/test/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/test/.gitignore 2014-08-01 10:14:54.347065458 +0100
+@@ -0,0 +1 @@
++*.ml[tu]
+diff -urN camlp5-6.11/test/Makefile camlp5-6.12-63a8c30f/test/Makefile
+--- camlp5-6.11/test/Makefile 2012-03-01 03:33:19.000000000 +0000
++++ camlp5-6.12-63a8c30f/test/Makefile 2014-08-01 10:14:54.347065458 +0100
+@@ -1,4 +1,4 @@
+-# $Id: Makefile,v 6.6 2012-03-01 03:33:19 deraugla Exp $
++# Makefile,v
+ # Copyright (c) INRIA 2007-2012
+
+ DEP=../etc/pr_r.cmo quot_r.out.ml
+diff -urN camlp5-6.11/test/mkquot_o.sh camlp5-6.12-63a8c30f/test/mkquot_o.sh
+--- camlp5-6.11/test/mkquot_o.sh 2010-09-16 09:32:02.000000000 +0100
++++ camlp5-6.12-63a8c30f/test/mkquot_o.sh 2014-08-01 10:14:54.347065458 +0100
+@@ -1,5 +1,5 @@
+ #!/bin/sh
+-# $Id: mkquot_o.sh,v 6.2 2010-09-16 08:32:02 deraugla Exp $
++# mkquot_o.sh,v
+
+ head -n2 quot_o.ml
+ ../meta/camlp5r -nolib -I ../meta ../etc/pa_mktest.cmo ../etc/pr_o.cmo -flag M -impl ../main/mLast.mli |
+diff -urN camlp5-6.11/test/mkquot.sh camlp5-6.12-63a8c30f/test/mkquot.sh
+--- camlp5-6.11/test/mkquot.sh 2010-09-15 17:00:48.000000000 +0100
++++ camlp5-6.12-63a8c30f/test/mkquot.sh 2014-08-01 10:14:54.347065458 +0100
+@@ -1,5 +1,5 @@
+ #!/bin/sh
+-# $Id: mkquot.sh,v 6.1 2010-09-15 16:00:48 deraugla Exp $
++# mkquot.sh,v
+
+ echo '(* file generated by mkquot.sh: do not edit! *)'
+ echo
+diff -urN camlp5-6.11/test/quot_o.ml camlp5-6.12-63a8c30f/test/quot_o.ml
+--- camlp5-6.11/test/quot_o.ml 2010-11-14 17:09:00.000000000 +0000
++++ camlp5-6.12-63a8c30f/test/quot_o.ml 2014-08-01 10:14:54.347065458 +0100
+@@ -1,4 +1,4 @@
+-(* $Id: quot_o.ml,v 6.22 2010-11-14 17:09:00 deraugla Exp $ *)
++(* quot_o.ml,v *)
+
+ <:ctyp< $t1$ . $t2$ >>;;
+ MLast.TyAli (loc, t1, t2);;
+diff -urN camlp5-6.11/test/quot_r.ml camlp5-6.12-63a8c30f/test/quot_r.ml
+--- camlp5-6.11/test/quot_r.ml 2010-11-14 17:09:00.000000000 +0000
++++ camlp5-6.12-63a8c30f/test/quot_r.ml 2014-08-01 10:14:54.347065458 +0100
+@@ -1,4 +1,4 @@
+-(* $Id: quot_r.ml,v 6.37 2010-11-14 17:09:00 deraugla Exp $ *)
++(* quot_r.ml,v *)
+
+ (* ctyp: Type expressions of the language. *)
+
+diff -urN camlp5-6.11/tools/apply.sh camlp5-6.12-63a8c30f/tools/apply.sh
+--- camlp5-6.11/tools/apply.sh 2010-09-15 17:00:48.000000000 +0100
++++ camlp5-6.12-63a8c30f/tools/apply.sh 2014-08-01 10:14:54.348065459 +0100
+@@ -1,5 +1,5 @@
+ #!/bin/sh
+-# $Id: apply.sh,v 6.1 2010-09-15 16:00:48 deraugla Exp $
++# apply.sh,v
+
+ ARGS1=
+ ARGS2=
+diff -urN camlp5-6.11/tools/camlp5_comm.sh camlp5-6.12-63a8c30f/tools/camlp5_comm.sh
+--- camlp5-6.11/tools/camlp5_comm.sh 2012-03-03 01:38:08.000000000 +0000
++++ camlp5-6.12-63a8c30f/tools/camlp5_comm.sh 2014-08-01 10:14:54.348065459 +0100
+@@ -1,5 +1,5 @@
+ #!/bin/sh
+-# $Id: camlp5_comm.sh,v 6.5 2012-03-03 01:38:08 deraugla Exp $
++# camlp5_comm.sh,v
+
+ ARGS1="-mode $MODE"
+ FILE=
+diff -urN camlp5-6.11/tools/depend.sh camlp5-6.12-63a8c30f/tools/depend.sh
+--- camlp5-6.11/tools/depend.sh 2012-03-01 03:33:19.000000000 +0000
++++ camlp5-6.12-63a8c30f/tools/depend.sh 2014-08-01 10:14:54.348065459 +0100
+@@ -1,5 +1,5 @@
+ #!/bin/sh
+-# $Id: depend.sh,v 6.3 2012-03-01 03:33:19 deraugla Exp $
++# depend.sh,v
+
+ ARGS1="pr_depend.cmo --"
+ FILE=
+diff -urN camlp5-6.11/tools/mkcrc.sh camlp5-6.12-63a8c30f/tools/mkcrc.sh
+--- camlp5-6.11/tools/mkcrc.sh 2010-09-15 17:00:49.000000000 +0100
++++ camlp5-6.12-63a8c30f/tools/mkcrc.sh 2014-08-01 10:14:54.348065459 +0100
+@@ -1,5 +1,5 @@
+ #!/bin/sh -e
+-# $Id: mkcrc.sh,v 6.1 2010-09-15 16:00:49 deraugla Exp $
++# mkcrc.sh,v
+
+ V=$OVERSION
+
+diff -urN camlp5-6.11/top/camlp5_top.ml camlp5-6.12-63a8c30f/top/camlp5_top.ml
+--- camlp5-6.11/top/camlp5_top.ml 2013-03-13 07:52:28.000000000 +0000
++++ camlp5-6.12-63a8c30f/top/camlp5_top.ml 2014-08-01 10:14:54.348065459 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: camlp5_top.ml,v 6.5 2013-03-13 07:52:28 deraugla Exp $ *)
++(* camlp5_top.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ #load "pa_macro.cmo";
+@@ -190,5 +190,6 @@
+ ELSE
+ Toploop.print_warning (Ast2pt.mkloc loc) Format.err_formatter
+ (IFDEF OCAML_VERSION <= OCAML_3_08_4 THEN Warnings.Other txt
+- ELSE Warnings.Camlp4 txt END)
++ ELSIFDEF OCAML_VERSION < OCAML_4_02_0 THEN Warnings.Camlp4 txt
++ ELSE Warnings.Preprocessor txt END)
+ END;
+diff -urN camlp5-6.11/top/.cvsignore camlp5-6.12-63a8c30f/top/.cvsignore
+--- camlp5-6.11/top/.cvsignore 2010-09-15 17:00:49.000000000 +0100
++++ camlp5-6.12-63a8c30f/top/.cvsignore 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-*.cm[oia]
+diff -urN camlp5-6.11/top/.gitignore camlp5-6.12-63a8c30f/top/.gitignore
+--- camlp5-6.11/top/.gitignore 1970-01-01 01:00:00.000000000 +0100
++++ camlp5-6.12-63a8c30f/top/.gitignore 2014-08-01 10:14:54.348065459 +0100
+@@ -0,0 +1 @@
++*.cm[oia]
+diff -urN camlp5-6.11/top/Makefile camlp5-6.12-63a8c30f/top/Makefile
+--- camlp5-6.11/top/Makefile 2013-03-15 18:30:46.000000000 +0000
++++ camlp5-6.12-63a8c30f/top/Makefile 2014-08-01 10:14:54.348065459 +0100
+@@ -1,9 +1,9 @@
+-# $Id: Makefile,v 6.6 2013-03-15 18:30:46 deraugla Exp $
++# Makefile,v
+
+ TOP=..
+ include ../config/Makefile
+
+-INCLUDES=-I ../main -I ../boot -I $(OTOP)/utils -I $(OTOP)/parsing -I $(OCLIBDIR)
++INCLUDES=-I ../main -I ../boot -I $(OTOP)/utils -I $(OTOP)/parsing -I "$(OCLIBDIR)"
+ OCAMLCFLAGS=$(WARNERR) $(INCLUDES)
+
+ CAMLP5_OBJS=$(OTOP)/utils/pconfig.cmo ../boot/versdep.cmo ../boot/ploc.cmo ../boot/plexing.cmo ../boot/plexer.cmo ../boot/fstream.cmo ../boot/gramext.cmo ../boot/grammar.cmo ../boot/diff.cmo ../boot/extfold.cmo ../boot/extfun.cmo ../boot/pretty.cmo ../boot/pprintf.cmo ../boot/eprinter.cmo ../main/quotation.cmo ../main/reloc.cmo ../main/prtools.cmo ../main/ast2pt.cmo ../main/pcaml.cmo ../main/exparser.cmo ../boot/stdpp.cmo ../boot/token.cmo
+diff -urN camlp5-6.11/top/oprint.ml camlp5-6.12-63a8c30f/top/oprint.ml
+--- camlp5-6.11/top/oprint.ml 2012-01-09 14:22:25.000000000 +0000
++++ camlp5-6.12-63a8c30f/top/oprint.ml 2014-08-01 10:14:54.349065460 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r *)
+-(* $Id: oprint.ml,v 6.3 2012-01-09 14:22:25 deraugla Exp $ *)
++(* oprint.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ open Format;
+diff -urN camlp5-6.11/top/rprint.ml camlp5-6.12-63a8c30f/top/rprint.ml
+--- camlp5-6.11/top/rprint.ml 2013-07-02 17:27:48.000000000 +0100
++++ camlp5-6.12-63a8c30f/top/rprint.ml 2014-08-01 10:14:54.349065460 +0100
+@@ -1,5 +1,5 @@
+ (* camlp5r pa_macro.cmo *)
+-(* $Id: rprint.ml,v 6.17 2013-07-02 16:27:48 deraugla Exp $ *)
++(* rprint.ml,v *)
+ (* Copyright (c) INRIA 2007-2012 *)
+
+ IFDEF OCAML_VERSION >= OCAML_3_03 THEN
+@@ -212,6 +212,9 @@
+ | Otyp_manifest ty1 ty2 ->
+ fprintf ppf "@[<2>%a ==@ %a@]" print_out_type ty1 print_out_type ty2
+ | Otyp_abstract -> fprintf ppf "'abstract"
++ | IFDEF OCAML_VERSION >= OCAML_4_02_0 THEN
++ Otyp_open -> fprintf ppf "open"
++ END
+ | Otyp_alias _ _ | Otyp_arrow _ _ _ | Otyp_constr _ [_ :: _] as ty ->
+ fprintf ppf "@[<1>(%a)@]" print_out_type ty
+ | IFDEF OCAML_VERSION >= OCAML_3_05 THEN
+@@ -339,9 +342,15 @@
+ (print_typlist print_out_type ",") tyl ]
+ in
+ fprintf ppf "@[%a%a@]" pr_tyl tyl print_ident id
+- | Octy_fun lab ty cty ->
++ | IFDEF OCAML_VERSION < OCAML_4_02_0 THEN
++ Octy_fun lab ty cty ->
++ fprintf ppf "@[%s[ %a ] ->@ %a@]" (if lab <> "" then lab ^ ":" else "")
++ print_out_type ty print_out_class_type cty
++ ELSE
++ Octy_arrow lab ty cty ->
+ fprintf ppf "@[%s[ %a ] ->@ %a@]" (if lab <> "" then lab ^ ":" else "")
+ print_out_type ty print_out_class_type cty
++ END
+ | Octy_signature self_ty csil ->
+ let pr_param ppf =
+ fun
+@@ -379,9 +388,22 @@
+ | Omty_signature sg ->
+ fprintf ppf "@[<hv 2>sig@ %a@;<1 -2>end@]" print_out_signature sg
+ | Omty_functor name mty_arg mty_res ->
+- fprintf ppf "@[<2>functor@ (%s : %a) ->@ %a@]" name
+- print_out_module_type mty_arg print_out_module_type mty_res
+- | Omty_abstract -> () ]
++ IFDEF OCAML_VERSION < OCAML_4_02_0 THEN
++ fprintf ppf "@[<2>functor@ (%s : %a) ->@ %a@]" name
++ print_out_module_type mty_arg print_out_module_type mty_res
++ ELSE
++ match mty_arg with
++ [ Some mty_arg ->
++ fprintf ppf "@[<2>functor@ (%s : %a) ->@ %a@]" name
++ print_out_module_type mty_arg print_out_module_type mty_res
++ | None ->
++ fprintf ppf "@[<2>functor@ (%s) ->@ %a@]" name
++ print_out_module_type mty_res ]
++ END
++ | Omty_abstract -> ()
++ | IFDEF OCAML_VERSION >= OCAML_4_02_0 THEN
++ Omty_alias oi -> fprintf ppf "<rprint.ml: Omty_alias not impl>"
++ END ]
+ and print_out_signature ppf =
+ fun
+ [ [] -> ()
+@@ -391,8 +413,10 @@
+ print_out_signature items ]
+ and print_out_sig_item ppf =
+ fun
+- [ Osig_exception id tyl ->
++ [ IFDEF OCAML_VERSION < OCAML_4_02_0 THEN
++ Osig_exception id tyl ->
+ fprintf ppf "@[<2>exception %a@]" print_out_constr (id, tyl)
++ END
+ | Osig_modtype name Omty_abstract ->
+ fprintf ppf "@[<2>module type %s = 'a@]" name
+ | Osig_modtype name mty ->
+@@ -448,8 +472,11 @@
+ IFDEF OCAML_VERSION <= OCAML_3_08_4 THEN
+ let (name, args, ty, priv) = x in
+ (name, args, ty, priv, [])
+- ELSE
++ ELSIFDEF OCAML_VERSION < OCAML_4_02_0 THEN
+ x
++ ELSE
++ (x.otype_name, x.otype_params, x.otype_type, x.otype_private,
++ x.otype_cstrs)
+ END
+ in
+ let constrain ppf (ty, ty') =
diff --git a/ocaml-camlp5.spec b/ocaml-camlp5.spec
index ab0fb19..66578bb 100644
--- a/ocaml-camlp5.spec
+++ b/ocaml-camlp5.spec
@@ -1,15 +1,19 @@
%global opt %(test -x %{_bindir}/ocamlopt && echo 1 || echo 0)
Name: ocaml-camlp5
-Version: 6.11
-Release: 5%{?dist}
+Version: 6.12
+Release: 0.git63a8c30f%{?dist}
Summary: Classical version of camlp4 OCaml preprocessor
-Group: Development/Libraries
License: BSD
-URL: http://pauillac.inria.fr/~ddr/camlp5/
+URL: http://camlp5.gforge.inria.fr/
+
+Source0: http://camlp5.gforge.inria.fr/distrib/src/camlp5-6.11.tgz
-Source0: http://pauillac.inria.fr/~ddr/camlp5/distrib/src/camlp5-%{version}.tgz
+# This is a patch from the 6.11 tarball to the 63a8c30f commit which
+# is a prerelease of 6.12. The git repo can be found here:
+# git://scm.gforge.inria.fr/camlp5/camlp5.git
+Patch1: camlp5-6.12-63a8c30f.patch
BuildRequires: ocaml
BuildRequires: ocaml-ocamldoc
@@ -39,7 +43,9 @@ developing applications that use %{name}.
%prep
-%setup -q -n camlp5-%{version}
+%setup -q -n camlp5-6.11
+
+%patch1 -p1
# Build with debug information
sed -i 's,WARNERR="-warn-error A",WARNERR="-g -warn-error A",' configure
@@ -109,8 +115,10 @@ rm -f doc/html/.cvsignore doc/htmlp/{.cvsignore,*.sh,Makefile,html2*}
%changelog
-* Mon Jul 21 2014 Richard W.M. Jones <rjones at redhat.com> - 6.11-5
+* Fri Aug 01 2014 Richard W.M. Jones <rjones at redhat.com> - 6.12-0.git63a8c30f
+- Rebase to 6.12 prerelease which supports OCaml 4.02.
- OCaml 4.02.0 beta rebuild.
+- New source URL.
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 6.11-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
More information about the scm-commits
mailing list