X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/3a526f5cc3b45fc68d06de0b5332105113741093..952416114729b95209dccfc4edacfc1ff13b4e82:/tests/headers.at?ds=sidebyside diff --git a/tests/headers.at b/tests/headers.at index 7df4cc9d..9c1d00bc 100644 --- a/tests/headers.at +++ b/tests/headers.at @@ -1,6 +1,6 @@ # Bison Parser Headers. -*- Autotest -*- -# Copyright (C) 2001-2002, 2006-2007, 2009-2012 Free Software +# Copyright (C) 2001-2002, 2006-2007, 2009-2015 Free Software # Foundation, Inc. # This program is free software: you can redistribute it and/or modify @@ -41,7 +41,7 @@ AT_DATA_GRAMMAR([$1.y], ]AT_YYLEX_DECLARE_EXTERN[ %} %% -dummy:; +dummy: /* empty */; %% #include <$1.h> ]) @@ -68,30 +68,21 @@ AT_TEST_CPP_GUARD_H([9foo], [%glr-parser]) AT_SETUP([export YYLTYPE]) +AT_BISON_OPTION_PUSHDEFS([%name-prefix "my_"]) AT_DATA_GRAMMAR([input.y], -[%locations +[[%locations %name-prefix "my_" %{ #include #include -static int -my_lex (void) -{ - return EOF; -} - -static void -my_error (const char *msg) -{ - fprintf (stderr, "%s\n", msg); -} - +]AT_YYERROR_DEFINE[ +]AT_YYLEX_DEFINE[ %} %% -exp:; -]) +exp: /* empty */; +]]) AT_BISON_CHECK([--defines -o input.c input.y]) @@ -102,11 +93,7 @@ YYLTYPE *my_llocp = &my_lloc; int my_parse (void); -int -main (void) -{ - return my_parse (); -} +]AT_MAIN_DEFINE[ ]]) # Link and execute, just to make sure everything is fine (and in @@ -115,7 +102,7 @@ AT_COMPILE([caller.o]) AT_COMPILE([input.o]) AT_COMPILE([caller], [caller.o input.o]) AT_PARSER_CHECK([./caller]) - +AT_BISON_OPTION_POPDEFS AT_CLEANUP ## ----------------- ## @@ -130,9 +117,9 @@ AT_SETUP([Several parsers]) # nor yy* identifiers in the header. Check that headers are # 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])], -[[%define api.prefix "$1_" +[AT_BISON_OPTION_PUSHDEFS([%define api.prefix {$1_} $2]) +AT_DATA_GRAMMAR([$1.y], +[[%define api.prefix {$1_} $2 %error-verbose %union @@ -161,7 +148,7 @@ 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]) AT_LANG_COMPILE([$1.o]) AT_CHECK([[echo "$1" >>expout]]) @@ -229,28 +216,31 @@ AT_TEST([x8], [%define api.pure %define api.push-pull both]) # 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)? +# Ignore comments, YYChar (template parameter), 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)? + s{\b(YYChar + |YYPUSH_MORE(?:_DEFINED)? + |YYUSE + |YY_ATTRIBUTE(?:_PURE|_UNUSED)? + |YY_IGNORE_MAYBE_UNINITIALIZED_(?:BEGIN|END) + |YY_INITIAL_VALUE |YY_\w+_INCLUDED - |YY_NULL + |YY_NULLPTR |(defined|if)\ YYDEBUG )\b}{}gx; while (/^(.*YY.*)$/gm) { - print "$ARGV: $1\n"; + print "$ARGV: invalid exported YY: $1\n"; } if ($ARGV =~ /\.h$/) { while (/^(.*yy.*)$/gm) { - print "$ARGV: $1\n"; + print "$ARGV: invalid exported yy: $1\n"; } } ' -- *.hh *.h]]) @@ -272,7 +262,7 @@ done 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])