]> git.saurik.com Git - bison.git/blobdiff - tests/input.at
news: YYERROR vs variants
[bison.git] / tests / input.at
index d70eaad45a3ed46c6bea9ccfaed18eabe3f1fb0d..4ddf955aabe8f466aef248a3f6a7ab03ccc46d1b 100644 (file)
@@ -336,104 +336,67 @@ AT_CLEANUP
 
 AT_SETUP([Default %printer and %destructor redeclared])
 
 
 AT_SETUP([Default %printer and %destructor redeclared])
 
-AT_DATA([[input.y]],
-[[%destructor { destroy ($$); } <*> <*>
-%printer { print ($$); } <*> <*>
-
-%destructor { destroy ($$); } <*>
-%printer { print ($$); } <*>
-
-%destructor { destroy ($$); } <> <>
-%printer { print ($$); } <> <>
+# AT_TEST([*])
+# ------------
+m4_pushdef([AT_TEST],
+[AT_DATA([[input.y]],
+[[%destructor { destroy ($$); } <$1> <$1>
+%printer { print ($$); } <$1> <$1>
 
 
-%destructor { destroy ($$); } <>
-%printer { print ($$); } <>
+%destructor { destroy ($$); } <$1>
+%printer { print ($$); } <$1>
 
 %%
 
 start: %empty;
 
 
 %%
 
 start: %empty;
 
-%destructor { destroy ($$); } <*>;
-%printer { print ($$); } <*>;
-
-%destructor { destroy ($$); } <>;
-%printer { print ($$); } <>;
+%destructor { destroy ($$); } <$1>;
+%printer { print ($$); } <$1>;
 ]])
 
 AT_BISON_CHECK([-fcaret input.y], [1], [],
 ]])
 
 AT_BISON_CHECK([-fcaret input.y], [1], [],
-[[input.y:1.13-29: error: %destructor redeclaration for <*>
- %destructor { destroy ($$); } <*> <*>
-             ^^^^^^^^^^^^^^^^^
-input.y:1.13-29:     previous declaration
- %destructor { destroy ($$); } <*> <*>
-             ^^^^^^^^^^^^^^^^^
-input.y:2.10-24: error: %printer redeclaration for <*>
- %printer { print ($$); } <*> <*>
-          ^^^^^^^^^^^^^^^
-input.y:2.10-24:     previous declaration
- %printer { print ($$); } <*> <*>
-          ^^^^^^^^^^^^^^^
-input.y:4.13-29: error: %destructor redeclaration for <*>
- %destructor { destroy ($$); } <*>
-             ^^^^^^^^^^^^^^^^^
-input.y:1.13-29:     previous declaration
- %destructor { destroy ($$); } <*> <*>
-             ^^^^^^^^^^^^^^^^^
-input.y:5.10-24: error: %printer redeclaration for <*>
- %printer { print ($$); } <*>
-          ^^^^^^^^^^^^^^^
-input.y:2.10-24:     previous declaration
- %printer { print ($$); } <*> <*>
-          ^^^^^^^^^^^^^^^
-input.y:7.13-29: error: %destructor redeclaration for <>
+[[input.y:1.13-29: error: %destructor redeclaration for <>
  %destructor { destroy ($$); } <> <>
              ^^^^^^^^^^^^^^^^^
  %destructor { destroy ($$); } <> <>
              ^^^^^^^^^^^^^^^^^
-input.y:7.13-29:     previous declaration
+input.y:1.13-29:     previous declaration
  %destructor { destroy ($$); } <> <>
              ^^^^^^^^^^^^^^^^^
  %destructor { destroy ($$); } <> <>
              ^^^^^^^^^^^^^^^^^
-input.y:8.10-24: error: %printer redeclaration for <>
+input.y:2.10-24: error: %printer redeclaration for <>
  %printer { print ($$); } <> <>
           ^^^^^^^^^^^^^^^
  %printer { print ($$); } <> <>
           ^^^^^^^^^^^^^^^
-input.y:8.10-24:     previous declaration
+input.y:2.10-24:     previous declaration
  %printer { print ($$); } <> <>
           ^^^^^^^^^^^^^^^
  %printer { print ($$); } <> <>
           ^^^^^^^^^^^^^^^
-input.y:10.13-29: error: %destructor redeclaration for <>
+input.y:4.13-29: error: %destructor redeclaration for <>
  %destructor { destroy ($$); } <>
              ^^^^^^^^^^^^^^^^^
  %destructor { destroy ($$); } <>
              ^^^^^^^^^^^^^^^^^
-input.y:7.13-29:      previous declaration
+input.y:1.13-29:     previous declaration
  %destructor { destroy ($$); } <> <>
              ^^^^^^^^^^^^^^^^^
  %destructor { destroy ($$); } <> <>
              ^^^^^^^^^^^^^^^^^
-input.y:11.10-24: error: %printer redeclaration for <>
+input.y:5.10-24: error: %printer redeclaration for <>
  %printer { print ($$); } <>
           ^^^^^^^^^^^^^^^
  %printer { print ($$); } <>
           ^^^^^^^^^^^^^^^
-input.y:8.10-24:      previous declaration
+input.y:2.10-24:     previous declaration
  %printer { print ($$); } <> <>
           ^^^^^^^^^^^^^^^
  %printer { print ($$); } <> <>
           ^^^^^^^^^^^^^^^
-input.y:17.13-29: error: %destructor redeclaration for <*>
- %destructor { destroy ($$); } <*>;
-             ^^^^^^^^^^^^^^^^^
-input.y:4.13-29:      previous declaration
- %destructor { destroy ($$); } <*>
-             ^^^^^^^^^^^^^^^^^
-input.y:18.10-24: error: %printer redeclaration for <*>
- %printer { print ($$); } <*>;
-          ^^^^^^^^^^^^^^^
-input.y:5.10-24:      previous declaration
- %printer { print ($$); } <*>
-          ^^^^^^^^^^^^^^^
-input.y:20.13-29: error: %destructor redeclaration for <>
+input.y:11.13-29: error: %destructor redeclaration for <>
  %destructor { destroy ($$); } <>;
              ^^^^^^^^^^^^^^^^^
  %destructor { destroy ($$); } <>;
              ^^^^^^^^^^^^^^^^^
-input.y:10.13-29:     previous declaration
- %destructor { destroy ($$); } <>
+input.y:1.13-29:      previous declaration
+ %destructor { destroy ($$); } <> <>
              ^^^^^^^^^^^^^^^^^
              ^^^^^^^^^^^^^^^^^
-input.y:21.10-24: error: %printer redeclaration for <>
+input.y:12.10-24: error: %printer redeclaration for <>
  %printer { print ($$); } <>;
           ^^^^^^^^^^^^^^^
  %printer { print ($$); } <>;
           ^^^^^^^^^^^^^^^
-input.y:11.10-24:     previous declaration
- %printer { print ($$); } <>
+input.y:2.10-24:      previous declaration
+ %printer { print ($$); } <> <>
           ^^^^^^^^^^^^^^^
 ]])
           ^^^^^^^^^^^^^^^
 ]])
+])
+
+AT_TEST([], [], [])
+AT_TEST([], [*], [*])
+m4_popdef([AT_TEST])
 
 AT_CLEANUP
 
 
 AT_CLEANUP
 
