tests: check the "%define variant" is deprecated.

* tests/input.at: Rename some AT_SETUP to avoid that
AT_SETUP_STRIP thinks they contain %define directives.
("%define" backward compatibility): Merge tests together
to speed up the test suite, and to make maintenance easier
(multiple AT_CHECK means multiple runs of the test suite to
be sure to have updated all the error messages).
Check the "%define variant" is properly obsoleted.
This commit is contained in:
Akim Demaille
2012-12-23 10:52:23 +01:00
parent bc6038978f
commit 1a06f28efc

View File

@@ -1270,7 +1270,7 @@ AT_CLEANUP
## %define Boolean variables. ## ## %define Boolean variables. ##
## --------------------------- ## ## --------------------------- ##
AT_SETUP([[%define Boolean variables]]) AT_SETUP([["%define" Boolean variables]])
AT_DATA([Input.y], AT_DATA([Input.y],
[[%language "Java" [[%language "Java"
@@ -1290,7 +1290,11 @@ AT_CLEANUP
## %define enum variables. ## ## %define enum variables. ##
## ------------------------ ## ## ------------------------ ##
AT_SETUP([[%define enum variables]]) AT_SETUP([["%define" enum variables]])
# Check errors from the front-end, and the back-end. Since the
# front-end quits before calling the back-end, these tests cannot be
# fused.
# Front-end. # Front-end.
AT_DATA([[input.y]], AT_DATA([[input.y]],
@@ -1298,22 +1302,25 @@ AT_DATA([[input.y]],
%% %%
start: ; start: ;
]]) ]])
AT_BISON_CHECK([[input.y]], [[1]], [[]], AT_BISON_CHECK([[-fcaret input.y]], [[1]], [[]],
[[input.y:1.9-28: error: invalid value for %define variable 'lr.default-reduction': 'bogus' [[input.y:1.9-28: error: invalid value for %define variable 'lr.default-reduction': 'bogus'
%define lr.default-reduction bogus
^^^^^^^^^^^^^^^^^^^^
input.y:1.9-28: accepted value: 'most' input.y:1.9-28: accepted value: 'most'
input.y:1.9-28: accepted value: 'consistent' input.y:1.9-28: accepted value: 'consistent'
input.y:1.9-28: accepted value: 'accepting' input.y:1.9-28: accepted value: 'accepting'
]]) ]])
# Back-end. # Back-end.
# FIXME: these should be indented, but we shouldn't mess with the m4 yet
AT_DATA([[input.y]], AT_DATA([[input.y]],
[[%define api.push-pull neither [[%define api.push-pull neither
%% %%
start: ; start: ;
]]) ]])
AT_BISON_CHECK([[input.y]], [1], [], AT_BISON_CHECK([[-fcaret input.y]], [[1]], [[]],
[[input.y:1.9-21: error: invalid value for %define variable 'api.push-pull': 'neither' [[input.y:1.9-21: error: invalid value for %define variable 'api.push-pull': 'neither'
%define api.push-pull neither
^^^^^^^^^^^^^
input.y:1.9-21: accepted value: 'pull' input.y:1.9-21: accepted value: 'pull'
input.y:1.9-21: accepted value: 'push' input.y:1.9-21: accepted value: 'push'
input.y:1.9-21: accepted value: 'both' input.y:1.9-21: accepted value: 'both'
@@ -1325,65 +1332,37 @@ AT_CLEANUP
## %define backward compatibility. ## ## %define backward compatibility. ##
## -------------------------------- ## ## -------------------------------- ##
AT_SETUP([[%define backward compatibility]]) AT_SETUP([["%define" backward compatibility]])
# The error messages tell us whether underscores in these variables are
# being converted to dashes.
# The error messages tell us whether the variables are properly updated.
AT_DATA([[input.y]], AT_DATA([[input.y]],
[[%define api.push_pull "neither" [[%define api.push_pull both
%% %define lr.keep_unreachable_states maybe
start: ; %define namespace "foo"
]])
AT_BISON_CHECK([[input.y]], [1], [],
[[input.y:1.9-21: warning: deprecated directive: '%define api.push_pull neither', use '%define api.push-pull neither' [-Wdeprecated]
input.y:1.9-21: error: invalid value for %define variable 'api.push-pull': 'neither'
input.y:1.9-21: accepted value: 'pull'
input.y:1.9-21: accepted value: 'push'
input.y:1.9-21: accepted value: 'both'
]])
AT_BISON_CHECK([[-fcaret input.y]], [1], [],
[[input.y:1.9-21: warning: deprecated directive, use '%define api.push-pull neither' [-Wdeprecated]
%define api.push_pull "neither"
^^^^^^^^^^^^^
input.y:1.9-21: error: invalid value for %define variable 'api.push-pull': 'neither'
%define api.push_pull "neither"
^^^^^^^^^^^^^
input.y:1.9-21: accepted value: 'pull'
input.y:1.9-21: accepted value: 'push'
input.y:1.9-21: accepted value: 'both'
]])
AT_DATA([[input.y]],
[[%define lr.keep_unreachable_states maybe
%%
start: ;
]])
AT_BISON_CHECK([[input.y]], [1], [],
[[input.y:1.9-34: warning: deprecated directive: '%define lr.keep_unreachable_states maybe', use '%define lr.keep-unreachable-state maybe' [-Wdeprecated]
input.y:1.9-34: error: invalid value for %define Boolean variable 'lr.keep-unreachable-state'
]])
AT_DATA([[input.y]],
[[%define namespace "foo"
%define api.namespace "foo" %define api.namespace "foo"
%define variant
%% %%
start: ; start: ;
]]) ]])
AT_BISON_CHECK([[input.y]], [1], [], AT_BISON_CHECK([[-fcaret input.y]], [1], [],
[[input.y:1.9-17: warning: deprecated directive: '%define namespace foo', use '%define api.namespace foo' [-Wdeprecated] [[input.y:1.9-21: warning: deprecated directive, use '%define api.push-pull both' [-Wdeprecated]
input.y:2.9-21: error: %define variable 'api.namespace' redefined %define api.push_pull both
input.y:1.9-17: previous definition ^^^^^^^^^^^^^
]]) input.y:2.9-34: warning: deprecated directive, use '%define lr.keep-unreachable-state maybe' [-Wdeprecated]
%define lr.keep_unreachable_states maybe
AT_DATA([[input.y]], ^^^^^^^^^^^^^^^^^^^^^^^^^^
[[%define foo_bar "baz" input.y:3.9-17: warning: deprecated directive, use '%define api.namespace foo' [-Wdeprecated]
%% %define namespace "foo"
start: ; ^^^^^^^^^
]]) input.y:4.9-21: error: %define variable 'api.namespace' redefined
AT_BISON_CHECK([[input.y]], [[1]], [], %define api.namespace "foo"
[[input.y:1.9-15: error: %define variable 'foo_bar' is not used ^^^^^^^^^^^^^
input.y:3.9-17: previous definition
%define namespace "foo"
^^^^^^^^^
input.y:5.9-15: warning: deprecated directive, use '%define api.value.type variant' [-Wdeprecated]
%define variant
^^^^^^^
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -1639,7 +1618,7 @@ AT_CLEANUP
## %name-prefix and %define api.prefix are incompatible. ## ## %name-prefix and %define api.prefix are incompatible. ##
## ------------------------------------------------------ ## ## ------------------------------------------------------ ##
AT_SETUP([[%name-prefix and %define api.prefix are incompatible]]) AT_SETUP([[%name-prefix and api.prefix are incompatible]])
# AT_TEST(DIRECTIVES, OPTIONS, ERROR-LOCATION) # AT_TEST(DIRECTIVES, OPTIONS, ERROR-LOCATION)
# -------------------------------------------- # --------------------------------------------