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.
This commit is contained in:
Akim Demaille
2013-01-21 16:01:53 +01:00
parent f42c012fcf
commit 56b91ae0b1
3 changed files with 33 additions and 50 deletions

View File

@@ -274,14 +274,13 @@ AT_CHECK_DOXYGEN([Private])
## Namespaces. ## ## 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 # See if Bison can handle %define namespace "NAMESPACE-DECL". If COMPILE-ERROR
# is specified, then Bison should accept the input, but compilation will fail, # is specified, then Bison should accept the input, but compilation will fail,
# so don't check compilation. # 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]], AT_DATA_GRAMMAR([[input.y]],
[[%language "C++" [[%language "C++"
%defines %defines
@@ -311,12 +310,7 @@ void
std::cerr << "At " << loc << ": " << msg << std::endl; std::cerr << "At " << loc << ": " << msg << std::endl;
} }
int ]AT_MAIN_DEFINE[
main ()
{
]$1[::parser p;
return p.parse ();
}
]]) ]])
AT_BISON_CHECK([[-o input.cc input.y]]) AT_BISON_CHECK([[-o input.cc input.y]])
@@ -324,34 +318,35 @@ AT_BISON_CHECK([[-o input.cc input.y]])
m4_if([$#], [1], m4_if([$#], [1],
[AT_COMPILE_CXX([[input]], [[input.cc]]) [AT_COMPILE_CXX([[input]], [[input.cc]])
AT_PARSER_CHECK([[./input]])]) AT_PARSER_CHECK([[./input]])])
AT_BISON_OPTION_POPDEFS
]) ])
AT_SETUP([[Relative namespace references]]) AT_SETUP([[Relative namespace references]])
AT_CHECK_NAMESPACE([[foo]]) AT_TEST([[foo]])
AT_CHECK_NAMESPACE([[foo::bar]]) AT_TEST([[foo::bar]])
AT_CHECK_NAMESPACE([[foo::bar::baz]]) AT_TEST([[foo::bar::baz]])
AT_CLEANUP AT_CLEANUP
AT_SETUP([[Absolute namespace references]]) AT_SETUP([[Absolute namespace references]])
AT_CHECK_NAMESPACE([[::foo]]) AT_TEST([[::foo]])
AT_CHECK_NAMESPACE([[::foo::bar]]) AT_TEST([[::foo::bar]])
AT_CHECK_NAMESPACE([[::foo::bar::baz]]) AT_TEST([[::foo::bar::baz]])
AT_CHECK_NAMESPACE([[ ::foo]]) AT_TEST([[ ::foo]])
AT_CHECK_NAMESPACE([[ ::foo::bar]]) AT_TEST([[ ::foo::bar]])
AT_CHECK_NAMESPACE([[ ::foo::bar::baz]]) AT_TEST([[ ::foo::bar::baz]])
AT_CLEANUP AT_CLEANUP
AT_SETUP([[Syntactically invalid namespace references]]) AT_SETUP([[Syntactically invalid namespace references]])
AT_CHECK_NAMESPACE([[:foo:bar]], [[-]]) AT_TEST([[:foo:bar]], [[-]])
AT_CHECK_NAMESPACE([[foo: :bar]], [[-]]) AT_TEST([[foo: :bar]], [[-]])
# This one is interesting because `[3]' is encoded as `@<:@3@:>@', which # This one is interesting because `[3]' is encoded as `@<:@3@:>@', which
# contains single occurrences of `:'. # contains single occurrences of `:'.
AT_CHECK_NAMESPACE([[foo[3]::bar::baz]], [[-]]) AT_TEST([[foo[3]::bar::baz]], [[-]])
AT_CHECK_NAMESPACE([[foo::bar,baz]], [[-]]) AT_TEST([[foo::bar,baz]], [[-]])
AT_CHECK_NAMESPACE([[foo::bar::(baz /* Pacify Emacs ) */]], [[-]]) AT_TEST([[foo::bar::(baz /* Pacify Emacs ) */]], [[-]])
AT_CLEANUP AT_CLEANUP
m4_popdef([AT_TEST])
## -------------------------------------- ## ## -------------------------------------- ##
## Syntax error discarding no lookahead. ## ## Syntax error discarding no lookahead. ##

View File

@@ -68,30 +68,21 @@ AT_TEST_CPP_GUARD_H([9foo], [%glr-parser])
AT_SETUP([export YYLTYPE]) AT_SETUP([export YYLTYPE])
AT_BISON_OPTION_PUSHDEFS([%name-prefix "my_"])
AT_DATA_GRAMMAR([input.y], AT_DATA_GRAMMAR([input.y],
[%locations [[%locations
%name-prefix "my_" %name-prefix "my_"
%{ %{
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
static int ]AT_YYERROR_DEFINE[
my_lex (void) ]AT_YYLEX_DEFINE[
{
return EOF;
}
static void
my_error (const char *msg)
{
fprintf (stderr, "%s\n", msg);
}
%} %}
%% %%
exp:; exp:;
]) ]])
AT_BISON_CHECK([--defines -o input.c input.y]) AT_BISON_CHECK([--defines -o input.c input.y])
@@ -102,11 +93,7 @@ YYLTYPE *my_llocp = &my_lloc;
int my_parse (void); int my_parse (void);
int ]AT_MAIN_DEFINE[
main (void)
{
return my_parse ();
}
]]) ]])
# Link and execute, just to make sure everything is fine (and in # 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([input.o])
AT_COMPILE([caller], [caller.o input.o]) AT_COMPILE([caller], [caller.o input.o])
AT_PARSER_CHECK([./caller]) AT_PARSER_CHECK([./caller])
AT_BISON_OPTION_POPDEFS
AT_CLEANUP AT_CLEANUP
## ----------------- ## ## ----------------- ##

