From: Akim Demaille Date: Mon, 12 Nov 2012 08:06:55 +0000 (+0100) Subject: Merge remote-tracking branch 'origin/branch-2.6' into maint X-Git-Tag: v2.6.90~45 X-Git-Url: https://git.saurik.com/bison.git/commitdiff_plain/9bf1eca7c9e24c94f5a7b336ed7cc041586cb905?ds=inline;hp=-c Merge remote-tracking branch 'origin/branch-2.6' into maint * origin/branch-2.6: tests: use valgrind where appropriate tests: don't expect $EGREP to support -w --- 9bf1eca7c9e24c94f5a7b336ed7cc041586cb905 diff --combined THANKS index 21e7a1dd,e815f8ed..ecdd1a8a --- a/THANKS +++ b/THANKS @@@ -31,6 -31,7 +31,7 @@@ Dagobert Michelsen dam@baltic-on Daniel Hagerty hag@gnu.org David J. MacKenzie djm@gnu.org David Kastrup dak@gnu.org + Dennis Clarke dclarke@blastwave.org Derek M. Jones derek@knosof.co.uk Di-an Jan dianj@freeshell.org Dick Streefland dick.streefland@altium.nl @@@ -81,7 -82,6 +82,7 @@@ Nicolas Tisserand nicolas.tisse Noah Friedman friedman@gnu.org Odd Arild Olsen oao@fibula.no Oleg Smolsky oleg.smolsky@pacific-simulators.co.nz +Oleksii Taran oleksii.taran@gmail.com Paolo Bonzini bonzini@gnu.org Pascal Bart pascal.bart@epita.fr Paul Eggert eggert@cs.ucla.edu @@@ -130,7 -130,6 +131,7 @@@ thank them! Please, help us keeping th Local Variables: mode: text +coding: utf-8 End: ----- diff --combined tests/glr-regression.at index ad93d40e,aab0369f..7df17b62 --- a/tests/glr-regression.at +++ b/tests/glr-regression.at @@@ -67,9 -67,13 +67,13 @@@ static YYSTYPE exprMerge (YYSTYPE x0, Y return 0; } + const char *input = NULL; + int - main (void) + main (int argc, const char* argv[]) { + assert (argc == 2); + input = argv[1]; return yyparse (); } @@@ -78,16 -82,7 +82,7 @@@ int yylex (void) { - for (;;) - { - int ch; - assert (!feof (stdin)); - ch = getchar (); - if (ch == EOF) - return 0; - else if (ch == 'B' || ch == 'P') - return ch; - } + return *input++; } ]]) AT_BISON_OPTION_POPDEFS @@@ -96,7 -91,7 +91,7 @@@ AT_BISON_CHECK([[-o glr-regr1.c glr-reg [glr-regr1.y: conflicts: 1 shift/reduce ]) AT_COMPILE([glr-regr1]) - AT_PARSER_CHECK([[echo BPBPB | ./glr-regr1]], 0, + AT_PARSER_CHECK([[./glr-regr1 BPBPB]], 0, [[E -> 'B' E -> 'B' E -> E 'P' E @@@ -212,16 -207,27 +207,27 @@@ AT_BISON_CHECK([[-o glr-regr2a.c glr-re ]) AT_COMPILE([glr-regr2a]) - AT_PARSER_CHECK([[echo s VARIABLE_1 t v x q | ./glr-regr2a]], 0, + AT_DATA([input1.txt], + [[s VARIABLE_1 t v x q + ]]) + AT_PARSER_CHECK([[./glr-regr2a input1.txt]], 0, [[Variable: 'VARIABLE_1' - ]], []) - AT_PARSER_CHECK([[echo s VARIABLE_1 , ANOTHER_VARIABLE_2 t e | ./glr-regr2a]], + ]]) + + AT_DATA([input2.txt], + [[s VARIABLE_1 , ANOTHER_VARIABLE_2 t e + ]]) + AT_PARSER_CHECK([[./glr-regr2a input2.txt]], 0, [[Varlist: 'VARIABLE_1,ANOTHER_VARIABLE_2' ]]) - AT_PARSER_CHECK([[echo s VARIABLE_3 t v x | ./glr-regr2a]], 0, + + AT_DATA([input3.txt], + [[s VARIABLE_3 t v x + ]]) + AT_PARSER_CHECK([[./glr-regr2a input3.txt]], 0, [[Variable: 'VARIABLE_3' - ]], []) + ]]) AT_CLEANUP @@@ -329,10 -335,13 +335,13 @@@ AT_BISON_CHECK([[-o glr-regr3.c glr-reg ]) AT_COMPILE([glr-regr3]) - AT_PARSER_CHECK([[echo p1 t4 o2 p1 p1 t1 o1 t2 p2 o1 t3 p2 p2 | ./glr-regr3]], + AT_DATA([input.txt], + [[p1 t4 o2 p1 p1 t1 o1 t2 p2 o1 t3 p2 p2 + ]]) + AT_PARSER_CHECK([[./glr-regr3 input.txt]], 0, [[Result: 1c04 - ]], []) + ]]) AT_CLEANUP @@@ -1643,10 -1652,10 +1652,10 @@@ main (void AT_BISON_OPTION_POPDEFS AT_BISON_CHECK([[-o glr-regr18.c glr-regr18.y]], 1, [], -[glr-regr18.y:26.18-24: result type clash on merge function 'merge': != -glr-regr18.y:25.18-24: previous declaration -glr-regr18.y:27.13-19: result type clash on merge function 'merge': != -glr-regr18.y:26.18-24: previous declaration +[glr-regr18.y:26.18-24: error: result type clash on merge function 'merge': != +glr-regr18.y:25.18-24: previous declaration +glr-regr18.y:27.13-19: error: result type clash on merge function 'merge': != +glr-regr18.y:26.18-24: previous declaration ]) AT_CLEANUP diff --combined tests/headers.at index 8a05d34d,b53ee8a0..dcf09a72 --- a/tests/headers.at +++ b/tests/headers.at @@@ -131,7 -131,7 +131,7 @@@ AT_SETUP([Several parsers] # self-contained, and can be compiled by a C++ compiler. m4_pushdef([AT_TEST], [AT_BISON_OPTION_PUSHDEFS([%define api.prefix "$1_" $2]) -AT_DATA_GRAMMAR([$1.AT_SKEL_CC_IF([yy], [y])], +AT_DATA_GRAMMAR([$1.y], [[%define api.prefix "$1_" $2 %error-verbose @@@ -161,23 -161,8 +161,8 @@@ exp ]AT_YYLEX_DEFINE(["$1"])[ ]]) -AT_BISON_CHECK([-d -o AT_SKEL_CC_IF([$1.cc $1.yy], [$1.c $1.y])]) +AT_BISON_CHECK([-d -o $1.AT_SKEL_CC_IF([cc], [c]) $1.y]) - # Check there is no 'yy' left. - # C++ output relies on namespaces and still uses yy a lot. - AT_SKEL_CC_IF([], - [AT_CHECK([$EGREP yy $1.h], [1])]) - - # Check there is not 'YY' left. - # Ignore comments, YYPARSE_PARAM (obsolete), YYPUSH_MORE(_DEFINED)? - # (constant definition), YY_\w+_INCLUDED (header guards). - # - # YYDEBUG (not renamed) can be read, but not changed. - AT_CHECK([[sed -ne 's,/\*[^*]*\*/,,g;s,//.*,,' \ - -e '/YY/p' ]$1.AT_SKEL_CC_IF([hh], [h])[ | - $EGREP -wv 'YY(PARSE_PARAM|PUSH_MORE(_DEFINED)?|_[0-9A-Z_]+_INCLUDED)|(defined|if) YYDEBUG']], - [1]) - AT_LANG_COMPILE([$1.o]) AT_CHECK([[echo "$1" >>expout]]) @@@ -240,6 -225,36 +225,36 @@@ AT_TEST([x7], [%define api.push-pull bo AT_TEST([x8], [%define api.pure %define api.push-pull both]) #AT_TEST([x5], [%locations %language "c++" %glr-parser]) + # Check there is no 'yy' left. + # C++ output relies on namespaces and still uses yy a lot. + # + # Check there is no 'YY' left. + # Ignore comments, YYPARSE_PARAM (obsolete), YYPUSH_MORE(_DEFINED)? + # (constant definition), YY_\w+_INCLUDED (header guards). + # + # YYDEBUG (not renamed) can be read, but not changed. + AT_CHECK([[$PERL -n -0777 -e ' + s{/\*.*?\*/}{}gs; + s{//.*}{}g; + s{\b(YYPARSE_PARAM + |YYPUSH_MORE(_DEFINED)? + |YY_\w+_INCLUDED + |YY_NULL + |(defined|if)\ YYDEBUG + )\b}{}gx; + while (/^(.*YY.*)$/gm) + { + print "$ARGV: $1\n"; + } + if ($ARGV =~ /\.h$/) + { + while (/^(.*yy.*)$/gm) + { + print "$ARGV: $1\n"; + } + } + ' -- *.hh *.h]]) + # Check that the headers are self-contained, and protected against # multiple inclusions. While at it, check they are sane for C++. for h in *.h *.hh @@@ -257,7 -272,7 +272,7 @@@ don AT_SKIP_IF_CANNOT_LINK_C_AND_CXX AT_COMPILE_CXX([parser], [[x[1-8].o -DCC_IS_CXX=$CC_IS_CXX main.cc]]) - AT_CHECK([./parser], [0], [[expout]]) + AT_PARSER_CHECK([./parser], [0], [[expout]]) m4_popdef([AT_TEST]) diff --combined tests/local.at index 88e797f5,a5dde80a..a33ea9b2 --- a/tests/local.at +++ b/tests/local.at @@@ -138,7 -138,7 +138,7 @@@ m4_pushdef([AT_LEXPARAM_IF] m4_pushdef([AT_LOCATION_IF], [m4_bmatch([$3], [%locations], [$1], [$2])]) m4_pushdef([AT_LOCATION_TYPE_IF], -[m4_bmatch([$3], [%define location_type], [$1], [$2])]) +[m4_bmatch([$3], [%define \(api\.location\.type\|location_type\)], [$1], [$2])]) m4_pushdef([AT_PARAM_IF], [m4_bmatch([$3], [%parse-param], [$1], [$2])]) # Comma-terminated list of formals parse-parameters. @@@ -716,7 -716,7 +716,7 @@@ AT_COMPILE([c-only.o], [c-only.c] AT_COMPILE_CXX([cxx-only.o], [cxx-only.cc]) AT_CHECK([$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS c-only.o cxx-only.o -o c-and-cxx || exit 77], [ignore], [ignore]) - AT_CHECK([./c-and-cxx]) + AT_PARSER_CHECK([./c-and-cxx]) ]) diff --combined tests/regression.at index b6bff17c,03c4b808..374bd82a --- a/tests/regression.at +++ b/tests/regression.at @@@ -383,58 -383,6 +383,58 @@@ AT_CLEANU +## ---------------- ## +## Invalid inputs. ## +## ---------------- ## + + +AT_SETUP([Invalid inputs]) + +AT_DATA([input.y], +[[%% +? +default: 'a' } +%& +%a-does-not-exist +%- +%{ +]]) + +AT_BISON_CHECK([input.y], [1], [], +[[input.y:2.1: error: invalid character: '?' +input.y:3.14: error: invalid character: '}' +input.y:4.1: error: invalid character: '%' +input.y:4.2: error: invalid character: '&' +input.y:5.1-17: error: invalid directive: '%a-does-not-exist' +input.y:6.1: error: invalid character: '%' +input.y:6.2: error: invalid character: '-' +input.y:7.1-8.0: error: missing '%}' at end of file +input.y:7.1-8.0: error: syntax error, unexpected %{...%} +]]) + +AT_CLEANUP + + +AT_SETUP([Invalid inputs with {}]) + +AT_DATA([input.y], +[[ +%destructor +%initial-action +%lex-param +%parse-param +%printer +%union +]]) + +AT_BISON_CHECK([input.y], [1], [], +[[input.y:3.1-15: error: syntax error, unexpected %initial-action, expecting {...} +]]) + +AT_CLEANUP + + + ## ------------------- ## ## Token definitions. ## ## ------------------- ## @@@ -1645,7 -1593,7 +1645,7 @@@ main (void ]]) AT_FULL_COMPILE([input]) - AT_CHECK([./input], 0, [[x: 1, y: 2 + AT_PARSER_CHECK([./input], 0, [[x: 1, y: 2 ]]) AT_BISON_OPTION_POPDEFS