From 32ae07efde7db078d48e95f29778e2227b0cf01b Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Thu, 5 Jul 2012 12:33:42 +0200 Subject: [PATCH] api.prefix: incompatible with %name-prefix. * data/bison.m4: Make it incompatible. * tests/input.at: Check that it is. --- data/bison.m4 | 8 ++++++++ tests/input.at | 31 ++++++++++++++++++++++++++++++- 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/data/bison.m4 b/data/bison.m4 index 9a66d884..178134a4 100644 --- a/data/bison.m4 +++ b/data/bison.m4 @@ -576,3 +576,11 @@ m4_define_default([b4_parse_param], []) # The initial column and line. m4_define_default([b4_location_initial_column], [1]) m4_define_default([b4_location_initial_line], [1]) + +# Sanity checks. +b4_percent_define_ifdef([api.prefix], +[m4_ifdef([b4_prefix], +[b4_complain_at(b4_percent_define_get_loc([api.prefix]), + [['%s' and '%s' cannot be used together]], + [%name-prefix], + [%define api.prefix])])]) diff --git a/tests/input.at b/tests/input.at index 0ed8635f..836ff6d6 100644 --- a/tests/input.at +++ b/tests/input.at @@ -69,7 +69,7 @@ AT_CLEANUP # _AT_UNUSED_VALUES_DECLARATIONS() -# -------------------------------------------- +# -------------------------------- # Generate the token, type, and destructor # declarations for the unused values tests. @@ -1340,3 +1340,32 @@ input.y:2.1-7: warning: POSIX Yacc forbids dashes in symbol names: foo-bar AT_BISON_CHECK([[-Werror,no-all,yacc input.y]], [[1]], [[]], [[experr]]) AT_CLEANUP + + +## ------------------------------------------------------ ## +## %name-prefix and %define api.prefix are incompatible. ## +## ------------------------------------------------------ ## + +AT_SETUP([[%name-prefix and %define api.prefix are incompatible]]) + +# AT_TEST(DIRECTIVES, OPTIONS, ERROR-LOCATION) +# -------------------------------------------- +m4_pushdef([AT_TEST], +[AT_DATA([[input.y]], +[[$1 +%% +exp:; +]]) +AT_BISON_CHECK([[$2 input.y]], [[1]], [[]], +[[$3: '%name-prefix' and '%define api.prefix' cannot be used together +]]) +]) + +AT_TEST([%define api.prefix foo %name-prefix "bar"], [], [input.y:1.9-18]) +AT_TEST([], [-Dapi.prefix=foo -p bar], [:2]) +AT_TEST([%name-prefix "bar"], [-Dapi.prefix=foo], [:2]) +AT_TEST([%define api.prefix foo], [-p bar], [input.y:1.9-18]) + +m4_popdef([AT_TEST]) + +AT_CLEANUP -- 2.47.2