]> git.saurik.com Git - bison.git/blobdiff - tests/regression.at
Work around autoconf 2.63b bug in testsuite.
[bison.git] / tests / regression.at
index a3e7d4f79851fd8ae0a51001376b9b3a966cd671..fa2278a8f7ed6aaec8268a9da5c5b7a1cbcfe0d1 100644 (file)
@@ -444,6 +444,7 @@ int yylex (void);
 %token C_TOKEN 'c'
 %token 'd' D_TOKEN
 %token SPECIAL "\\\'\?\"\a\b\f\n\r\t\v\001\201\x001\x000081??!"
+%token SPECIAL "\\\'\?\"\a\b\f\n\r\t\v\001\201\x001\x000081??!"
 %%
 exp: "a" "\\\'\?\"\a\b\f\n\r\t\v\001\201\x001\x000081??!";
 %%
@@ -469,10 +470,22 @@ main (void)
 }
 ]])
 
-AT_BISON_CHECK([-o input.c input.y])
+# Checking the warning message guarantees that the trigraph "??!" isn't
+# unnecessarily escaped here even though it would need to be if encoded in a
+# C-string literal.  Also notice that unnecessary escaping, such as "\?", from
+# the user specification is eliminated.
+AT_BISON_CHECK([-o input.c input.y], [[0]], [[]],
+[[input.y:22.8-14: warning: symbol SPECIAL redeclared
+input.y:22.8-63: warning: symbol `"\\'?\"\a\b\f\n\r\t\v\001\201\001\201??!"' used more than once as a literal string
+]])
 AT_COMPILE([input])
+
+# Checking the error message here guarantees that yytname, which does contain
+# C-string literals, does have the trigraph escaped correctly.  Thus, the
+# symbol name reported by the parser is exactly the same as that reported by
+# Bison itself.
 AT_DATA([experr],
-[[syntax error, unexpected "\\'?\"\a\b\f\n\r\t\v\001\201\001\201?\?!", expecting a
+[[syntax error, unexpected "\\'?\"\a\b\f\n\r\t\v\001\201\001\201??!", expecting a
 ]])
 AT_PARSER_CHECK([./input], 1, [], [experr])
 AT_CLEANUP
@@ -926,11 +939,7 @@ m4_define([AT_CHECK_DANCER],
 AT_BISON_OPTION_PUSHDEFS([$1])
 _AT_DATA_DANCER_Y([$1])
 AT_BISON_CHECK([-o dancer.c dancer.y])
-AT_LALR1_CC_IF(
-  [AT_BISON_CHECK([-o dancer.cc dancer.y])
-   AT_COMPILE_CXX([dancer])],
-  [AT_BISON_CHECK([-o dancer.c dancer.y])
-   AT_COMPILE([dancer])])
+AT_FULL_COMPILE([dancer])
 AT_PARSER_CHECK([./dancer], 1, [],
 [syntax error, unexpected ':'
 ])
@@ -1026,11 +1035,7 @@ m4_define([AT_CHECK_EXPECT2],
 AT_BISON_OPTION_PUSHDEFS([$1])
 _AT_DATA_EXPECT2_Y([$1])
 AT_BISON_CHECK([-o expect2.c expect2.y])
-AT_LALR1_CC_IF(
-  [AT_BISON_CHECK([-o expect2.cc expect2.y])
-   AT_COMPILE_CXX([expect2])],
-  [AT_BISON_CHECK([-o expect2.c expect2.y])
-   AT_COMPILE([expect2])])
+AT_FULL_COMPILE([expect2])
 AT_PARSER_CHECK([./expect2], 1, [],
 [syntax error, unexpected '+', expecting A or B
 ])
@@ -1188,7 +1193,7 @@ AT_CLEANUP
 ## Token number in precedence declaration.  ##
 ## ---------------------------------------- ##
 
-AT_SETUP([[Token number in precedence declaration.]])
+AT_SETUP([[Token number in precedence declaration]])
 
 # POSIX says token numbers can be declared in %left, %right, and %nonassoc, but
 # we lost this in Bison 1.50.
@@ -1242,3 +1247,27 @@ AT_COMPILE([[input]])
 AT_PARSER_CHECK([[./input]])
 
 AT_CLEANUP
+
+
+
+## ----------------------------------------------- ##
+## Fix user actions without a trailing semicolon.  ##
+## ----------------------------------------------- ##
+
+AT_SETUP([[Fix user actions without a trailing semicolon]])
+
+# This feature is undocumented, but we accidentally broke it in 2.3a, and there
+# was a complaint at:
+# <http://lists.gnu.org/archive/html/bug-bison/2008-11/msg00001.html>.
+
+AT_DATA([input.y],
+[[%%
+start: {asdffdsa} ;
+]])
+
+AT_BISON_CHECK([[-o input.c input.y]])
+AT_CHECK([[sed -n '/asdffdsa/s/^ *//p' input.c]], [[0]],
+[[{asdffdsa;}
+]])
+
+AT_CLEANUP