]> git.saurik.com Git - bison.git/blobdiff - tests/conflicts.at
lalr1.cc: do not create stack.hh without %defines
[bison.git] / tests / conflicts.at
index 599d708b54486e24b232b6026f21e2fafcd59788..c4515e8c9a0269a1ae3f540e7e638f09ed1b7e85 100644 (file)
@@ -37,7 +37,7 @@ e: 'e' | /* Nothing. */;
 ]])
 
 AT_BISON_CHECK([-o input.c input.y], 0, [],
 ]])
 
 AT_BISON_CHECK([-o input.c input.y], 0, [],
-[[input.y:4.9: warning: rule useless in parser due to conflicts: e: /* empty */
+[[input.y:4.9: warning: rule useless in parser due to conflicts: e: /* empty */ [-Wother]
 ]])
 
 AT_CLEANUP
 ]])
 
 AT_CLEANUP
@@ -49,20 +49,17 @@ AT_CLEANUP
 
 AT_SETUP([%nonassoc and eof])
 
 
 AT_SETUP([%nonassoc and eof])
 
+AT_BISON_OPTION_PUSHDEFS
 AT_DATA_GRAMMAR([input.y],
 [[
 %{
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 AT_DATA_GRAMMAR([input.y],
 [[
 %{
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <assert.h>
 
 #define YYERROR_VERBOSE 1
 
 #define YYERROR_VERBOSE 1
-static void
-yyerror (const char *msg)
-{
-  fprintf (stderr, "%s\n", msg);
-}
-
+]AT_YYERROR_DEFINE[
 /* The current argument. */
 static const char *input;
 
 /* The current argument. */
 static const char *input;
 
@@ -70,8 +67,7 @@ static int
 yylex (void)
 {
   static size_t toknum;
 yylex (void)
 {
   static size_t toknum;
-  if (! (toknum <= strlen (input)))
-    abort ();
+  assert (toknum <= strlen (input));
   return input[toknum++];
 }
 
   return input[toknum++];
 }
 
@@ -92,6 +88,7 @@ main (int argc, const char *argv[])
   return yyparse ();
 }
 ]])
   return yyparse ();
 }
 ]])
+AT_BISON_OPTION_POPDEFS
 
 m4_pushdef([AT_NONASSOC_AND_EOF_CHECK],
 [AT_BISON_CHECK([$1[ -o input.c input.y]])
 
 m4_pushdef([AT_NONASSOC_AND_EOF_CHECK],
 [AT_BISON_CHECK([$1[ -o input.c input.y]])
@@ -169,7 +166,7 @@ AT_SKEL_JAVA_IF([AT_DATA], [AT_DATA_GRAMMAR])([input.y],
   #include <string>]], [[
   #include <assert.h>
   #include <stdio.h>
   #include <string>]], [[
   #include <assert.h>
   #include <stdio.h>
-  void yyerror (char const *msg);]])[
+  ]AT_YYERROR_DECLARE])[
   ]AT_YYLEX_PROTOTYPE[;
   #define USE(Var)
 }
   ]AT_YYLEX_PROTOTYPE[;
   #define USE(Var)
 }
