X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/4c9b8f1318c68238074ee19e7ab976a22924540e..1a9646fc9140f896500a812672742b82634c2249:/tests/actions.at diff --git a/tests/actions.at b/tests/actions.at index aeff37c3..6c1ecbc1 100644 --- a/tests/actions.at +++ b/tests/actions.at @@ -114,14 +114,17 @@ AT_SETUP([Invalid uses of %empty]) AT_DATA_GRAMMAR([[one.y]], [[%% exp: - %empty %empty {} + %empty {} %empty ; ]]) AT_BISON_CHECK([-fcaret one.y], [1], [], -[[one.y:11.10-15: error: only one %empty allowed per rule - %empty %empty {} - ^^^^^^ +[[one.y:11.13-18: error: only one %empty allowed per rule + %empty {} %empty + ^^^^^^ +one.y:11.3-8: previous declaration + %empty {} %empty + ^^^^^^ ]]) AT_DATA_GRAMMAR([[two.y]], @@ -283,8 +286,8 @@ m4_popdef([AT_TEST]) ## Location Print. ## ## ---------------- ## -# AT_TEST(SKELETON-NAME, DIRECTIVES, [MORE-DIRECTIVES], [LOCATION = 1.1]) -# ----------------------------------------------------------------------- +# AT_TEST(SKELETON-NAME, DIRECTIVES, [MORE-DIRECTIVES]) +# ----------------------------------------------------- # Check that the initial location is correct. m4_pushdef([AT_TEST], [AT_SETUP([Location print: $1 $2]) @@ -602,11 +605,11 @@ static { static unsigned int counter = 0; - int c = ]AT_VAL[]m4_ifval([$6], [.ival])[ = counter++; + unsigned int c = ]AT_VAL[]m4_ifval([$6], [.ival])[ = counter++; /* As in BASIC, line numbers go from 10 to 10. */ ]AT_LOC_FIRST_LINE[ = ]AT_LOC_FIRST_COLUMN[ = 10 * c; ]AT_LOC_LAST_LINE[ = ]AT_LOC_LAST_COLUMN[ = ]AT_LOC_FIRST_LINE[ + 9; - assert (0 <= c && c <= strlen (source)); + assert (c <= strlen (source)); if (source[c]) fprintf (stderr, "sending: '%c'", source[c]); else @@ -845,13 +848,13 @@ AT_CLEANUP AT_CHECK_PRINTER_AND_DESTRUCTOR([]) -AT_CHECK_PRINTER_AND_DESTRUCTOR([], [with union]) +AT_CHECK_PRINTER_AND_DESTRUCTOR([], [ with union]) AT_CHECK_PRINTER_AND_DESTRUCTOR([%defines %skeleton "lalr1.cc"]) -AT_CHECK_PRINTER_AND_DESTRUCTOR([%defines %skeleton "lalr1.cc"], [with union]) +AT_CHECK_PRINTER_AND_DESTRUCTOR([%defines %skeleton "lalr1.cc"], [ with union]) AT_CHECK_PRINTER_AND_DESTRUCTOR([%glr-parser]) -AT_CHECK_PRINTER_AND_DESTRUCTOR([%glr-parser], [with union]) +AT_CHECK_PRINTER_AND_DESTRUCTOR([%glr-parser], [ with union]) @@ -1604,115 +1607,6 @@ AT_TEST([glr.cc]) m4_popdef([AT_TEST]) -## ----------------------------------------------- ## -## 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: -# . -AT_BISON_OPTION_PUSHDEFS -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 */ } -; -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 ; -} ; -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 {} -} ; - -testc -: 'a' { -#define TEST_MACRO_N \ -[]"broken\" $ @ $$ @$ [];\ -string;"} -| 'b' { -no_semi -#define TEST_MACRO_N \ -[]"broken\" $ @ $$ @$ [];\ -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 [-Wdeprecated] -input.y:8.48: future versions of Bison will not add the ';' -input.y:9.48: warning: a ';' might be needed at the end of action code [-Wdeprecated] -input.y:9.48: future versions of Bison will not add the ';' -input.y:10.48: warning: a ';' might be needed at the end of action code [-Wdeprecated] -input.y:10.48: future versions of Bison will not add the ';' -input.y:11.48: warning: a ';' might be needed at the end of action code [-Wdeprecated] -input.y:11.48: future versions of Bison will not add the ';' -input.y:12.48: warning: a ';' might be needed at the end of action code [-Wdeprecated] -input.y:12.48: future versions of Bison will not add the ';' -input.y:13.48: warning: a ';' might be needed at the end of action code [-Wdeprecated] -input.y:13.48: future versions of Bison will not add the ';' -input.y:20.1: warning: a ';' might be needed at the end of action code [-Wdeprecated] -input.y:20.1: future versions of Bison will not add the ';' -input.y:21.1: warning: a ';' might be needed at the end of action code [-Wdeprecated] -input.y:21.1: future versions of Bison will not add the ';' -input.y:22.1: warning: a ';' might be needed at the end of action code [-Wdeprecated] -input.y:22.1: future versions of Bison will not add the ';' -input.y:23.1: warning: a ';' might be needed at the end of action code [-Wdeprecated] -input.y:23.1: future versions of Bison will not add the ';' -input.y:24.1: warning: a ';' might be needed at the end of action code [-Wdeprecated] -input.y:24.1: future versions of Bison will not add the ';' -input.y:25.1: warning: a ';' might be needed at the end of action code [-Wdeprecated] -input.y:25.1: future versions of Bison will not add the ';' -input.y:31.1: warning: a ';' might be needed at the end of action code [-Wdeprecated] -input.y:31.1: future versions of Bison will not add the ';' -input.y:32.1: warning: a ';' might be needed at the end of action code [-Wdeprecated] -input.y:32.1: future versions of Bison will not add the ';' -input.y:33.1: warning: a ';' might be needed at the end of action code [-Wdeprecated] -input.y:33.1: future versions of Bison will not add the ';' -input.y:34.1: warning: a ';' might be needed at the end of action code [-Wdeprecated] -input.y:34.1: future versions of Bison will not add the ';' -input.y:35.1: warning: a ';' might be needed at the end of action code [-Wdeprecated] -input.y:35.1: future versions of Bison will not add the ';' -input.y:36.1: warning: a ';' might be needed at the end of action code [-Wdeprecated] -input.y:36.1: future versions of Bison will not add the ';' -]]) - -AT_MATCHES_CHECK([input.c], [[/\* TEST:N:2 \*/ \}$]], [[3]]) -AT_MATCHES_CHECK([input.c], [[/\* TEST:Y:2 \*/ ;\}$]], [[6]]) -AT_MATCHES_CHECK([input.c], [[// TEST:N:1 [;{}]*\n\}$]], [[6]]) -AT_MATCHES_CHECK([input.c], [[// TEST:Y:1 [;{}]*\n;\}$]], [[12]]) -AT_MATCHES_CHECK([input.c], [[#define TEST_MACRO_N \\\n\[\]"broken\\" \$ \@ \$\$ \@\$ \[\];\\\nstring;"\}]], [[2]]) - -AT_CLEANUP - - ## -------------------------------------------------- ## ## Destroying lookahead assigned by semantic action. ## ## -------------------------------------------------- ##