@@ -463,17 +426,17 @@ AT_BISON_CHECK([input.y], [1], [],
 [[input.y:4.13-29: error: %destructor redeclaration for <field1>
 input.y:1.13-29:     previous declaration
 input.y:4.13-29: error: %destructor redeclaration for <field1>
 [[input.y:4.13-29: error: %destructor redeclaration for <field1>
 input.y:1.13-29:     previous declaration
 input.y:4.13-29: error: %destructor redeclaration for <field1>
-input.y:4.13-29:     previous declaration
+input.y:1.13-29:     previous declaration
 input.y:5.10-24: error: %printer redeclaration for <field2>
 input.y:2.10-24:     previous declaration
 input.y:5.10-24: error: %printer redeclaration for <field2>
 input.y:5.10-24: error: %printer redeclaration for <field2>
 input.y:2.10-24:     previous declaration
 input.y:5.10-24: error: %printer redeclaration for <field2>
-input.y:5.10-24:     previous declaration
+input.y:2.10-24:     previous declaration
 input.y:11.13-29: error: %destructor redeclaration for <field2>
 input.y:1.13-29:      previous declaration
 input.y:11.13-29: error: %destructor redeclaration for <field1>
 input.y:11.13-29: error: %destructor redeclaration for <field2>
 input.y:1.13-29:      previous declaration
 input.y:11.13-29: error: %destructor redeclaration for <field1>
-input.y:4.13-29:      previous declaration
+input.y:1.13-29:      previous declaration
 input.y:12.10-24: error: %printer redeclaration for <field2>
 input.y:12.10-24: error: %printer redeclaration for <field2>
-input.y:5.10-24:      previous declaration
+input.y:2.10-24:      previous declaration
 input.y:12.10-24: error: %printer redeclaration for <field1>
 input.y:2.10-24:      previous declaration
 ]])
 input.y:12.10-24: error: %printer redeclaration for <field1>
 input.y:2.10-24:      previous declaration
 ]])
