From 35b8e0e947bb9adac033c286a2f4997c9601c043 Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Mon, 12 Nov 2018 07:16:59 +0100 Subject: [PATCH] parser: deprecate %error-verbose It is unfortunate that %error_verbose was properly diagnosed as obsoleted by "%define parse.error verbose", but %error-verbose was not. * src/parse-gram.y (%error-verbose): Remove support. * src/scan-gram.l: Do it here instead, with a warning. * tests/input.at (Deprecated directives): Check it. --- NEWS | 3 +++ src/parse-gram.y | 7 ------- src/scan-gram.l | 5 ++++- tests/input.at | 6 +++++- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/NEWS b/NEWS index 1ed54441..cfddbaad 100644 --- a/NEWS +++ b/NEWS @@ -23,6 +23,9 @@ GNU Bison NEWS was never officially documented. Its use now triggers warnings. Eventually, support will be removed. Use %type instead. + The use of the %error-verbose directive is deprecated in favor of "%define + parse.error verbose" since Bison 3.0, but no warning was issued. + * Noteworthy changes in release 3.2.1 (2018-11-09) [stable] ** Bug fixes diff --git a/src/parse-gram.y b/src/parse-gram.y index a44326c4..f8716f59 100644 --- a/src/parse-gram.y +++ b/src/parse-gram.y @@ -143,7 +143,6 @@ PERCENT_DEFAULT_PREC "%default-prec" PERCENT_DEFINE "%define" PERCENT_DEFINES "%defines" - PERCENT_ERROR_VERBOSE "%error-verbose" PERCENT_EXPECT "%expect" PERCENT_EXPECT_RR "%expect-rr" PERCENT_FLAG "%" @@ -290,12 +289,6 @@ prologue_declaration: defines_flag = true; spec_defines_file = xstrdup ($2); } -| "%error-verbose" - { - muscle_percent_define_insert ("parse.error", @1, muscle_keyword, - "verbose", - MUSCLE_PERCENT_DEFINE_GRAMMAR_FILE); - } | "%expect" INT { expected_sr_conflicts = $2; } | "%expect-rr" INT { expected_rr_conflicts = $2; } | "%file-prefix" STRING { spec_file_prefix = $2; } diff --git a/src/scan-gram.l b/src/scan-gram.l index 22d56cbd..52b53fea 100644 --- a/src/scan-gram.l +++ b/src/scan-gram.l @@ -223,7 +223,6 @@ eqopt ([[:space:]]*=)? "%destructor" return PERCENT_DESTRUCTOR; "%dprec" return PERCENT_DPREC; "%empty" return PERCENT_EMPTY; - "%error-verbose" return PERCENT_ERROR_VERBOSE; "%expect" return PERCENT_EXPECT; "%expect-rr" return PERCENT_EXPECT_RR; "%file-prefix" return PERCENT_FILE_PREFIX; @@ -259,6 +258,10 @@ eqopt ([[:space:]]*=)? "%verbose" return PERCENT_VERBOSE; "%yacc" return PERCENT_YACC; + /* Deprecated since Bison 3.0 (2013-07-25), but the warning is + issued only since Bison 3.3. */ + "%error-verbose" DEPRECATED("%define parse.error verbose"); + /* Deprecated since Bison 2.7.90, 2012. */ "%default"[-_]"prec" DEPRECATED("%default-prec"); "%error"[-_]"verbose" DEPRECATED("%define parse.error verbose"); diff --git a/tests/input.at b/tests/input.at index 4e65b97d..175928d0 100644 --- a/tests/input.at +++ b/tests/input.at @@ -2188,11 +2188,12 @@ AT_DATA_GRAMMAR([[input.y]], %output = "foo" %pure_parser %token_table +%error-verbose %glr-parser %% exp : '0' ]]) -AT_BISON_CHECK([[input.y]], [[0]], [[]], +AT_BISON_CHECK([[input.y]], [[1]], [[]], [[input.y:10.1-13: warning: deprecated directive: '%default_prec', use '%default-prec' [-Wdeprecated] input.y:11.1-14: warning: deprecated directive: '%error_verbose', use '%define parse.error verbose' [-Wdeprecated] input.y:12.1-10: warning: deprecated directive: '%expect_rr', use '%expect-rr' [-Wdeprecated] @@ -2207,6 +2208,9 @@ input.y:23.1-9: warning: deprecated directive: '%no_lines', use '%no-lines' [-Wd input.y:24.1-9: warning: deprecated directive: '%output =', use '%output' [-Wdeprecated] input.y:25.1-12: warning: deprecated directive: '%pure_parser', use '%pure-parser' [-Wdeprecated] input.y:26.1-12: warning: deprecated directive: '%token_table', use '%token-table' [-Wdeprecated] +input.y:27.1-14: warning: deprecated directive: '%error-verbose', use '%define parse.error verbose' [-Wdeprecated] +input.y:27-6: error: %define variable 'parse.error' redefined +input.y:11-6: previous definition ]]) AT_CLEANUP