View File

@@ -168,9 +168,10 @@ m4_pushdef([AT_PURE_IF],
[m4_bmatch([$3], [%define *api\.pure\|%pure-parser], [m4_bmatch([$3], [%define *api\.pure\|%pure-parser],
[m4_bmatch([$3], [%define *api\.pure *"?false"?], [$2], [$1])], [m4_bmatch([$3], [%define *api\.pure *"?false"?], [$2], [$1])],
[$2])]) [$2])])
# AT_NAME_PREFIX: also consider api.namespace.
m4_pushdef([AT_NAME_PREFIX], m4_pushdef([AT_NAME_PREFIX],
[m4_bmatch([$3], [\(%define api\.prefix\|%name-prefix\) ".*"], [m4_bmatch([$3], [\(%define api\.\(namespace\|prefix\)\|%name-prefix\) ".*"],
[m4_bregexp([$3], [\(%define api\.prefix\|%name-prefix\) "\([^""]*\)"], [\2])], [m4_bregexp([$3], [\(%define api\.\(namespace\|prefix\)\|%name-prefix\) "\([^""]*\)"], [\3])],
[yy])]) [yy])])
m4_pushdef([AT_TOKEN_CTOR_IF], m4_pushdef([AT_TOKEN_CTOR_IF],
[m4_bmatch([$3], [%define api.token.constructor], [$1], [$2])]) [m4_bmatch([$3], [%define api.token.constructor], [$1], [$2])])
@@ -462,7 +463,7 @@ main (int argc, char const* argv[])
yydebug |= 1;]], [[ yydebug |= 1;]], [[
(void) argc; (void) argc;
(void) argv;]])[ (void) argv;]])[
return yyparse (); return ]AT_NAME_PREFIX[parse ();
}]], }]],
[c++], [c++],
[[#include <cstdlib> // getenv. [[#include <cstdlib> // getenv.
@@ -470,7 +471,7 @@ main (int argc, char const* argv[])
int int
main (int argc, char const* argv[]) main (int argc, char const* argv[])
{ {
yy::parser p;]AT_DEBUG_IF([[ ]AT_NAME_PREFIX[::parser p;]AT_DEBUG_IF([[
if (getenv("YYDEBUG") if (getenv("YYDEBUG")
|| (argc == 2 || (argc == 2
&& (!strcmp (argv[1], "-d") || !strcmp (argv[1], "--debug")))) && (!strcmp (argv[1], "-d") || !strcmp (argv[1], "--debug"))))