Commit c7baf9e9 by Mark Mitchell Committed by Mark Mitchell

re PR c++/27808 (ICE with invalid friend declaration)

	PR c++/27808
	* parser.c (cp_parser_decl_specifier_seq): Issue errors about
	"friend" specifiers that do not appear in class scopes.
	PR c++/27808
	* g++.dg/parse/friend6.C: New test.

From-SVN: r114259
parent 7edd9592
2006-05-30 Mark Mitchell <mark@codesourcery.com>
PR c++/27808
* parser.c (cp_parser_decl_specifier_seq): Issue errors about
"friend" specifiers that do not appear in class scopes.
PR c++/27803
* class.c (check_bitfield_decl): Ensure that all bitfields have
integral type.
......
......@@ -7425,9 +7425,17 @@ cp_parser_decl_specifier_seq (cp_parser* parser,
/* decl-specifier:
friend */
case RID_FRIEND:
if (!at_class_scope_p ())
{
error ("%<friend%> used outside of class");
cp_lexer_purge_token (parser->lexer);
}
else
{
++decl_specs->specs[(int) ds_friend];
/* Consume the token. */
cp_lexer_consume_token (parser->lexer);
}
break;
/* function-specifier:
......
2006-05-30 Mark Mitchell <mark@codesourcery.com>
PR c++/27808
* g++.dg/parse/friend6.C: New test.
2006-05-30 Asher Langton <langton2@llnl.gov>
* gfortran.dg/cray_pointers_7.f90: New test.
// PR c++/27808
template<typename T> friend void T::foo; // { dg-error "friend|invalid" }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment