diagnostics: handle -fno-caret in the called functions

Don't force callers of location_caret to have to deal with flags that
disable it.

* src/location.h, src/location.c (location_caret)
(location_caret_suggestion): Early return if disabled.
* src/complain.c: Simplify.
This commit is contained in:
Akim Demaille
2020-01-22 08:49:12 +01:00
parent 16c77b4ba2
commit e6d1289f4a
3 changed files with 10 additions and 7 deletions

View File

@@ -464,7 +464,7 @@ error_message (const location *loc, int *indent, warnings flags,
{ {
putc ('\n', stderr); putc ('\n', stderr);
flush (stderr); flush (stderr);
if (loc && feature_flag & feature_caret && !(flags & no_caret)) if (loc && !(flags & no_caret))
location_caret (*loc, style, stderr); location_caret (*loc, style, stderr);
} }
} }
@@ -555,8 +555,7 @@ deprecated_directive (location const *loc, char const *old, char const *upd)
complain (loc, Wdeprecated, complain (loc, Wdeprecated,
_("deprecated directive: %s, use %s"), _("deprecated directive: %s, use %s"),
quote (old), quote_n (1, upd)); quote (old), quote_n (1, upd));
if (feature_flag & feature_caret) location_caret_suggestion (*loc, upd, stderr);
location_caret_suggestion (*loc, upd, stderr);
/* Register updates only if -Wdeprecated is enabled. */ /* Register updates only if -Wdeprecated is enabled. */
fixits_register (loc, upd); fixits_register (loc, upd);
} }

View File

@@ -400,6 +400,8 @@ caret_set_column (int col)
void void
location_caret (location loc, const char *style, FILE *out) location_caret (location loc, const char *style, FILE *out)
{ {
if (!(feature_flag & feature_caret))
return;
if (!loc.start.line) if (!loc.start.line)
return; return;
if (!caret_set_file (loc.start.file)) if (!caret_set_file (loc.start.file))
@@ -486,6 +488,8 @@ location_caret (location loc, const char *style, FILE *out)
void void
location_caret_suggestion (location loc, const char *s, FILE *out) location_caret_suggestion (location loc, const char *s, FILE *out)
{ {
if (!(feature_flag & feature_caret))
return;
const char *style = "fixit-insert"; const char *style = "fixit-insert";
fprintf (out, " | %*s", fprintf (out, " | %*s",
loc.start.column - 1 - caret_info.skip loc.start.column - 1 - caret_info.skip

View File

@@ -126,12 +126,12 @@ void caret_init (void);
left-over by the usage of location_caret. */ left-over by the usage of location_caret. */
void caret_free (void); void caret_free (void);
/* Quote the line containing LOC onto OUT. Highlight the part of LOC /* If -fcaret is enabled, quote the line containing LOC onto OUT.
with the color STYLE. */ Highlight the part of LOC with the color STYLE. */
void location_caret (location loc, const char* style, FILE *out); void location_caret (location loc, const char* style, FILE *out);
/* Display a suggestion of replacement for LOC with S. To call after /* If -fcaret is enabled, display a suggestion of replacement for LOC
location_caret. */ with S. To call after location_caret. */
void location_caret_suggestion (location loc, const char *s, FILE *out); void location_caret_suggestion (location loc, const char *s, FILE *out);
/* Return -1, 0, 1, depending whether a is before, equal, or /* Return -1, 0, 1, depending whether a is before, equal, or