X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/cd735a8c6caab8f705fe551cc0316d0292eef11d..c85541913b99f841de090aacf626bb8f52f7f727:/tests/actions.at diff --git a/tests/actions.at b/tests/actions.at index 8232a007..269bcce5 100644 --- a/tests/actions.at +++ b/tests/actions.at @@ -1,4 +1,4 @@ -# Executing Actions. -*- Autotest -*- +e# Executing Actions. -*- Autotest -*- # Copyright (C) 2001-2012 Free Software Foundation, Inc. @@ -30,7 +30,7 @@ AT_SETUP([Mid-rule actions]) AT_BISON_OPTION_PUSHDEFS AT_DATA_GRAMMAR([[input.y]], -[[%error-verbose +[[%define parse.error verbose %debug %{ ]AT_YYERROR_DECLARE[ @@ -80,7 +80,7 @@ AT_SETUP([Exotic Dollars]) AT_BISON_OPTION_PUSHDEFS AT_DATA_GRAMMAR([[input.y]], -[[%error-verbose +[[%define parse.error verbose %debug %{ ]AT_YYERROR_DECLARE[ @@ -136,7 +136,7 @@ AT_PARSER_CHECK([./input], 0, AT_DATA_GRAMMAR([[input.y]], [[ %{ -#include +# include ]AT_YYERROR_DECLARE[ ]AT_YYLEX_DECLARE[ typedef struct { int val; } stype; @@ -264,7 +264,7 @@ input: V(input, $$, @$, ": /* Nothing */\n"); } | line input /* Right recursive to load the stack so that popping at - END can be exercised. */ + END can be exercised. */ { $$ = 2; V(input, $$, @$, ": "); @@ -561,7 +561,7 @@ m4_define([AT_CHECK_PRINTER_AND_DESTRUCTOR], $3 _AT_CHECK_PRINTER_AND_DESTRUCTOR($[1], $[2], $[3], $[4], -[%error-verbose +[%define parse.error verbose %debug %verbose %locations @@ -592,7 +592,7 @@ AT_CHECK_PRINTER_AND_DESTRUCTOR([%glr-parser], [with union]) AT_SETUP([Default tagless %printer and %destructor]) AT_BISON_OPTION_PUSHDEFS([%locations]) AT_DATA_GRAMMAR([[input.y]], -[[%error-verbose +[[%define parse.error verbose %debug %locations %initial-action { @@ -646,7 +646,10 @@ main (void) } ]]) -AT_BISON_CHECK([-o input.c input.y]) +AT_BISON_CHECK([-o input.c input.y], [], [], +[[input.y:27.3-5: warning: useless %destructor for type <*> [-Wother] +input.y:27.3-5: warning: useless %printer for type <*> [-Wother] +]]) AT_COMPILE([input]) AT_PARSER_CHECK([./input], 1, [[<> destructor for 'd' @ 4. @@ -694,7 +697,7 @@ AT_CLEANUP AT_SETUP([Default tagged and per-type %printer and %destructor]) AT_BISON_OPTION_PUSHDEFS AT_DATA_GRAMMAR([[input.y]], -[[%error-verbose +[[%define parse.error verbose %debug %{ @@ -758,7 +761,10 @@ main (void) } ]]) -AT_BISON_CHECK([-o input.c input.y]) +AT_BISON_CHECK([-o input.c input.y], [], [], +[[input.y:22.3-4: warning: useless %destructor for type <> [-Wother] +input.y:22.3-4: warning: useless %printer for type <> [-Wother] +]]) AT_COMPILE([input]) AT_PARSER_CHECK([./input], 1, [[<*>//e destructor. @@ -817,16 +823,16 @@ AT_CLEANUP AT_SETUP([Default %printer and %destructor for user-defined end token]) -# _AT_CHECK_DEFAULT_PRINTER_AND_DESTRUCTOR_FOR_END_TOKEN(TYPED) -# ------------------------------------------------------------- -m4_define([_AT_CHECK_DEFAULT_PRINTER_AND_DESTRUCTOR_FOR_END_TOKEN], +# AT_TEST(TYPED) +# -------------- +m4_pushdef([AT_TEST], [m4_if($1, 0, [m4_pushdef([kind], []) m4_pushdef([not_kind], [*])], [m4_pushdef([kind], [*]) m4_pushdef([not_kind], [])]) AT_BISON_OPTION_PUSHDEFS([%locations]) AT_DATA_GRAMMAR([[input]]$1[[.y]], -[[%error-verbose +[[%define parse.error verbose %debug %locations %initial-action { @@ -891,8 +897,17 @@ main (void) ]]) AT_BISON_OPTION_POPDEFS -AT_BISON_CHECK([-o input$1.c input$1.y]) +AT_BISON_CHECK([-o input$1.c input$1.y], [], [], +[m4_if([$1], [0], +[[input0.y:27.3-5: warning: useless %destructor for type <*> [-Wother] +input0.y:27.3-5: warning: useless %printer for type <*> [-Wother] +]], +[[input1.y:27.3-4: warning: useless %destructor for type <> [-Wother] +input1.y:27.3-4: warning: useless %printer for type <> [-Wother] +]])]) + AT_COMPILE([input$1]) + AT_PARSER_CHECK([./input$1], 0, [[<]]kind[[> for 'E' @ 1. <]]kind[[> for 'S' @ 1. @@ -915,8 +930,10 @@ m4_popdef([kind]) m4_popdef([not_kind]) ]) -_AT_CHECK_DEFAULT_PRINTER_AND_DESTRUCTOR_FOR_END_TOKEN(0) -_AT_CHECK_DEFAULT_PRINTER_AND_DESTRUCTOR_FOR_END_TOKEN(1) +AT_TEST(0) +AT_TEST(1) + +m4_popdef([AT_TEST]) AT_CLEANUP @@ -976,7 +993,10 @@ main (void) ]]) AT_BISON_OPTION_POPDEFS -AT_BISON_CHECK([-o input.c input.y]) +AT_BISON_CHECK([-o input.c input.y], [], [], +[[input.y:21.6-8: warning: useless %destructor for type <*> [-Wother] +input.y:21.6-8: warning: useless %printer for type <*> [-Wother] +]]) AT_COMPILE([input]) AT_PARSER_CHECK([./input], [1], [], [[Starting parse @@ -1075,7 +1095,10 @@ main (void) ]]) AT_BISON_OPTION_POPDEFS -AT_BISON_CHECK([-o input.c input.y]) +AT_BISON_CHECK([-o input.c input.y], [], [], +[[input.y:22.3-4: warning: useless %destructor for type <> [-Wother] +input.y:22.3-4: warning: useless %printer for type <> [-Wother] +]]) AT_COMPILE([input]) AT_CLEANUP @@ -1132,8 +1155,10 @@ main (void) AT_BISON_OPTION_POPDEFS AT_BISON_CHECK([-o input.c input.y], 0,, -[[input.y:33.3-23: warning: unset value: $$ -input.y:30.3-35.37: warning: unused value: $3 +[[input.y:24.70-72: warning: useless %destructor for type <*> [-Wother] +input.y:24.70-72: warning: useless %printer for type <*> [-Wother] +input.y:33.3-23: warning: unset value: $$ [-Wother] +input.y:30.3-35.37: warning: unused value: $3 [-Wother] ]]) AT_COMPILE([input]) @@ -1248,17 +1273,14 @@ AT_CHECK_ACTION_LOCATIONS([[%printer]]) m4_pushdef([AT_TEST], [AT_SETUP([[Qualified $$ in actions: $1]]) -AT_BISON_OPTION_PUSHDEFS([%locations %skeleton "$1"]) +AT_BISON_OPTION_PUSHDEFS([%skeleton "$1"]) AT_DATA_GRAMMAR([[input.y]], [[%skeleton "$1" -%defines // FIXME: Mandated by lalr1.cc in Bison 2.6. -%locations // FIXME: Mandated by lalr1.cc in Bison 2.6. +%defines // FIXME: Mandated by glr.cc. %debug %code requires { -# include - typedef struct sem_type { int ival; @@ -1267,20 +1289,21 @@ AT_DATA_GRAMMAR([[input.y]], # define YYSTYPE sem_type -#ifdef __cplusplus +]AT_SKEL_CC_IF([[ # include static void report (std::ostream& yyo, int ival, float fval) { yyo << "ival: " << ival << ", fval: " << fval; } -#else +]], [[ +# include static void report (FILE* yyo, int ival, float fval) { fprintf (yyo, "ival: %d, fval: %1.1f", ival, fval); } -#endif +]])[ } %code @@ -1296,17 +1319,6 @@ AT_DATA_GRAMMAR([[input.y]], %printer { report (yyo, $$, $$ ); } ; %printer { report (yyo, $$, $$); } <>; -]AT_SKEL_CC_IF([[ -/* The lalr1.cc skeleton, for backward compatibility, defines - a constructor for position that initializes the filename. The - glr.cc skeleton does not (and in fact cannot: location/position - are stored in a union, from which objects with constructors are - excluded in C++). */ -%initial-action { - @$.initialize (); -} -]])[ - %initial-action { $$ = 42; @@ -1341,10 +1353,7 @@ AT_FULL_COMPILE([[input]]) AT_PARSER_CHECK([./input], 0, [], [stderr]) # Don't be too picky on the traces, GLR is not exactly the same. Keep # only the lines from the printer. -# -# Don't care about locations. FIXME: remove their removal when Bison -# supports C++ without locations. -AT_CHECK([[sed -ne 's/([-0-9.]*: /(/;/ival:/p' stderr]], 0, +AT_CHECK([[sed -ne '/ival:/p' stderr]], 0, [[Reading a token: Next token is token UNTYPED (ival: 10, fval: 0.1) Shifting token UNTYPED (ival: 10, fval: 0.1) Reading a token: Next token is token INT (ival: 20, fval: 0.2) @@ -1382,37 +1391,37 @@ AT_DATA([input.y], start: test2 test1 test0 testc; test2 -: 'a' { semi; /* TEST:N:2 */ } -| 'b' { if (0) {no_semi} /* TEST:N:2 */ } -| 'c' { if (0) {semi;} /* TEST:N:2 */ } -| 'd' { semi; no_semi /* TEST:Y:2 */ } -| 'e' { semi(); no_semi() /* TEST:Y:2 */ } -| 'f' { semi[]; no_semi[] /* TEST:Y:2 */ } -| 'g' { semi++; no_semi++ /* TEST:Y:2 */ } -| 'h' { {no_semi} no_semi /* TEST:Y:2 */ } -| 'i' { {semi;} no_semi /* TEST:Y:2 */ } +: 'a' { semi; /* TEST:N:2 */ } +| 'b' { if (0) {no_semi} /* TEST:N:2 */ } +| 'c' { if (0) {semi;} /* TEST:N:2 */ } +| 'd' { semi; no_semi /* TEST:Y:2 */ } +| 'e' { semi(); no_semi() /* TEST:Y:2 */ } +| 'f' { semi[]; no_semi[] /* TEST:Y:2 */ } +| 'g' { semi++; no_semi++ /* TEST:Y:2 */ } +| 'h' { {no_semi} no_semi /* TEST:Y:2 */ } +| 'i' { {semi;} no_semi /* TEST:Y:2 */ } ; test1 - : 'a' { semi; // TEST:N:1 ; -} | 'b' { if (0) {no_semi} // TEST:N:1 ; -} | 'c' { if (0) {semi;} // TEST:N:1 ; -} | 'd' { semi; no_semi // TEST:Y:1 ; -} | 'e' { semi(); no_semi() // TEST:Y:1 ; -} | 'f' { semi[]; no_semi[] // TEST:Y:1 ; -} | 'g' { semi++; no_semi++ // TEST:Y:1 ; -} | 'h' { {no_semi} no_semi // TEST:Y:1 ; -} | 'i' { {semi;} no_semi // TEST:Y:1 ; + : 'a' { semi; // TEST:N:1 ; +} | 'b' { if (0) {no_semi} // TEST:N:1 ; +} | 'c' { if (0) {semi;} // TEST:N:1 ; +} | 'd' { semi; no_semi // TEST:Y:1 ; +} | 'e' { semi(); no_semi() // TEST:Y:1 ; +} | 'f' { semi[]; no_semi[] // TEST:Y:1 ; +} | 'g' { semi++; no_semi++ // TEST:Y:1 ; +} | 'h' { {no_semi} no_semi // TEST:Y:1 ; +} | 'i' { {semi;} no_semi // TEST:Y:1 ; } ; test0 - : 'a' { semi; // TEST:N:1 {} -} | 'b' { if (0) {no_semi} // TEST:N:1 {} -} | 'c' { if (0) {semi;} // TEST:N:1 {} -} | 'd' { semi; no_semi // TEST:Y:1 {} -} | 'e' { semi(); no_semi() // TEST:Y:1 {} -} | 'f' { semi[]; no_semi[] // TEST:Y:1 {} -} | 'g' { semi++; no_semi++ // TEST:Y:1 {} -} | 'h' { {no_semi} no_semi // TEST:Y:1 {} -} | 'i' { {semi;} no_semi // TEST:Y:1 {} + : 'a' { semi; // TEST:N:1 {} +} | 'b' { if (0) {no_semi} // TEST:N:1 {} +} | 'c' { if (0) {semi;} // TEST:N:1 {} +} | 'd' { semi; no_semi // TEST:Y:1 {} +} | 'e' { semi(); no_semi() // TEST:Y:1 {} +} | 'f' { semi[]; no_semi[] // TEST:Y:1 {} +} | 'g' { semi++; no_semi++ // TEST:Y:1 {} +} | 'h' { {no_semi} no_semi // TEST:Y:1 {} +} | 'i' { {semi;} no_semi // TEST:Y:1 {} } ; testc @@ -1429,42 +1438,42 @@ string;"} AT_BISON_OPTION_POPDEFS AT_BISON_CHECK([[-o input.c input.y]], [0], [], -[[input.y:8.48: warning: a ';' might be needed at the end of action code -input.y:8.48: warning: future versions of Bison will not add the ';' -input.y:9.48: warning: a ';' might be needed at the end of action code -input.y:9.48: warning: future versions of Bison will not add the ';' -input.y:10.48: warning: a ';' might be needed at the end of action code -input.y:10.48: warning: future versions of Bison will not add the ';' -input.y:11.48: warning: a ';' might be needed at the end of action code -input.y:11.48: warning: future versions of Bison will not add the ';' -input.y:12.48: warning: a ';' might be needed at the end of action code -input.y:12.48: warning: future versions of Bison will not add the ';' -input.y:13.48: warning: a ';' might be needed at the end of action code -input.y:13.48: warning: future versions of Bison will not add the ';' -input.y:20.1: warning: a ';' might be needed at the end of action code -input.y:20.1: warning: future versions of Bison will not add the ';' -input.y:21.1: warning: a ';' might be needed at the end of action code -input.y:21.1: warning: future versions of Bison will not add the ';' -input.y:22.1: warning: a ';' might be needed at the end of action code -input.y:22.1: warning: future versions of Bison will not add the ';' -input.y:23.1: warning: a ';' might be needed at the end of action code -input.y:23.1: warning: future versions of Bison will not add the ';' -input.y:24.1: warning: a ';' might be needed at the end of action code -input.y:24.1: warning: future versions of Bison will not add the ';' -input.y:25.1: warning: a ';' might be needed at the end of action code -input.y:25.1: warning: future versions of Bison will not add the ';' -input.y:31.1: warning: a ';' might be needed at the end of action code -input.y:31.1: warning: future versions of Bison will not add the ';' -input.y:32.1: warning: a ';' might be needed at the end of action code -input.y:32.1: warning: future versions of Bison will not add the ';' -input.y:33.1: warning: a ';' might be needed at the end of action code -input.y:33.1: warning: future versions of Bison will not add the ';' -input.y:34.1: warning: a ';' might be needed at the end of action code -input.y:34.1: warning: future versions of Bison will not add the ';' -input.y:35.1: warning: a ';' might be needed at the end of action code -input.y:35.1: warning: future versions of Bison will not add the ';' -input.y:36.1: warning: a ';' might be needed at the end of action code -input.y:36.1: warning: future versions of Bison will not add the ';' +[[input.y:8.48: warning: a ';' might be needed at the end of action code [-Wother] +input.y:8.48: warning: future versions of Bison will not add the ';' [-Wother] +input.y:9.48: warning: a ';' might be needed at the end of action code [-Wother] +input.y:9.48: warning: future versions of Bison will not add the ';' [-Wother] +input.y:10.48: warning: a ';' might be needed at the end of action code [-Wother] +input.y:10.48: warning: future versions of Bison will not add the ';' [-Wother] +input.y:11.48: warning: a ';' might be needed at the end of action code [-Wother] +input.y:11.48: warning: future versions of Bison will not add the ';' [-Wother] +input.y:12.48: warning: a ';' might be needed at the end of action code [-Wother] +input.y:12.48: warning: future versions of Bison will not add the ';' [-Wother] +input.y:13.48: warning: a ';' might be needed at the end of action code [-Wother] +input.y:13.48: warning: future versions of Bison will not add the ';' [-Wother] +input.y:20.1: warning: a ';' might be needed at the end of action code [-Wother] +input.y:20.1: warning: future versions of Bison will not add the ';' [-Wother] +input.y:21.1: warning: a ';' might be needed at the end of action code [-Wother] +input.y:21.1: warning: future versions of Bison will not add the ';' [-Wother] +input.y:22.1: warning: a ';' might be needed at the end of action code [-Wother] +input.y:22.1: warning: future versions of Bison will not add the ';' [-Wother] +input.y:23.1: warning: a ';' might be needed at the end of action code [-Wother] +input.y:23.1: warning: future versions of Bison will not add the ';' [-Wother] +input.y:24.1: warning: a ';' might be needed at the end of action code [-Wother] +input.y:24.1: warning: future versions of Bison will not add the ';' [-Wother] +input.y:25.1: warning: a ';' might be needed at the end of action code [-Wother] +input.y:25.1: warning: future versions of Bison will not add the ';' [-Wother] +input.y:31.1: warning: a ';' might be needed at the end of action code [-Wother] +input.y:31.1: warning: future versions of Bison will not add the ';' [-Wother] +input.y:32.1: warning: a ';' might be needed at the end of action code [-Wother] +input.y:32.1: warning: future versions of Bison will not add the ';' [-Wother] +input.y:33.1: warning: a ';' might be needed at the end of action code [-Wother] +input.y:33.1: warning: future versions of Bison will not add the ';' [-Wother] +input.y:34.1: warning: a ';' might be needed at the end of action code [-Wother] +input.y:34.1: warning: future versions of Bison will not add the ';' [-Wother] +input.y:35.1: warning: a ';' might be needed at the end of action code [-Wother] +input.y:35.1: warning: future versions of Bison will not add the ';' [-Wother] +input.y:36.1: warning: a ';' might be needed at the end of action code [-Wother] +input.y:36.1: warning: future versions of Bison will not add the ';' [-Wother] ]]) AT_MATCHES_CHECK([input.c], [[/\* TEST:N:2 \*/ \}$]], [[3]])