parser.c (cp_parser_decl_specifier_seq): Add fix-it hints for friend outside class and obsolete auto as...
* parser.c (cp_parser_decl_specifier_seq): Add fix-it hints for friend outside class and obsolete auto as storage-class-specifier. * g++.dg/diagnostic/friend1.C: New test. * g++.dg/cpp0x/auto1.C: Add check for fix-it hint. From-SVN: r250282
This commit is contained in:
parent
a64559a5fc
commit
dbc4ecfc57
5 changed files with 35 additions and 7 deletions
|
@ -1,3 +1,8 @@
|
|||
2017-07-17 Volker Reichelt <v.reichelt@netcologne.de>
|
||||
|
||||
* parser.c (cp_parser_decl_specifier_seq): Add fix-it hints for
|
||||
friend outside class and obsolete auto as storage-class-specifier.
|
||||
|
||||
2017-07-17 Nathan Sidwell <nathan@acm.org>
|
||||
|
||||
* class.c (maybe_warn_about_overly_private_class): Ignore public
|
||||
|
|
|
@ -13382,7 +13382,9 @@ cp_parser_decl_specifier_seq (cp_parser* parser,
|
|||
case RID_FRIEND:
|
||||
if (!at_class_scope_p ())
|
||||
{
|
||||
error_at (token->location, "%<friend%> used outside of class");
|
||||
gcc_rich_location richloc (token->location);
|
||||
richloc.add_fixit_remove ();
|
||||
error_at_rich_loc (&richloc, "%<friend%> used outside of class");
|
||||
cp_lexer_purge_token (parser->lexer);
|
||||
}
|
||||
else
|
||||
|
@ -13444,10 +13446,13 @@ cp_parser_decl_specifier_seq (cp_parser* parser,
|
|||
/* Consume the token. */
|
||||
cp_lexer_consume_token (parser->lexer);
|
||||
|
||||
/* Complain about `auto' as a storage specifier, if
|
||||
we're complaining about C++0x compatibility. */
|
||||
warning_at (token->location, OPT_Wc__11_compat, "%<auto%>"
|
||||
" changes meaning in C++11; please remove it");
|
||||
/* Complain about `auto' as a storage specifier, if
|
||||
we're complaining about C++0x compatibility. */
|
||||
gcc_rich_location richloc (token->location);
|
||||
richloc.add_fixit_remove ();
|
||||
warning_at_rich_loc (&richloc, OPT_Wc__11_compat,
|
||||
"%<auto%> changes meaning in C++11; "
|
||||
"please remove it");
|
||||
|
||||
/* Set the storage class anyway. */
|
||||
cp_parser_set_storage_class (parser, decl_specs, RID_AUTO,
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2017-07-17 Volker Reichelt <v.reichelt@netcologne.de>
|
||||
|
||||
* g++.dg/diagnostic/friend1.C: New test.
|
||||
* g++.dg/cpp0x/auto1.C: Add check for fix-it hint.
|
||||
|
||||
2017-07-17 Nathan Sidwell <nathan@acm.org>
|
||||
|
||||
* g++.dg/warn/ctor-dtor-privacy-3.C: New.
|
||||
|
|
|
@ -1,9 +1,14 @@
|
|||
// { dg-do compile { target c++11 } }
|
||||
// { dg-options "-std=c++98 -Wc++11-compat" }
|
||||
// { dg-options "-std=c++98 -Wc++11-compat -fdiagnostics-show-caret" }
|
||||
|
||||
// Test warning for use of auto in C++98 mode with C++11
|
||||
// compatibility warnings
|
||||
void f()
|
||||
{
|
||||
auto int x = 5; // { dg-warning "changes meaning" }
|
||||
auto int x = 5; /* { dg-warning "changes meaning" }
|
||||
{ dg-begin-multiline-output "" }
|
||||
auto int x = 5;
|
||||
^~~~
|
||||
----
|
||||
{ dg-end-multiline-output "" } */
|
||||
}
|
||||
|
|
8
gcc/testsuite/g++.dg/diagnostic/friend1.C
Normal file
8
gcc/testsuite/g++.dg/diagnostic/friend1.C
Normal file
|
@ -0,0 +1,8 @@
|
|||
// { dg-options "-fdiagnostics-show-caret" }
|
||||
|
||||
friend void foo(); /* { dg-error "used outside of class" }
|
||||
{ dg-begin-multiline-output "" }
|
||||
friend void foo();
|
||||
^~~~~~
|
||||
------
|
||||
{ dg-end-multiline-output "" } */
|
Loading…
Add table
Reference in a new issue