@@ -993,15 +956,9 @@ without_period: "WITHOUT.PERIOD";
 AT_BISON_OPTION_POPDEFS
 
 # POSIX Yacc accept periods, but not dashes.
 AT_BISON_OPTION_POPDEFS
 
 # POSIX Yacc accept periods, but not dashes.
-AT_BISON_CHECK([--yacc -Wno-error input.y], [], [],
-[[input.y:9.8-16: warning: POSIX Yacc forbids dashes in symbol names: WITH-DASH [-Wyacc]
-input.y:20.8-16: warning: POSIX Yacc forbids dashes in symbol names: with-dash [-Wyacc]
-]])
-
-# So warn about them.
-AT_BISON_CHECK([-Wyacc input.y], [], [],
-[[input.y:9.8-16: warning: POSIX Yacc forbids dashes in symbol names: WITH-DASH [-Wyacc]
-input.y:20.8-16: warning: POSIX Yacc forbids dashes in symbol names: with-dash [-Wyacc]
+AT_BISON_CHECK([--yacc input.y], [1], [],
+[[input.y:9.8-16: error: POSIX Yacc forbids dashes in symbol names: WITH-DASH [-Werror=yacc]
+input.y:20.8-16: error: POSIX Yacc forbids dashes in symbol names: with-dash [-Werror=yacc]
 ]])
 
 # Dashes are fine for GNU Bison.
 ]])
 
 # Dashes are fine for GNU Bison.
@@ -1422,8 +1379,8 @@ AT_SETUP([["%define" Boolean variables]])
 
 AT_DATA([Input.y],
 [[%language "Java"
 
 AT_DATA([Input.y],
 [[%language "Java"
-%define public "maybe"
-%define parser_class_name "Input"
+%define public maybe
+%define parser_class_name {Input}
 %%
 start: %empty;
 ]])
 %%
 start: %empty;
 ]])
@@ -1442,17 +1399,21 @@ AT_SETUP([["%define" code variables]])
 
 m4_pushdef([AT_TEST],
 [AT_DATA([input.yy],
 
 m4_pushdef([AT_TEST],
 [AT_DATA([input.yy],
-[[%skeleton "lalr1.cc"
-%define api.namespace    ]$1[quux]$2[
-%define api.token.prefix ]$1[quux]$2[
+[[%skeleton "lalr1.cc" %locations
+%define api.location.type ]$1[quux]$2[
+%define api.namespace     ]$1[quux]$2[
+%define api.prefix        ]$1[quux]$2[
+%define api.token.prefix  ]$1[quux]$2[
 %token TOK // Otherwise api.token.prefix is unused.
 %%
 start: TOK;
 ]])
 
 AT_BISON_CHECK([[input.yy]], [0], [],
 %token TOK // Otherwise api.token.prefix is unused.
 %%
 start: TOK;
 ]])
 
 AT_BISON_CHECK([[input.yy]], [0], [],
-[[input.yy:3.9-24: warning: %define variable 'api.token.prefix' requires '{...}' values [-Wdeprecated]
-input.yy:2.9-21: warning: %define variable 'api.namespace' requires '{...}' values [-Wdeprecated]
+[[input.yy:2.9-25: warning: %define variable 'api.location.type' requires '{...}' values [-Wdeprecated]
+input.yy:4.9-18: warning: %define variable 'api.prefix' requires '{...}' values [-Wdeprecated]
+input.yy:5.9-24: warning: %define variable 'api.token.prefix' requires '{...}' values [-Wdeprecated]
+input.yy:3.9-21: warning: %define variable 'api.namespace' requires '{...}' values [-Wdeprecated]
 ]])
 ])
 
 ]])
 ])
 
