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

@@ -27,6 +27,7 @@
#include <gl_rbtreehash_list.h>
#include <hash.h>
#include <stdlib.h>
#include <textstyle.h>
#include <time.h>
#include "closure.h"
@@ -109,9 +110,15 @@ print_counterexample (counterexample *cex, FILE *out, const char *prefix)
prefix, _("First derivation"));
derivation_print (cex->d1, out, prefix);
fprintf (out, " %s%-20s ",
prefix, cex->unifying ? _("Example") : _("Second example"));
derivation_print_leaves (cex->d2, out, prefix);
// If we output to the terminal (via stderr) and we have color
// support, display unifying examples a second time, as color allows
// to see the differences.
if (!cex->unifying || is_styled (stderr))
{
fprintf (out, " %s%-20s ",
prefix, cex->unifying ? _("Example") : _("Second example"));
derivation_print_leaves (cex->d2, out, prefix);
}
fprintf (out, " %s%-20s ",
prefix, _("Second derivation"));
derivation_print (cex->d2, out, prefix);