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);
flush (stderr);
if (loc && feature_flag & feature_caret && !(flags & no_caret))
if (loc && !(flags & no_caret))
location_caret (*loc, style, stderr);
}
}
@@ -555,8 +555,7 @@ deprecated_directive (location const *loc, char const *old, char const *upd)
complain (loc, Wdeprecated,
_("deprecated directive: %s, use %s"),
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. */
fixits_register (loc, upd);
}

View File

@@ -400,6 +400,8 @@ caret_set_column (int col)
void
location_caret (location loc, const char *style, FILE *out)
{
if (!(feature_flag & feature_caret))
return;
if (!loc.start.line)
return;
if (!caret_set_file (loc.start.file))
@@ -486,6 +488,8 @@ location_caret (location loc, const char *style, FILE *out)
void
location_caret_suggestion (location loc, const char *s, FILE *out)
{
if (!(feature_flag & feature_caret))
return;
const char *style = "fixit-insert";
fprintf (out, " | %*s",
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. */
void caret_free (void);
/* Quote the line containing LOC onto OUT. Highlight the part of LOC
with the color STYLE. */
/* If -fcaret is enabled, quote the line containing LOC onto OUT.
Highlight the part of LOC with the color STYLE. */
void location_caret (location loc, const char* style, FILE *out);
/* Display a suggestion of replacement for LOC with S. To call after
location_caret. */
/* If -fcaret is enabled, display a suggestion of replacement for LOC
with S. To call after location_caret. */
void location_caret_suggestion (location loc, const char *s, FILE *out);
/* Return -1, 0, 1, depending whether a is before, equal, or