diagnostics: document the change of format

* doc/bison.texiL Adjust output.
Also, Graphviz has no uppercsae V.
* NEWS: Explain the format change.
This commit is contained in:
Akim Demaille
2019-04-22 16:26:52 +02:00
parent a9b350fb3a
commit 95d688957f
2 changed files with 63 additions and 41 deletions

26
NEWS
View File

@@ -4,10 +4,32 @@ GNU Bison NEWS
** Changes ** Changes
In conformance with the recommendations of the GraphViz team, if %require *** Graphviz output
In conformance with the recommendations of the Graphviz team, if %require
"3.4" (or better) is specified, the option --graph generates a *.gv file "3.4" (or better) is specified, the option --graph generates a *.gv file
by default, instead of *.dot. by default, instead of *.dot.
*** Diagnostics overhaul
Column numbers were wrong with multibyte characters, which would also
result in skewed diagnostics with carets. Beside, because we were
indenting the quoted source with a single space, lines with tab characters
were incorrectly underlined.
To address these issues, and to be clearer, Bison now issues diagnostics
as GCC9 does. For instance it used to display (there's a tab before the
opening brace):
foo.y:3.37-38: error: $2 of expr has no declared type
expr: expr '+' "number" { $$ = $1 + $2; }
^~
It now reports
foo.y:3.37-38: error: $2 of expr has no declared type
3 | expr: expr '+' "number" { $$ = $1 + $2; }
| ^~
** New features ** New features
*** Colored diagnostics *** Colored diagnostics
@@ -22,7 +44,7 @@ GNU Bison NEWS
for instance for instance
https://alpha.gnu.org/gnu/gettext/libtextstyle-0.7.tar.gz https://alpha.gnu.org/gnu/gettext/libtextstyle-0.8.tar.gz
The option --color supports the following arguments: The option --color supports the following arguments:
- always, yes: Enable colors. - always, yes: Enable colors.

View File

