https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113760
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jakub at gcc dot gnu.org,
| |jason at gcc dot gnu.org,
| |mpolacek at gcc dot gnu.org
--- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
g++ emits 4 errors on
struct S
{
void foo () {}
void bar () {};
void baz () = delete;
void qux () = delete;
;
void corge () = delete;
;
;
int s;
;
};
;
;
(one after qux, 2 after corge, one after s), clang++ -pedantic-errors
-std=c++23 including trunk 2 (one after corge, one after s), so neither
implements the DR. Strangely, with -pedantic-errors -std=c++23 -Wextra-semi it
warns 7 times but doesn't error (which is I think the desirable state).
Now, g++ with -pedantic-errors -std=c++23 -Wextra-semi emits just one warning
on the ; after bar and still the 4 errors.
That said, -Wextra-semi in GCC is documented that way:
Warn about redundant semicolons after in-class function
definitions.
and clang doesn't bother to document it at all (at least haven't found it).
So, shall we change documentation of -Wextra-semi and say change
/* A declaration consisting of a single semicolon is invalid
* before C++11. Allow it unless we're being pedantic. */
if (cxx_dialect < cxx11)
pedwarn (input_location, OPT_Wpedantic, "extra %<;%>");
to else warning (OPT_Wextra_semi, "extra %<;%>"); etc.?
Then there is
if (!in_system_header_at (token->location))
{
gcc_rich_location richloc (token->location);
richloc.add_fixit_remove ();
pedwarn (&richloc, OPT_Wpedantic, "extra %<;%>");
}
should that be similarly if (cxx_dialect < cxx11) pedwarn; else warning ?
Or, if we want to change this already for GCC 14, do that if (cxx_dialect <
cxx11) part
just before the last pedwarn above and add the else warning for GCC 15?