fixits: suggest running --update if there are fixits

* src/fixits.h, src/fixits.c (fixits_empty): New.
* src/complain.c (deprecated_directive): Register the Wdeprecated
fixits only if -Wdeprecated was enabled, so that we don't apply
updates if the user didn't ask for them.
* src/main.c (main): If there were fixits, issue a warning suggesting
running with --update.
Free uniqstrs after the fixits, since the latter use the former.
* tests/headers.at, tests/input.at: Update expectations.
This commit is contained in:
Akim Demaille
2019-01-15 21:00:41 +01:00
parent b7e0d3131d
commit 169fe80c7f
6 changed files with 35 additions and 8 deletions

View File

@@ -86,6 +86,7 @@ exp: %empty;
AT_BISON_CHECK([--defines -o input.c input.y], [], [],
[[input.y:11.1-18: warning: deprecated directive: '%name-prefix "my_"', use '%define api.prefix {my_}' [-Wdeprecated]
input.y: warning: fix-its can be applied. Rerun with option '--update'. [-Wother]
]])
# YYLTYPE should be defined, and MY_LLOC declared.

View File

@@ -1744,6 +1744,7 @@ AT_BISON_CHECK([[input-redefined.y]], [[1]], [],
input-redefined.y:1.1-20: previous definition
input-redefined.y:3.2-21: error: %define variable 'var' redefined
input-redefined.y:2.1-20: previous definition
input-redefined.y: warning: fix-its can be applied. Rerun with option '--update'. [-Wother]
]])
AT_DATA([input-unused.y],
@@ -1799,6 +1800,7 @@ start: %empty;
AT_BISON_CHECK([[-Dvar=cmd-d input-dg.y]], [[1]], [],
[[input-dg.y:1.1-18: error: %define variable 'var' redefined
<command line>:2: previous definition
input-dg.y: warning: fix-its can be applied. Rerun with option '--update'. [-Wother]
]])
AT_DATA([[input-dg.y]],
@@ -1811,6 +1813,7 @@ AT_BISON_CHECK([[-fcaret -Dvar=cmd-d input-dg.y]], [[1]], [],
%define var "gram"
^~~~~~~~~~~~~~~~~~
<command line>:3: previous definition
input-dg.y: warning: fix-its can be applied. Rerun with option '--update'. [-Wother]
]])
AT_DATA([[input-unused.y]],
@@ -2017,6 +2020,7 @@ input.y:5.1-15: warning: deprecated directive, use '%define api.value.type varia
input.y:6.1-34: warning: deprecated directive, use '%define api.parser.class {parser}' [-Wdeprecated]
%define parser_class_name {parser}
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
input.y: warning: fix-its can be applied. Rerun with option '--update'. [-Wother]
]])
AT_CLEANUP
@@ -2354,6 +2358,7 @@ AT_TEST([[%union foo {};
input.y:1.8-10: previous definition
input.y:4.1-32: error: %define variable 'api.value.union.name' redefined
input.y:3.8-10: previous definition
input.y: warning: fix-its can be applied. Rerun with option '--update'. [-Wother]
]])
AT_TEST([[%define api.value.union.name {foo}]],
@@ -2542,6 +2547,7 @@ input.y:11.1-14: previous definition
fix-it:"input.y":{27:1-27:15}:""
input.y:29.1-18: warning: deprecated directive: '%name-prefix "bar"', use '%define api.prefix {bar}' [-Wdeprecated]
fix-it:"input.y":{29:1-29:19}:"%define api.prefix {bar}"
input.y: warning: fix-its can be applied. Rerun with option '--update'. [-Wother]
]])
AT_CHECK([[sed -e '/^fix-it:/d' errors-all >experr]])
@@ -2599,6 +2605,7 @@ AT_BISON_CHECK([[-fcaret input.y]], [[1]], [],
input.y:19.1-24: previous definition
%define api.prefix {foo}
^~~~~~~~~~~~~~~~~~~~~~~~
input.y: warning: fix-its can be applied. Rerun with option '--update'. [-Wother]
]])
AT_CLEANUP
@@ -2636,6 +2643,7 @@ input.y:13.16-29: error: %define variable 'parse.error' redefined
input.y:13.1-14: previous definition
input.y:14.16-29: error: %define variable 'parse.error' redefined
input.y:13.16-29: previous definition
input.y: warning: fix-its can be applied. Rerun with option '--update'. [-Wother]
]])
AT_CLEANUP