@@ -4291,13 +4291,13 @@ Bison}):
$ @kbd{bison -Wmidrule-value mid.y} $ @kbd{bison -Wmidrule-value mid.y}
@group @group
mid.y:2.6-13: warning: unset value: $$ mid.y:2.6-13: warning: unset value: $$
exp: @{ a(); @} "b" @{ $$ = c(); @} @{ d(); @} "e" @{ f = $1; @}; 2 | exp: @{ a(); @} "b" @{ $$ = c(); @} @{ d(); @} "e" @{ f = $1; @};
^~~~~~~~ | ^~~~~~~~
@end group @end group
@group @group
mid.y:2.19-31: warning: unused value: $3 mid.y:2.19-31: warning: unused value: $3
exp: @{ a(); @} "b" @{ $$ = c(); @} @{ d(); @} "e" @{ f = $1; @}; 2 | exp: @{ a(); @} "b" @{ $$ = c(); @} @{ d(); @} "e" @{ f = $1; @};
^~~~~~~~~~~~~ | ^~~~~~~~~~~~~
@end group @end group
@end example @end example
@@ -4803,7 +4803,7 @@ longer generated.
@item @code{"3.4"} (or better) @item @code{"3.4"} (or better)
To comply with the To comply with the
@uref{https://marc.info/?l=graphviz-devel&m=129418103126092, recommendations @uref{https://marc.info/?l=graphviz-devel&m=129418103126092, recommendations
of the GraphViz team}, use the @code{.gv} extension instead of @code{.dot} of the Graphviz team}, use the @code{.gv} extension instead of @code{.dot}
for the name of the generated DOT file. @xref{Graphviz}. for the name of the generated DOT file. @xref{Graphviz}.
@end table @end table
@@ -9346,8 +9346,8 @@ useless: STR;
calc.y: warning: 1 nonterminal useless in grammar [-Wother] calc.y: warning: 1 nonterminal useless in grammar [-Wother]
calc.y: warning: 1 rule useless in grammar [-Wother] calc.y: warning: 1 rule useless in grammar [-Wother]
calc.y:19.1-7: warning: nonterminal useless in grammar: useless [-Wother] calc.y:19.1-7: warning: nonterminal useless in grammar: useless [-Wother]
useless: STR; 19 | useless: STR;
^~~~~~~ | ^~~~~~~
calc.y: warning: 7 shift/reduce conflicts [-Wconflicts-sr] calc.y: warning: 7 shift/reduce conflicts [-Wconflicts-sr]
@end example @end example
@@ -10301,14 +10301,14 @@ exp:;
@group @group
$ @kbd{bison -u foo.y} $ @kbd{bison -u foo.y}
foo.y:1.1-14: warning: deprecated directive, use '%define parse.error verbose' [-Wdeprecated] foo.y:1.1-14: warning: deprecated directive, use '%define parse.error verbose' [-Wdeprecated]
%error-verbose 1 | %error-verbose
^~~~~~~~~~~~~~ | ^~~~~~~~~~~~~~
foo.y:2.1-27: error: %define variable 'parse.error' redefined foo.y:2.1-27: error: %define variable 'parse.error' redefined
%define parse.error verbose 2 | %define parse.error verbose
^~~~~~~~~~~~~~~~~~~~~~~~~~~ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
foo.y:1.1-14: previous definition foo.y:1.1-14: previous definition
%error-verbose 1 | %error-verbose
^~~~~~~~~~~~~~ | ^~~~~~~~~~~~~~
bison: file 'foo.y' was updated (backup: 'foo.y~') bison: file 'foo.y' was updated (backup: 'foo.y~')
@end group @end group
@group @group
@@ -10423,18 +10423,18 @@ Bison reports:
@example @example
@group @group
warning: useless precedence and associativity for "=" warning: useless precedence and associativity for "="
%nonassoc "=" | %nonassoc "="
^~~ | ^~~
@end group @end group
@group @group
warning: useless associativity for "*", use %precedence warning: useless associativity for "*", use %precedence
%left "*" | %left "*"
^~~ | ^~~
@end group @end group
@group @group
warning: useless precedence for "(" warning: useless precedence for "("
%precedence "(" | %precedence "("
^~~ | ^~~
@end group @end group
@end example @end example
@@ -10522,28 +10522,28 @@ When invoked with @option{-fcaret} (or nothing), Bison will report:
@example @example
@group @group
in.y:3.20-23: error: ambiguous reference: '$exp' in.y:3.20-23: error: ambiguous reference: '$exp'
exp: exp '+' exp @{ $exp = $1 + $2; @}; 3 | exp: exp '+' exp @{ $exp = $1 + $2; @};
^~~~ | ^~~~
@end group @end group
@group @group
in.y:3.1-3: refers to: $exp at $$ in.y:3.1-3: refers to: $exp at $$
exp: exp '+' exp @{ $exp = $1 + $2; @}; 3 | exp: exp '+' exp @{ $exp = $1 + $2; @};
^~~ | ^~~
@end group @end group
@group @group
in.y:3.6-8: refers to: $exp at $1 in.y:3.6-8: refers to: $exp at $1
exp: exp '+' exp @{ $exp = $1 + $2; @}; 3 | exp: exp '+' exp @{ $exp = $1 + $2; @};
^~~ | ^~~
@end group @end group
@group @group
in.y:3.14-16: refers to: $exp at $3 in.y:3.14-16: refers to: $exp at $3
exp: exp '+' exp @{ $exp = $1 + $2; @}; 3 | exp: exp '+' exp @{ $exp = $1 + $2; @};
^~~ | ^~~
@end group @end group
@group @group
in.y:3.32-33: error: $2 of 'exp' has no declared type in.y:3.32-33: error: $2 of 'exp' has no declared type
exp: exp '+' exp @{ $exp = $1 + $2; @}; 3 | exp: exp '+' exp @{ $exp = $1 + $2; @};
^~ | ^~
@end group @end group
@end example @end example
@@ -10580,11 +10580,11 @@ exp:;
@group @group
$ @kbd{bison -ffixit foo.y} $ @kbd{bison -ffixit foo.y}
foo.y:2.1-24: error: %define variable 'api.prefix' redefined foo.y:2.1-24: error: %define variable 'api.prefix' redefined
%define api.prefix @{bar@} 2 | %define api.prefix @{bar@}
^~~~~~~~~~~~~~~~~~~~~~~~ | ^~~~~~~~~~~~~~~~~~~~~~~~
foo.y:1.1-24: previous definition foo.y:1.1-24: previous definition
%define api.prefix @{foo@} 1 | %define api.prefix @{foo@}
^~~~~~~~~~~~~~~~~~~~~~~~ | ^~~~~~~~~~~~~~~~~~~~~~~~
fix-it:"foo.y":@{2:1-2:25@}:"" fix-it:"foo.y":@{2:1-2:25@}:""
foo.y: warning: fix-its can be applied. Rerun with option '--update'. [-Wother] foo.y: warning: fix-its can be applied. Rerun with option '--update'. [-Wother]
@end group @end group
@@ -10604,11 +10604,11 @@ exp:;
@group @group
$ @kbd{bison foo.y} $ @kbd{bison foo.y}
foo.y:1.1-14: warning: deprecated directive, use '%define parse.error verbose' [-Wdeprecated] foo.y:1.1-14: warning: deprecated directive, use '%define parse.error verbose' [-Wdeprecated]
%error-verbose 1 | %error-verbose
^~~~~~~~~~~~~~ | ^~~~~~~~~~~~~~
foo.y:2.1-18: warning: deprecated directive, use '%define api.prefix @{foo@}' [-Wdeprecated] foo.y:2.1-18: warning: deprecated directive, use '%define api.prefix @{foo@}' [-Wdeprecated]
%name-prefix "foo" 2 | %name-prefix "foo"
^~~~~~~~~~~~~~~~~~ | ^~~~~~~~~~~~~~~~~~
foo.y: warning: fix-its can be applied. Rerun with option '--update'. [-Wother] foo.y: warning: fix-its can be applied. Rerun with option '--update'. [-Wother]
@end group @end group
@end example @end example
@@ -14411,7 +14411,7 @@ London, Department of Computer Science, TR-00-12 (December 2000).
@c LocalWords: Johnstone Shamsa Sadaf Hussain Tomita TR uref YYMAXDEPTH inline @c LocalWords: Johnstone Shamsa Sadaf Hussain Tomita TR uref YYMAXDEPTH inline
@c LocalWords: YYINITDEPTH stmts ref initdcl maybeasm notype Lookahead yyoutput @c LocalWords: YYINITDEPTH stmts ref initdcl maybeasm notype Lookahead yyoutput
@c LocalWords: hexflag STR exdent itemset asis DYYDEBUG YYFPRINTF args Autoconf @c LocalWords: hexflag STR exdent itemset asis DYYDEBUG YYFPRINTF args Autoconf
@c LocalWords: ypp yxx itemx tex leaderfill Troubleshouting sqrt GraphViz @c LocalWords: ypp yxx itemx tex leaderfill Troubleshouting sqrt Graphviz
@c LocalWords: hbox hss hfill tt ly yyin fopen fclose ofirst gcc ll lookahead @c LocalWords: hbox hss hfill tt ly yyin fopen fclose ofirst gcc ll lookahead
@c LocalWords: nbar yytext fst snd osplit ntwo strdup AST Troublereporting th @c LocalWords: nbar yytext fst snd osplit ntwo strdup AST Troublereporting th
@c LocalWords: YYSTACK DVI fdl printindex IELR nondeterministic nonterminals ps @c LocalWords: YYSTACK DVI fdl printindex IELR nondeterministic nonterminals ps
@@ -14425,7 +14425,7 @@ London, Department of Computer Science, TR-00-12 (December 2000).
@c LocalWords: YYENABLE bindtextdomain Makefile DEFS CPPFLAGS DBISON DeRemer @c LocalWords: YYENABLE bindtextdomain Makefile DEFS CPPFLAGS DBISON DeRemer
@c LocalWords: autoreconf Pennello multisets nondeterminism Generalised baz ACM @c LocalWords: autoreconf Pennello multisets nondeterminism Generalised baz ACM
@c LocalWords: redeclare automata Dparse localedir datadir XSLT midrule Wno @c LocalWords: redeclare automata Dparse localedir datadir XSLT midrule Wno
@c LocalWords: Graphviz multitable headitem hh basename Doxygen fno filename @c LocalWords: multitable headitem hh basename Doxygen fno filename
@c LocalWords: doxygen ival sval deftypemethod deallocate pos deftypemethodx @c LocalWords: doxygen ival sval deftypemethod deallocate pos deftypemethodx
@c LocalWords: Ctor defcv defcvx arg accessors arithmetics CPP ifndef CALCXX @c LocalWords: Ctor defcv defcvx arg accessors arithmetics CPP ifndef CALCXX
@c LocalWords: lexer's calcxx bool LPAREN RPAREN deallocation cerrno climits @c LocalWords: lexer's calcxx bool LPAREN RPAREN deallocation cerrno climits