summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2004-07-22 14:40:21 +0000
committerPaul Eggert <eggert@cs.ucla.edu>2004-07-22 14:40:21 +0000
commitac700aa646de0ea6b4d07af24ff6ca67e529486a (patch)
tree9d0d94f6b68993339b09c7bd132e88c1000728ce /tests
parentee42c6166b14ae855c6c1ffc100d5aead31175e2 (diff)
downloadbison-ac700aa646de0ea6b4d07af24ff6ca67e529486a.tar.gz
(_AT_CHECK_PRINTER_AND_DESTRUCTOR,
AT_CHECK_PRINTER_AND_DESTRUCTOR): New argument UNION-FLAG. All callers changed. (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Don't assume %union. Use type char, not unsigned int, when declaring an array of char; this lets us remove a cast. (Printers and Destructors): Add non-%union test cases.
Diffstat (limited to 'tests')
-rw-r--r--tests/actions.at49
1 files changed, 27 insertions, 22 deletions
diff --git a/tests/actions.at b/tests/actions.at
index 6dfb6f15..1e8d62f4 100644
--- a/tests/actions.at
+++ b/tests/actions.at
@@ -304,13 +304,13 @@ AT_CLEANUP
## Printers and Destructors. ##
## -------------------------- ##
-# _AT_CHECK_PRINTER_AND_DESTRUCTOR($1, $2, $3, $4, BISON-DIRECTIVE)
-# -----------------------------------------------------------------
+# _AT_CHECK_PRINTER_AND_DESTRUCTOR($1, $2, $3, $4, BISON-DIRECTIVE, UNION-FLAG)
+# -----------------------------------------------------------------------------
m4_define([_AT_CHECK_PRINTER_AND_DESTRUCTOR],
[m4_if([$1$2$3], $[1]$[2]$[3], [],
[m4_fatal([$0: Invalid arguments: $@])])dnl
-AT_SETUP([Printers and Destructors: $5])
+AT_SETUP([Printers and Destructors $6: $5])
# Make sure complex $n work.
@@ -328,18 +328,19 @@ AT_DATA_GRAMMAR([[input.y]],
%debug
%verbose
%locations
-%union
+]m4_ifval([$6], [%union
{
int ival;
-}
-
+}])
+[
%{
-]AT_LALR1_CC_IF([typedef yy::Location YYLTYPE;])
+]AT_LALR1_CC_IF([typedef yy::Location YYLTYPE;
+m4_ifval([$6], , [#define YYSTYPE int])])
[static int yylex (]AT_LEX_FORMALS[);
]AT_LALR1_CC_IF([], [static void yyerror (const char *msg);])
[%}
-%type <ival> 'x' ';' thing line input
+]m4_ifval([$6], [%type <ival> 'x' ';' thing line input])[
%printer { fprintf (yyoutput, "%d@%d-%d", $$, RANGE (@$)); }
input line thing 'x'
@@ -416,7 +417,7 @@ thing:
static int
yylex (]AT_LEX_FORMALS[)
{
- static const unsigned int input[] =
+ static const char input[] =
{
/* Exercise the discarding of stack top and input until `error'
can be reduced. */
@@ -433,21 +434,21 @@ yylex (]AT_LEX_FORMALS[)
if (counter < (sizeof(input) / sizeof (input[0])))
{
]AT_LALR1_CC_IF(
-[ yylval->ival = counter;
+[ int c = m4_ifval([$6], [yylval->ival], [*yylval]) = counter++;
/* As in BASIC, line numbers go from 10 to 10. */
- yylloc->begin.line = yylloc->begin.column = 10 * counter;
+ yylloc->begin.line = yylloc->begin.column = 10 * c;
yylloc->end.line = yylloc->end.column = yylloc->begin.line + 9;
printf ("sending: '%c' (%d@%d-%d)\n",
- input[[counter]], yylval->ival, RANGE (*yylloc));
- return (int) input[[counter++]];
+ input[[c]], c, RANGE (*yylloc));
+ return input[[c]];
],
-[ yylval.ival = counter;
+[ int c = m4_ifval([$6], [yylval.ival], [yylval]) = counter++;
/* As in BASIC, line numbers go from 10 to 10. */
- yylloc.first_line = yylloc.first_column = 10 * counter;
+ yylloc.first_line = yylloc.first_column = 10 * c;
yylloc.last_line = yylloc.last_column = yylloc.first_line + 9;
printf ("sending: '%c' (%d@%d-%d)\n",
- input[[counter]], yylval.ival, RANGE (yylloc));
- return (int) input[[counter++]];
+ input[[c]], c, RANGE (yylloc));
+ return input[[c]];
])[
}
else
@@ -547,16 +548,20 @@ AT_CLEANUP
])
-# AT_CHECK_PRINTER_AND_DESTRUCTOR([BISON-OPTIONS])
-# ------------------------------------------------
+# AT_CHECK_PRINTER_AND_DESTRUCTOR([BISON-OPTIONS], [UNION-FLAG])
+# --------------------------------------------------------------
# Produce `calc.y'.
m4_define([AT_CHECK_PRINTER_AND_DESTRUCTOR],
-[_AT_CHECK_PRINTER_AND_DESTRUCTOR($[1], $[2], $[3], $[4], [$1])
+[_AT_CHECK_PRINTER_AND_DESTRUCTOR($[1], $[2], $[3], $[4], [$1], [$2])
])
-AT_CHECK_PRINTER_AND_DESTRUCTOR()
+AT_CHECK_PRINTER_AND_DESTRUCTOR([])
+AT_CHECK_PRINTER_AND_DESTRUCTOR([], [with union])
AT_CHECK_PRINTER_AND_DESTRUCTOR([%locations %defines %skeleton "lalr1.cc"])
+AT_CHECK_PRINTER_AND_DESTRUCTOR([%locations %defines %skeleton "lalr1.cc"],
+ [with union])
-# FIXME. This test case fails.
+# FIXME. These test cases fail.
#AT_CHECK_PRINTER_AND_DESTRUCTOR([%glr-parser])
+#AT_CHECK_PRINTER_AND_DESTRUCTOR([%glr-parser], [with union])