@@ -210,31 +207,11 @@ public Object getLVal ()
   *lvalp = 1;
   return *input++;
 }]])[
   *lvalp = 1;
   return *input++;
 }]])[
-
-/*----------.
-| yyerror.  |
-`----------*/]AT_SKEL_JAVA_IF([[
-
-public void yyerror (String msg)
-{
-  System.err.println (msg);
-}
-
+]AT_YYERROR_DEFINE[
+]AT_SKEL_JAVA_IF([[
 };
 
 };
 
-%%]], [AT_SKEL_CC_IF([[
-
-void
-yy::parser::error (std::string const &msg)
-{
-  std::cerr << msg << std::endl;
-}]], [[
-
-void
-yyerror (char const *msg)
-{
-  fprintf (stderr, "%s\n", msg);
-}]])])[
+%%]])[
 
 /*-------.
 | main.  |
 
 /*-------.
 | main.  |
@@ -465,12 +442,12 @@ AT_CLEANUP
 # with minimal LR parser tables.
 
 AT_SETUP([[LAC: %nonassoc requires splitting canonical LR states]])
 # with minimal LR parser tables.
 
 AT_SETUP([[LAC: %nonassoc requires splitting canonical LR states]])
-
+AT_BISON_OPTION_PUSHDEFS
 AT_DATA_GRAMMAR([[input.y]],
 [[%code {
   #include <stdio.h>
 AT_DATA_GRAMMAR([[input.y]],
 [[%code {
   #include <stdio.h>
-  void yyerror (char const *);
-  int yylex (void);
+  ]AT_YYERROR_DECLARE[
+  ]AT_YYLEX_DECLARE[
 }
 
 %error-verbose
 }
 
 %error-verbose
@@ -507,19 +484,8 @@ look:
 reduce-nonassoc: %prec 'a';
 
 %%
 reduce-nonassoc: %prec 'a';
 
 %%
-
-void
-yyerror (char const *msg)
-{
-  fprintf (stderr, "%s\n", msg);
-}
-
-int
-yylex (void)
-{
-  char const *input = "aaa";
-  return *input++;
-}
+]AT_YYERROR_DEFINE[
+]AT_YYLEX_DEFINE(["aaa"])[
 
 int
 main (void)
 
 int
 main (void)
@@ -527,6 +493,7 @@ main (void)
   return yyparse ();
 }
 ]])
   return yyparse ();
 }
 ]])
+AT_BISON_OPTION_POPDEFS
 
 # Show canonical LR's failure.
 AT_BISON_CHECK([[-Dlr.type=canonical-lr -o input.c input.y]],
 
 # Show canonical LR's failure.
 AT_BISON_CHECK([[-Dlr.type=canonical-lr -o input.c input.y]],
@@ -818,7 +785,7 @@ cond:
 
 AT_BISON_CHECK([-o input.c input.y], 0, [],
 [[input.y: conflicts: 1 shift/reduce
 
 AT_BISON_CHECK([-o input.c input.y], 0, [],
 [[input.y: conflicts: 1 shift/reduce
-input.y:12.3-18: warning: rule useless in parser due to conflicts: cond: cond "then" cond
+input.y:12.3-18: warning: rule useless in parser due to conflicts: cond: cond "then" cond [-Wother]
 ]])
 
 AT_CLEANUP
 ]])
 
 AT_CLEANUP
@@ -862,7 +829,7 @@ id : '0';
 
 AT_BISON_CHECK([-o input.c --report=all input.y], 0, [],
 [[input.y: conflicts: 1 reduce/reduce
 
 AT_BISON_CHECK([-o input.c --report=all input.y], 0, [],
 [[input.y: conflicts: 1 reduce/reduce
-input.y:4.6-8: warning: rule useless in parser due to conflicts: id: '0'
+input.y:4.6-8: warning: rule useless in parser due to conflicts: id: '0' [-Wother]
 ]])
 
 # Check the contents of the report.
 ]])
 
 # Check the contents of the report.
@@ -1182,13 +1149,13 @@ reported_conflicts:
 
 AT_BISON_CHECK([[--report=all input.y]], 0, [],
 [[input.y: conflicts: 1 shift/reduce, 1 reduce/reduce
 
 AT_BISON_CHECK([[--report=all input.y]], 0, [],
 [[input.y: conflicts: 1 shift/reduce, 1 reduce/reduce
-input.y:12.5-20: warning: rule useless in parser due to conflicts: resolved_conflict: 'a' unreachable1
-input.y:20.5-20: warning: rule useless in parser due to conflicts: unreachable1: 'a' unreachable2
-input.y:21.4: warning: rule useless in parser due to conflicts: unreachable1: /* empty */
-input.y:25.13: warning: rule useless in parser due to conflicts: unreachable2: /* empty */
-input.y:25.16: warning: rule useless in parser due to conflicts: unreachable2: /* empty */
-input.y:31.5-7: warning: rule useless in parser due to conflicts: reported_conflicts: 'a'
-input.y:32.4: warning: rule useless in parser due to conflicts: reported_conflicts: /* empty */
+input.y:12.5-20: warning: rule useless in parser due to conflicts: resolved_conflict: 'a' unreachable1 [-Wother]
+input.y:20.5-20: warning: rule useless in parser due to conflicts: unreachable1: 'a' unreachable2 [-Wother]
+input.y:21.4: warning: rule useless in parser due to conflicts: unreachable1: /* empty */ [-Wother]
+input.y:25.13: warning: rule useless in parser due to conflicts: unreachable2: /* empty */ [-Wother]
+input.y:25.16: warning: rule useless in parser due to conflicts: unreachable2: /* empty */ [-Wother]
+input.y:31.5-7: warning: rule useless in parser due to conflicts: reported_conflicts: 'a' [-Wother]
+input.y:32.4: warning: rule useless in parser due to conflicts: reported_conflicts: /* empty */ [-Wother]
 ]])
 
 AT_CHECK([[cat input.output]], 0,
 ]])
 
 AT_CHECK([[cat input.output]], 0,
@@ -1334,10 +1301,10 @@ AT_CHECK([[cat input.y >> input-keep.y]])
 
 AT_BISON_CHECK([[input-keep.y]], 0, [],
 [[input-keep.y: conflicts: 2 shift/reduce, 2 reduce/reduce
 
 AT_BISON_CHECK([[input-keep.y]], 0, [],
 [[input-keep.y: conflicts: 2 shift/reduce, 2 reduce/reduce
-input-keep.y:22.4: warning: rule useless in parser due to conflicts: unreachable1: /* empty */
-input-keep.y:26.16: warning: rule useless in parser due to conflicts: unreachable2: /* empty */
-input-keep.y:32.5-7: warning: rule useless in parser due to conflicts: reported_conflicts: 'a'
-input-keep.y:33.4: warning: rule useless in parser due to conflicts: reported_conflicts: /* empty */
+input-keep.y:22.4: warning: rule useless in parser due to conflicts: unreachable1: /* empty */ [-Wother]
+input-keep.y:26.16: warning: rule useless in parser due to conflicts: unreachable2: /* empty */ [-Wother]
+input-keep.y:32.5-7: warning: rule useless in parser due to conflicts: reported_conflicts: 'a' [-Wother]
+input-keep.y:33.4: warning: rule useless in parser due to conflicts: reported_conflicts: /* empty */ [-Wother]
 ]])
 
 AT_CLEANUP
 ]])
 
 AT_CLEANUP