errors: show carets

* src/locations.c (caret_info): New, persistant information useful
for...
(location_caret): New, print a caret.
(cleanup_caret): Release caret_info cleanly, call it...
* src/main.c (main): Here.
* src/complain.c (error_message): Call location_caret here.
This commit is contained in:
Theophile Ranquet
2012-11-30 14:34:56 +01:00
parent 0db2648930
commit 3f5d1b2c67
6 changed files with 110 additions and 9 deletions

View File

@@ -308,11 +308,16 @@ grammar_rules_useless_report (const char *message)
for (r = 0; r < nrules ; ++r)
if (!rules[r].useful)
{
warn_at (rules[r].location, "%s: ", message);
if (warnings_flag & warnings_other)
if (feature_flag & feature_caret)
warn_at (rules[r].location, "%s", message);
else
{
rule_print (&rules[r], stderr);
fflush (stderr);
warn_at (rules[r].location, "%s: ", message);
if (warnings_flag & warnings_other)
{
rule_print (&rules[r], stderr);
fflush (stderr);
}
}
}
}