cex: don't display twice unifying examples if there is no color

It makes no sense, and is actually confusing, to display twice the
same example with no visible difference.

* src/complain.h, src/complain.c (is_styled): New.
* src/counterexample.c (print_counterexample): Display the unified
example a second time only if it makes a difference.
* tests/conflicts.at, tests/counterexample.at, tests/report.at: Adjust.
* tests/diagnostics.at: Make sure we do display the unifying examples
twice when colors are enabled.  And check those colors.
This commit is contained in:
Akim Demaille
2020-06-19 07:06:24 +02:00
parent 69e3b405d9
commit 0f120354b6
7 changed files with 78 additions and 34 deletions

View File

@@ -104,6 +104,23 @@ flush (FILE *out)
fflush (out);
}
bool
is_styled (FILE *out)
{
if (out != stderr)
return false;
if (color_debug)
return true;
#if HAVE_LIBTEXTSTYLE
return (color_mode == color_yes
|| color_mode == color_html
|| (color_mode == color_tty && isatty (STDERR_FILENO)));
#else
return false;
#endif
}
/*------------------------.
| --warnings's handling. |
`------------------------*/
@@ -288,9 +305,7 @@ void
complain_init_color (void)
{
#if HAVE_LIBTEXTSTYLE
if (color_mode == color_yes
|| color_mode == color_html
|| (color_mode == color_tty && isatty (STDERR_FILENO)))
if (is_styled (stderr))
{
style_file_prepare ("BISON_STYLE", "BISON_STYLEDIR", pkgdatadir (),
"bison-default.css");