[Bug c++/96310] Ignoring Wnonnull via pragma gcc diagnostics still produces a unwanted note
msebor at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Jul 29 16:47:51 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96310
--- Comment #4 from Martin Sebor <msebor at gcc dot gnu.org> ---
I've been thinking about that too but not really coming up with anything given
the current design. One idea is to change warning() to return a unique "token"
and have inform() take it as an argument and do its thing based on its value.
The code would then go back to the original:
warntok = warning_at (loc, OPT_Wnonnull,
"%qs pointer null", "this");
if (pctx->fndecl)
inform (warntok,
DECL_SOURCE_LOCATION (pctx->fndecl),
"in a call to non-static member function %qD",
pctx->fndecl);
A more object-oriented alternative is to extend the auto_diagnostic_group class
to create a series of related messages, starting with an error or warning, and
followed by any number of notes, and have it either issue all of them or none
in a single call. That might look like this:
auto_diagnostic_group adg;
adg.warning_at (loc, OPT_Wnonnull,
"%qs pointer null", "this");
if (pctx->fndecl)
adg.inform (DECL_SOURCE_LOCATION (pctx->fndecl),
"in a call to non-static member function %qD",
pctx->fndecl);
adg.do_it ();
More information about the Gcc-bugs
mailing list