[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