@@ -1463,6 +1424,39 @@ m4_popdef([AT_TEST])
 AT_CLEANUP
 
 
 AT_CLEANUP
 
 
+## --------------------------- ##
+## %define keyword variables.  ##
+## --------------------------- ##
+
+AT_SETUP([["%define" keyword variables]])
+
+m4_pushdef([AT_TEST],
+[AT_DATA([input.y],
+[[%define api.pure                ]$1[true]$2[
+%define api.push-pull             ]$1[both]$2[
+%define lr.default-reduction      ]$1[most]$2[
+%define lr.keep-unreachable-state ]$1[true]$2[
+%define lr.type                   ]$1[lalr]$2[
+%%
+exp: %empty
+]])
+
+AT_BISON_CHECK([[input.y]], [0], [],
+[[input.y:5.9-15: warning: %define variable 'lr.type' requires keyword values [-Wdeprecated]
+input.y:3.9-28: warning: %define variable 'lr.default-reduction' requires keyword values [-Wdeprecated]
+input.y:4.9-33: warning: %define variable 'lr.keep-unreachable-state' requires keyword values [-Wdeprecated]
+input.y:2.9-21: warning: %define variable 'api.push-pull' requires keyword values [-Wdeprecated]
+input.y:1.9-16: warning: %define variable 'api.pure' requires keyword values [-Wdeprecated]
+]])
+])
+
+AT_TEST(["], ["])
+AT_TEST([{], [}])
+m4_popdef([AT_TEST])
+
+AT_CLEANUP
+
+
 ## ------------------------ ##
 ## %define enum variables.  ##
 ## ------------------------ ##
 ## ------------------------ ##
 ## %define enum variables.  ##
 ## ------------------------ ##
@@ -1768,11 +1762,11 @@ AT_BISON_CHECK([[-Dparse.lac.memory-trace=full input.y]],
 
 AT_CLEANUP
 
 
 AT_CLEANUP
 
-## --------------------------------------------- ##
-## -Werror is not affected by -Wnone and -Wall.  ##
-## --------------------------------------------- ##
+## ---------------------- ##
+## -Werror combinations.  ##
+## ---------------------- ##
 
 
-AT_SETUP([[-Werror is not affected by -Wnone and -Wall]])
+AT_SETUP([[-Werror combinations]])
 
 AT_DATA([[input.y]],
 [[%%
 
 AT_DATA([[input.y]],
 [[%%
@@ -1798,6 +1792,18 @@ AT_BISON_CHECK([[-Werror,no-all,other input.y]], [[1]], [[]],
 [[input.y:2.15: error: stray '$' [-Werror=other]
 ]])
 
 [[input.y:2.15: error: stray '$' [-Werror=other]
 ]])
 
+# Check that -Wno-error keeps warnings enabled, but non fatal.
+AT_BISON_CHECK([[-Werror -Wno-error=other input.y]], [[0]], [[]],
+[[input.y:2.15: warning: stray '$' [-Wother]
+]])
+
+AT_BISON_CHECK([[-Wno-error=other -Werror input.y]], [[0]], [[]],
+[[input.y:2.15: warning: stray '$' [-Wother]
+]])
+
+AT_BISON_CHECK([[-Werror=other -Wno-other input.y]], [[0]], [[]],
+[[]])
+
 AT_CLEANUP
 
 
 AT_CLEANUP
 
 
@@ -1820,10 +1826,10 @@ AT_BISON_CHECK([[$2 input.y]], [[1]], [[]],
 ]])
 ])
 
 ]])
 ])
 
-AT_TEST([%define api.prefix foo %name-prefix "bar"], [], [input.y:1.9-18])
-AT_TEST([], [-Dapi.prefix=foo -p bar], [<command line>:2])
-AT_TEST([%name-prefix "bar"], [-Dapi.prefix=foo], [<command line>:2])
-AT_TEST([%define api.prefix foo], [-p bar], [input.y:1.9-18])
+AT_TEST([%define api.prefix {foo} %name-prefix "bar"], [], [input.y:1.9-18])
+AT_TEST([], [-Dapi.prefix={foo} -p bar], [<command line>:2])
+AT_TEST([%name-prefix "bar"], [-Dapi.prefix={foo}], [<command line>:2])
+AT_TEST([%define api.prefix {foo}], [-p bar], [input.y:1.9-18])
 
 m4_popdef([AT_TEST])
 
 
 m4_popdef([AT_TEST])