From 56b91ae0b1fedff810bdd8317816a7073910ccb0 Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Mon, 21 Jan 2013 16:01:53 +0100 Subject: [PATCH 1/1] tests: generalize default main for api.namespace * tests/local.at (AT_NAME_PREFIX): Also match api.namespace. (AT_MAIN_DEFINE): Take it into account. * tests/c++.at, tests/headers.at: Use AT_NAME_PREFIX. (AT_CHECK_NAMESPACE): Rename as... (AT_TEST): this. --- tests/c++.at | 47 +++++++++++++++++++++-------------------------- tests/headers.at | 27 +++++++-------------------- tests/local.at | 9 +++++---- 3 files changed, 33 insertions(+), 50 deletions(-) diff --git a/tests/c++.at b/tests/c++.at index 868479a6..d599c87d 100644 --- a/tests/c++.at +++ b/tests/c++.at @@ -274,14 +274,13 @@ AT_CHECK_DOXYGEN([Private]) ## Namespaces. ## ## ------------ ## -# AT_CHECK_NAMESPACE(NAMESPACE-DECL, [COMPILE-ERROR]) -# --------------------------------------------------- +# AT_TEST(NAMESPACE-DECL, [COMPILE-ERROR]) +# ---------------------------------------- # See if Bison can handle %define namespace "NAMESPACE-DECL". If COMPILE-ERROR # is specified, then Bison should accept the input, but compilation will fail, # so don't check compilation. -m4_define([AT_CHECK_NAMESPACE], -[ - +m4_pushdef([AT_TEST], +[AT_BISON_OPTION_PUSHDEFS([%language "C++" %define api.namespace "$1"]) AT_DATA_GRAMMAR([[input.y]], [[%language "C++" %defines @@ -311,12 +310,7 @@ void std::cerr << "At " << loc << ": " << msg << std::endl; } -int -main () -{ - ]$1[::parser p; - return p.parse (); -} +]AT_MAIN_DEFINE[ ]]) AT_BISON_CHECK([[-o input.cc input.y]]) @@ -324,34 +318,35 @@ AT_BISON_CHECK([[-o input.cc input.y]]) m4_if([$#], [1], [AT_COMPILE_CXX([[input]], [[input.cc]]) AT_PARSER_CHECK([[./input]])]) - +AT_BISON_OPTION_POPDEFS ]) AT_SETUP([[Relative namespace references]]) -AT_CHECK_NAMESPACE([[foo]]) -AT_CHECK_NAMESPACE([[foo::bar]]) -AT_CHECK_NAMESPACE([[foo::bar::baz]]) +AT_TEST([[foo]]) +AT_TEST([[foo::bar]]) +AT_TEST([[foo::bar::baz]]) AT_CLEANUP AT_SETUP([[Absolute namespace references]]) -AT_CHECK_NAMESPACE([[::foo]]) -AT_CHECK_NAMESPACE([[::foo::bar]]) -AT_CHECK_NAMESPACE([[::foo::bar::baz]]) -AT_CHECK_NAMESPACE([[ ::foo]]) -AT_CHECK_NAMESPACE([[ ::foo::bar]]) -AT_CHECK_NAMESPACE([[ ::foo::bar::baz]]) +AT_TEST([[::foo]]) +AT_TEST([[::foo::bar]]) +AT_TEST([[::foo::bar::baz]]) +AT_TEST([[ ::foo]]) +AT_TEST([[ ::foo::bar]]) +AT_TEST([[ ::foo::bar::baz]]) AT_CLEANUP AT_SETUP([[Syntactically invalid namespace references]]) -AT_CHECK_NAMESPACE([[:foo:bar]], [[-]]) -AT_CHECK_NAMESPACE([[foo: :bar]], [[-]]) +AT_TEST([[:foo:bar]], [[-]]) +AT_TEST([[foo: :bar]], [[-]]) # This one is interesting because `[3]' is encoded as `@<:@3@:>@', which # contains single occurrences of `:'. -AT_CHECK_NAMESPACE([[foo[3]::bar::baz]], [[-]]) -AT_CHECK_NAMESPACE([[foo::bar,baz]], [[-]]) -AT_CHECK_NAMESPACE([[foo::bar::(baz /* Pacify Emacs ) */]], [[-]]) +AT_TEST([[foo[3]::bar::baz]], [[-]]) +AT_TEST([[foo::bar,baz]], [[-]]) +AT_TEST([[foo::bar::(baz /* Pacify Emacs ) */]], [[-]]) AT_CLEANUP +m4_popdef([AT_TEST]) ## -------------------------------------- ## ## Syntax error discarding no lookahead. ## diff --git a/tests/headers.at b/tests/headers.at index 995c2a3b..203c8fc6 100644 --- a/tests/headers.at +++ b/tests/headers.at @@ -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:; -]) +]]) 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 ## ----------------- ## diff --git a/tests/local.at b/tests/local.at index a0e911fe..52f7a09e 100644 --- a/tests/local.at +++ b/tests/local.at @@ -168,9 +168,10 @@ m4_pushdef([AT_PURE_IF], [m4_bmatch([$3], [%define *api\.pure\|%pure-parser], [m4_bmatch([$3], [%define *api\.pure *"?false"?], [$2], [$1])], [$2])]) +# AT_NAME_PREFIX: also consider api.namespace. m4_pushdef([AT_NAME_PREFIX], -[m4_bmatch([$3], [\(%define api\.prefix\|%name-prefix\) ".*"], - [m4_bregexp([$3], [\(%define api\.prefix\|%name-prefix\) "\([^""]*\)"], [\2])], +[m4_bmatch([$3], [\(%define api\.\(namespace\|prefix\)\|%name-prefix\) ".*"], + [m4_bregexp([$3], [\(%define api\.\(namespace\|prefix\)\|%name-prefix\) "\([^""]*\)"], [\3])], [yy])]) m4_pushdef([AT_TOKEN_CTOR_IF], [m4_bmatch([$3], [%define api.token.constructor], [$1], [$2])]) @@ -462,7 +463,7 @@ main (int argc, char const* argv[]) yydebug |= 1;]], [[ (void) argc; (void) argv;]])[ - return yyparse (); + return ]AT_NAME_PREFIX[parse (); }]], [c++], [[#include // getenv. @@ -470,7 +471,7 @@ main (int argc, char const* argv[]) int main (int argc, char const* argv[]) { - yy::parser p;]AT_DEBUG_IF([[ + ]AT_NAME_PREFIX[::parser p;]AT_DEBUG_IF([[ if (getenv("YYDEBUG") || (argc == 2 && (!strcmp (argv[1], "-d") || !strcmp (argv[1], "--debug")))) -- 2.47.2