This is an automated email from the git hooks/post-receive script.

glondu pushed a commit to branch master
in repository cppo.

commit 9ed803e3771a386295908e73afdb095ffccb6732
Author: Stephane Glondu <st...@glondu.net>
Date:   Tue Jan 26 15:48:20 2016 +0100

    Imported Upstream version 1.3.0
---
 Makefile            |  2 +-
 cppo_eval.ml        |  2 +-
 cppo_lexer.mll      |  1 +
 cppo_parser.mly     | 14 ++++++++++++--
 cppo_types.ml       |  8 ++++++++
 test/Makefile       |  6 +++++-
 test/paren_arg.cppo |  3 +++
 test/paren_arg.ref  |  4 ++++
 8 files changed, 35 insertions(+), 5 deletions(-)

diff --git a/Makefile b/Makefile
index 6039f72..437962c 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-VERSION = 1.1.2
+VERSION = 1.3.0
 
 ifeq "$(shell ocamlc -config |grep os_type)" "os_type: Win32"
 EXE=.exe
diff --git a/cppo_eval.ml b/cppo_eval.ml
index f50417b..0f077a8 100644
--- a/cppo_eval.ml
+++ b/cppo_eval.ml
@@ -165,7 +165,7 @@ or into a variable with the same properties."
                `Text (_, is_space, s) -> s
              | _ ->
                  expansion_error ()
-           ) l
+           ) (Cppo_types.flatten_nodes l)
          in
          let s = String.concat "" text in
          (match Cppo_lexer.int_tuple_of_string s with
diff --git a/cppo_lexer.mll b/cppo_lexer.mll
index ea590ab..b479704 100644
--- a/cppo_lexer.mll
+++ b/cppo_lexer.mll
@@ -353,6 +353,7 @@ and ocaml_token e = parse
       { new_line e;
         TEXT (loc lexbuf, false, lexeme lexbuf) }
 
+  | "("       { e.line_start <- false; OP_PAREN (loc lexbuf) }
   | ")"       { e.line_start <- false; CL_PAREN (loc lexbuf) }
   | ","       { e.line_start <- false; COMMA (loc lexbuf) }
 
diff --git a/cppo_parser.mly b/cppo_parser.mly
index 1131499..1e33e5f 100644
--- a/cppo_parser.mly
+++ b/cppo_parser.mly
@@ -68,7 +68,12 @@ full_node_list0:
 /* TODO: make lone COMMAs valid only in "main" rule */
 /* TODO: same for parentheses */
 node:
-  TEXT          { `Text $1 }
+| OP_PAREN node_or_comma_list0 CL_PAREN
+                { `Seq [`Text ($1, false, "(");
+                        `Seq $2;
+                        `Text ($3, false, ")")] }
+
+| TEXT          { `Text $1 }
 
 | IDENT         { let loc, name = $1 in
                   `Ident (loc, name, None) }
@@ -183,12 +188,17 @@ elif_list:
 |                  { [] }
 ;
 
-
 args1:
   node_list0 COMMA args1   { $1 :: $3  }
 | node_list0               { [ $1 ] }
 ;
 
+node_or_comma_list0:
+| node node_or_comma_list0   { $1 :: $2 }
+| COMMA node_or_comma_list0  { `Text ($1, false, ",") :: $2 }
+|                            { [] }
+;
+
 def_args1:
 | arg_blank IDENT COMMA def_args1
                                { (snd $2) :: $4 }
diff --git a/cppo_types.ml b/cppo_types.ml
index 5dab3f6..a31529f 100644
--- a/cppo_types.ml
+++ b/cppo_types.ml
@@ -97,3 +97,11 @@ let make_line_directive ?(fname = true) pos =
 let parse_file = ref ((fun file -> assert false) : string -> node list)
 
 let dummy_loc = (Lexing.dummy_pos, Lexing.dummy_pos)
+
+let rec flatten_nodes (l: node list): node list =
+  List.flatten (List.map flatten_node l)
+
+and flatten_node (node: node): node list =
+  match node with
+  | `Seq l -> flatten_nodes l
+  | x -> [x]
diff --git a/test/Makefile b/test/Makefile
index 1521b86..9e18cb7 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -1,4 +1,4 @@
-TESTS = ext comments cond tuple version
+TESTS = ext comments cond tuple paren_arg version
 .PHONY: all clean $(TESTS)
 
 all: $(TESTS)
@@ -25,6 +25,10 @@ loc:
        ../cppo loc.cppo > loc.out
        diff -u loc.ref loc.out
 
+paren_arg:
+       ../cppo paren_arg.cppo > paren_arg.out
+       diff -u paren_arg.ref paren_arg.out
+
 version:
        ../cppo -V X:123.05.2-alpha.1+foo-2.1 version.cppo > version.out
 
diff --git a/test/paren_arg.cppo b/test/paren_arg.cppo
new file mode 100644
index 0000000..f4c4803
--- /dev/null
+++ b/test/paren_arg.cppo
@@ -0,0 +1,3 @@
+#define F(x, y) <x> <y>
+F((1, (2)), 34)
+F((1\,\(2\)), 34)
diff --git a/test/paren_arg.ref b/test/paren_arg.ref
new file mode 100644
index 0000000..72fe773
--- /dev/null
+++ b/test/paren_arg.ref
@@ -0,0 +1,4 @@
+# 2 "paren_arg.cppo"
+ <(1, (2))> < 34> 
+# 3
+ <(1 , (2 ))> < 34> 

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-ocaml-maint/packages/cppo.git

_______________________________________________
Pkg-ocaml-maint-commits mailing list
Pkg-ocaml-maint-commits@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-ocaml-maint-commits

Reply via email to