[Pkg-ocaml-maint-commits] [otags] 01/02: Add patch to port to OCaml 4.02.3, patch from Hendrik Tews (Closes: #802166).
Mehdi Dogguy
mehdi at moszumanska.debian.org
Tue Jan 5 23:02:12 UTC 2016
This is an automated email from the git hooks/post-receive script.
mehdi pushed a commit to branch master
in repository otags.
commit 9fcffef4744be772225e37569386256b57a5dca1
Author: Mehdi Dogguy <mehdi at debian.org>
Date: Tue Jan 5 23:29:45 2016 +0100
Add patch to port to OCaml 4.02.3, patch from Hendrik Tews (Closes: #802166).
---
debian/changelog | 7 +
debian/patches/0001-Port-to-OCaml-4.02.3.patch | 224 +++++++++++++++++++++
.../0001-Set-required-version-to-4.02.patch | 22 --
debian/patches/series | 2 +-
4 files changed, 232 insertions(+), 23 deletions(-)
diff --git a/debian/changelog b/debian/changelog
index e5c64a6..7fe3d8c 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+otags (4.01.1-3) UNRELEASED; urgency=medium
+
+ * Add patch to port to OCaml 4.02.3, patch from Hendrik Tews
+ (Closes: #802166).
+
+ -- Mehdi Dogguy <mehdi at debian.org> Tue, 05 Jan 2016 23:27:59 +0100
+
otags (4.01.1-2) unstable; urgency=medium
* Set OCaml 4.02 as required version
diff --git a/debian/patches/0001-Port-to-OCaml-4.02.3.patch b/debian/patches/0001-Port-to-OCaml-4.02.3.patch
new file mode 100644
index 0000000..e2c3d05
--- /dev/null
+++ b/debian/patches/0001-Port-to-OCaml-4.02.3.patch
@@ -0,0 +1,224 @@
+From: Mehdi Dogguy <mehdi at debian.org>
+Date: Tue, 5 Jan 2016 23:24:22 +0100
+Subject: Port to OCaml 4.02.3
+
+Patch from upstream
+---
+ ChangeLog | 5 ++++
+ configure | 2 +-
+ tags.ml | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
+ 3 files changed, 86 insertions(+), 5 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 50e1c68..21bf6ca 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,8 @@
++2016-01-05 Hendrik Tews <Hendrik.Tews at FireEye.com>
++
++ * adapt to ocaml 4.02: module aliases, attributes,
++ exception patterns, extensible variants
++
+ 2013-09-25 Hendrik Tews <otags at askra.de>
+
+ * prepare doc/changes.html for release
+diff --git a/configure b/configure
+index d0e1bd3..e9e0c60 100755
+--- a/configure
++++ b/configure
+@@ -29,7 +29,7 @@
+
+ set -e
+
+-REQUIRED_OCAML_VERSION=4.01
++REQUIRED_OCAML_VERSION=4.02
+ OTAGS_VERSION=1
+
+ root=/usr/local
+diff --git a/tags.ml b/tags.ml
+index 18cb14b..493488f 100644
+--- a/tags.ml
++++ b/tags.ml
+@@ -40,6 +40,25 @@ let empty_str_ast = Struct_ast(<:str_item at no_loc< >>)
+
+ (******************************************************************************
+ *
++ ********************** utility functions *********************************
++ *
++ ******************************************************************************)
++
++
++(** returns the first string of ident, return something arbitrary if
++ the first element of the ident is an antiquotation.
++*)
++let rec first_string_of_ident = function
++ | <:ident< $x$ . $_$ >>
++ | <:ident< $x$ $_$ >> -> first_string_of_ident x
++ | <:ident< $lid:x$ >> -> x
++ | <:ident< $uid:x$ >> -> x
++ | <:ident< $anti:_$ >> -> "xxx"
++
++
++
++(******************************************************************************
++ *
+ ********************** tagging functions *********************************
+ *
+ ******************************************************************************)
+@@ -101,6 +120,13 @@ let rec tag_type write_tag typ = match typ with
+ | _ -> assert false
+ );
+ tag_type write_tag type_def
++ | Ast.TyExt(_loc, id, _param_list, type_def) ->
++ (* For wellformed input, id is just a lowercase ident. I make
++ * this work even if id is something else (and the input is invalid).
++ *)
++ write_tag (translate_loc (Ast.loc_of_ident id))
++ (first_string_of_ident id);
++ tag_type write_tag type_def
+ | <:ctyp< $_t1$ == $t2$ >> ->
+ (* don't tag t1, its the abbreviation *)
+ tag_type write_tag t2
+@@ -113,6 +139,14 @@ let rec tag_type write_tag typ = match typ with
+ List.iter
+ (tag_record_label_decl write_tag)
+ (Ast.list_of_ctyp t [])
++ | Ast.TyAtt(_loc, _attr, _payload, t) ->
++ (* In 4.02 camlp4 does not parse item attributes "[@@foo]" that can be
++ * attachted to whole type definitions. In the future they may appear in
++ * t as TyAtt node wrapped around a variant type. Therefore I recurse
++ * here. In 4.02 t may contain a TyAtt, but only for type equations
++ * (type a = int [@foo]), for which recursion would not be necessary.
++ *)
++ tag_type write_tag t
+
+ | <:ctyp< $tup:_$ >> (* tuple *)
+ | <:ctyp< [= $_$ ] >> (* exact variant type *)
+@@ -134,6 +168,7 @@ let rec tag_type write_tag typ = match typ with
+ | <:ctyp< $_$ -> $_$ >>
+ | <:ctyp< $_$ $_$ >> (* type constructor application *)
+ | <:ctyp< $_$ as $_$ >>
++ | <:ctyp< .. >> (* empty extensible type *)
+ | <:ctyp< >>
+ -> ()
+
+@@ -254,6 +289,12 @@ and tag_class_type write_tag = function
+ List.iter
+ (tag_class_sig_item write_tag)
+ (Ast.list_of_class_sig_item ci [])
++ | Ast.CtAtt(_loc, _attr, _payload, ct) ->
++ (* AFAICT there is no camlp4 grammar production constructing CtAtt.
++ * Nevertheless, I would expect CtAtt to be wrapped around class types as
++ * in "class ca = (object end : object end [@foo])", therefore I recurse.
++ *)
++ tag_class_type write_tag ct
+
+ | <:class_type< $virtual:_$ $id:_$ [ $_$] >>
+ (* class id somewhere on the right hand side *)
+@@ -330,7 +371,7 @@ let rec tag_sig_item write_tag sig_item = match sig_item with
+ (tag_module_sig_binding write_tag)
+ (Ast.list_of_module_binding mb [])
+
+- | <:sig_item< open $_$ >>
++ | Ast.SgOpn _ (* open x, open! x *)
+ | <:sig_item< include $_$ >>
+ -> ()
+
+@@ -348,6 +389,7 @@ and tag_module_sig_binding write_tag mod_binding = match mod_binding with
+ *)
+ let wrong_id_loc = translate_loc (Ast.loc_of_module_binding mod_binding) in
+ write_tag (Reparse.loc_of_first_word wrong_id_loc) id;
++
+ tag_module_type write_tag mtyp
+
+ | <:module_binding< >>
+@@ -372,10 +414,20 @@ and tag_module_type write_tag = function
+ List.iter
+ (tag_sig_item write_tag)
+ (Ast.list_of_sig_item sig_items [])
++ | Ast.MtAtt(_loc, _attr, _payload, mt) ->
++ (* AFAICT there is no camlp4 grammar production constructing MtAtt.
++ * Nevertheless, I would expect MtAtt to be wrapped around signature
++ * types as in "module type A = sig end [@foo]", therefore I recurse.
++ *)
++ tag_module_type write_tag mt
+
+ | <:module_type< >> (* emty module type ast *)
+ | <:module_type< ' $_$ >> (* ??? MtQuo ??? *)
+ | <:module_type< module type of $_$ >>
++ | <:module_type< (module $id:_$) >>
++ (* module alias as module type; in 4.02 parsed in Camlp4
++ * but not in OCaml; cannot be used in any way
++ *)
+ -> ()
+
+ | <:module_type< $anti:_$ >> (* anti quotations *)
+@@ -487,6 +539,12 @@ and tag_class_expr write_tag = function
+ tag_class_expr write_tag ce;
+ (* ct can contain an object body, therefore tag it *)
+ tag_class_type write_tag ct
++ | Ast.CeAtt(_loc, _attr, _payload, ce) ->
++ (* AFAICT there is no camlp4 grammar production constructing CeAtt.
++ * Nevertheless, I would expect CeAtt to be wrapped around classes
++ * as in "class a = object end [@foo]", therefore I recurse.
++ *)
++ tag_class_expr write_tag ce
+
+ | <:class_expr< $virtual:_$ $id:_$ [ $_$ ] >>
+ (* id on the right hand side -- ignore *)
+@@ -559,6 +617,19 @@ let rec tag_let_pattern write_tag = function
+ )
+ | <:patt< ($p1$ : $_$) >> ->
+ tag_let_pattern write_tag p1
++ | Ast.PaAtt(_loc, _attr, _payload, p) ->
++ (* Attributes can be wrapped around patterns,
++ * eg "let x [@foo] = ..."
++ *)
++ tag_let_pattern write_tag p
++ | <:patt< exception $p$>> ->
++ (* Exception patterns are only permitted in proper matches with at
++ * least 2 cases and not in let bindings. However, camlp4 parses
++ * exception patterns in let bindings and only the type checker
++ * gives an error on them. Therefore, do something here on exceptions
++ * patterns.
++ *)
++ tag_let_pattern write_tag p
+
+ | <:patt< $chr:_$ >>
+ | <:patt< $int:_$ >>
+@@ -588,7 +659,7 @@ let rec tag_let_pattern write_tag = function
+ | <:patt< ( module $_$ ) >> (* package pattern not permitted in top-level *)
+ | <:patt< >>
+ -> assert false
+-
++(* XXX (PaExc (_, _)) *)
+
+
+ let rec tag_str_item write_tag str_item = match str_item with
+@@ -651,7 +722,7 @@ let rec tag_str_item write_tag str_item = match str_item with
+ (Ast.list_of_module_binding mb [])
+
+
+- | <:str_item< open $_$ >>
++ | Ast.StOpn _ (* open x, open! x *)
+ | <:str_item< include $_$ >>
+ | <:str_item< $exp:_$ >>
+ | <:str_item< # $_$ $_$ >> (* directive *)
+@@ -693,6 +764,12 @@ and tag_module_expr write_tag = function
+ List.iter
+ (tag_str_item write_tag)
+ (Ast.list_of_str_item str_items [])
++ | Ast.MeAtt(_loc, _attr, _payload, me) ->
++ (* AFAICT there is no camlp4 grammar production constructing MeAtt.
++ * Nevertheless, I would expect MeAtt to be wrapped around signature
++ * types as in "module A = struct end [@foo]", therefore I recurse.
++ *)
++ tag_module_expr write_tag me
+
+ | <:module_expr< $_$ $_$ >> (* XXX check and probably tag this *)
+ | <:module_expr< $id:_$ >>
+@@ -718,4 +795,3 @@ let generate_tags write_tag unit_ast =
+ (tag_str_item write_tag)
+ (Ast.list_of_str_item str_unit [])
+ )
+-
diff --git a/debian/patches/0001-Set-required-version-to-4.02.patch b/debian/patches/0001-Set-required-version-to-4.02.patch
deleted file mode 100644
index 6797ebf..0000000
--- a/debian/patches/0001-Set-required-version-to-4.02.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From: Mehdi Dogguy <mehdi at debian.org>
-Date: Fri, 16 Oct 2015 23:03:47 +0200
-Subject: Set required version to 4.02
-
----
- configure | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/configure b/configure
-index d0e1bd3..e9e0c60 100755
---- a/configure
-+++ b/configure
-@@ -29,7 +29,7 @@
-
- set -e
-
--REQUIRED_OCAML_VERSION=4.01
-+REQUIRED_OCAML_VERSION=4.02
- OTAGS_VERSION=1
-
- root=/usr/local
---
diff --git a/debian/patches/series b/debian/patches/series
index 1f71c49..a06cc00 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1 +1 @@
-0001-Set-required-version-to-4.02.patch
+0001-Port-to-OCaml-4.02.3.patch
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ocaml-maint/packages/otags.git
More information about the Pkg-ocaml-maint-commits
mailing list