X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/f68a49ed4942714616e692f0fa2a8315368bae3b..cc8962bdde81b04aa728aef21e53b4a08a0debfe:/src/complain.c diff --git a/src/complain.c b/src/complain.c index cdc88030..fdc4b542 100644 --- a/src/complain.c +++ b/src/complain.c @@ -68,6 +68,7 @@ static const char * const warnings_args[] = "other", "all", "error", + "everything", 0 }; @@ -83,7 +84,8 @@ static const int warnings_types[] = Wprecedence, Wother, Wall, - Werror + Werror, + Weverything }; ARGMATCH_VERIFY (warnings_args, warnings_types); @@ -94,10 +96,10 @@ warning_argmatch (char const *arg, size_t no, size_t err) int value = XARGMATCH ("--warning", arg + no + err, warnings_args, warnings_types); - /* -Wnone == -Wno-all, and -Wno-none == -Wall. */ + /* -Wnone == -Wno-everything, and -Wno-none == -Weverything. */ if (!value) { - value = Wall; + value = Weverything; no = !no; } @@ -145,7 +147,7 @@ warnings_argmatch (char *args) else if (STREQ (args, "no-error")) { warnings_are_errors = false; - warning_argmatch ("no-error=all", 3, 6); + warning_argmatch ("no-error=everything", 3, 6); } else { @@ -196,6 +198,15 @@ warning_severity (warnings flags) } } +bool +warning_is_unset (warnings flags) +{ + size_t b; + for (b = 0; b < warnings_size; ++b) + if (flags & 1 << b && warnings_flag[b] != severity_unset) + return false; + return true; +} /** Display a "[-Wyacc]" like message on \a f. */ @@ -356,3 +367,13 @@ deprecated_directive (location const *loc, char const *old, char const *upd) _("deprecated directive: %s, use %s"), quote (old), quote_n (1, upd)); } + +void +duplicate_directive (char const *directive, + location first, location second) +{ + unsigned i = 0; + complain (&second, complaint, _("only one %s allowed per rule"), directive); + i += SUB_INDENT; + complain_indent (&first, complaint, &i, _("previous declaration")); +}