c.opt (Wextra-semi): New C++ warning flag.

* c.opt (Wextra-semi): New C++ warning flag.
        * doc/invoke.texi (-Wextra-semi): Document new warning option.
        * parser.c (cp_parser_member_declaration): Add warning with fixit
        information for extra semicolon after in-class function definition.
        * g++.dg/warn/Wextra-semi.C: New test.

From-SVN: r247028
This commit is contained in:
Volker Reichelt 2017-04-20 16:48:44 +00:00 committed by Volker Reichelt
parent 4ba07ed462
commit c3cbcd4517
8 changed files with 62 additions and 2 deletions

View File

@ -1,3 +1,7 @@
2017-04-20 Volker Reichelt <v.reichelt@netcologne.de>
* doc/invoke.texi (-Wextra-semi): Document new warning option.
2017-04-20 Richard Biener <rguenther@suse.de> 2017-04-20 Richard Biener <rguenther@suse.de>
PR tree-optimization/57796 PR tree-optimization/57796

View File

@ -1,3 +1,7 @@
2017-04-20 Volker Reichelt <v.reichelt@netcologne.de>
* c.opt (Wextra-semi): New C++ warning flag.
2017-04-20 Jakub Jelinek <jakub@redhat.com> 2017-04-20 Jakub Jelinek <jakub@redhat.com>
PR middle-end/80423 PR middle-end/80423

View File

@ -504,6 +504,10 @@ Wextra
C ObjC C++ ObjC++ Warning C ObjC C++ ObjC++ Warning
; in common.opt ; in common.opt
Wextra-semi
C++ ObjC++ Var(warn_extra_semi) Warning
Warn about semicolon after in-class function definition.
Wfloat-conversion Wfloat-conversion
C ObjC C++ ObjC++ Var(warn_float_conversion) Warning LangEnabledBy(C ObjC C++ ObjC++,Wconversion) C ObjC C++ ObjC++ Var(warn_float_conversion) Warning LangEnabledBy(C ObjC C++ ObjC++,Wconversion)
Warn for implicit type conversions that cause loss of floating point precision. Warn for implicit type conversions that cause loss of floating point precision.

View File

@ -1,3 +1,8 @@
2017-04-20 Volker Reichelt <v.reichelt@netcologne.de>
* parser.c (cp_parser_member_declaration): Add warning with fixit
information for extra semicolon after in-class function definition.
2017-04-20 Jakub Jelinek <jakub@redhat.com> 2017-04-20 Jakub Jelinek <jakub@redhat.com>
PR middle-end/80423 PR middle-end/80423

View File

@ -23386,7 +23386,15 @@ cp_parser_member_declaration (cp_parser* parser)
token = cp_lexer_peek_token (parser->lexer); token = cp_lexer_peek_token (parser->lexer);
/* If the next token is a semicolon, consume it. */ /* If the next token is a semicolon, consume it. */
if (token->type == CPP_SEMICOLON) if (token->type == CPP_SEMICOLON)
cp_lexer_consume_token (parser->lexer); {
location_t semicolon_loc
= cp_lexer_consume_token (parser->lexer)->location;
gcc_rich_location richloc (semicolon_loc);
richloc.add_fixit_remove ();
warning_at_rich_loc (&richloc, OPT_Wextra_semi,
"extra %<;%> after in-class "
"function definition");
}
goto out; goto out;
} }
else else

View File

@ -274,7 +274,8 @@ Objective-C and Objective-C++ Dialects}.
-Wno-discarded-qualifiers -Wno-discarded-array-qualifiers @gol -Wno-discarded-qualifiers -Wno-discarded-array-qualifiers @gol
-Wno-div-by-zero -Wdouble-promotion -Wduplicated-cond @gol -Wno-div-by-zero -Wdouble-promotion -Wduplicated-cond @gol
-Wempty-body -Wenum-compare -Wno-endif-labels -Wexpansion-to-defined @gol -Wempty-body -Wenum-compare -Wno-endif-labels -Wexpansion-to-defined @gol
-Werror -Werror=* -Wfatal-errors -Wfloat-equal -Wformat -Wformat=2 @gol -Werror -Werror=* -Wextra-semi -Wfatal-errors @gol
-Wfloat-equal -Wformat -Wformat=2 @gol
-Wno-format-contains-nul -Wno-format-extra-args @gol -Wno-format-contains-nul -Wno-format-extra-args @gol
-Wformat-nonliteral -Wformat-overflow=@var{n} @gol -Wformat-nonliteral -Wformat-overflow=@var{n} @gol
-Wformat-security -Wformat-signedness -Wformat-truncation=@var{n} @gol -Wformat-security -Wformat-signedness -Wformat-truncation=@var{n} @gol
@ -5960,6 +5961,11 @@ In C++ enumerated type mismatches in conditional expressions are also
diagnosed and the warning is enabled by default. In C this warning is diagnosed and the warning is enabled by default. In C this warning is
enabled by @option{-Wall}. enabled by @option{-Wall}.
@item -Wextra-semi @r{(C++, Objective-C++ only)}
@opindex Wextra-semi
@opindex Wno-extra-semi
Warn about redundant semicolon after in-class function definition.
@item -Wjump-misses-init @r{(C, Objective-C only)} @item -Wjump-misses-init @r{(C, Objective-C only)}
@opindex Wjump-misses-init @opindex Wjump-misses-init
@opindex Wno-jump-misses-init @opindex Wno-jump-misses-init

View File

@ -1,3 +1,7 @@
2017-04-20 Volker Reichelt <v.reichelt@netcologne.de>
* g++.dg/warn/Wextra-semi.C: New test.
2017-04-20 Jakub Jelinek <jakub@redhat.com> 2017-04-20 Jakub Jelinek <jakub@redhat.com>
PR middle-end/80423 PR middle-end/80423

View File

@ -0,0 +1,25 @@
// { dg-options "-Wextra-semi -fdiagnostics-show-caret" }
struct A
{
A() {}; /* { dg-warning "after in-class function definition" }
{ dg-begin-multiline-output "" }
A() {};
^
-
{ dg-end-multiline-output "" } */
void foo() {}; /* { dg-warning "after in-class function definition" }
{ dg-begin-multiline-output "" }
void foo() {};
^
-
{ dg-end-multiline-output "" } */
friend void bar() {}; /* { dg-warning "after in-class function definition" }
{ dg-begin-multiline-output "" }
friend void bar() {};
^
-
{ dg-end-multiline-output "" } */
};