DR 180
DR 180 * decl.c (grokdeclarator): Require class-key for all friend class. Output the correct type and context in the error message. * g++.old-deja/g++.pt/crash32.C: Expect error. From-SVN: r59719
This commit is contained in:
parent
513f31eb68
commit
218e0eb6d3
@ -1,3 +1,9 @@
|
||||
2002-12-02 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
|
||||
|
||||
DR 180
|
||||
* decl.c (grokdeclarator): Require class-key for all friend class.
|
||||
Output the correct type and context in the error message.
|
||||
|
||||
2002-12-01 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
PR c++/5919
|
||||
|
@ -11645,22 +11645,19 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
|
||||
inlinep = 0;
|
||||
}
|
||||
|
||||
/* Until core issue 180 is resolved, allow 'friend typename A::B'.
|
||||
But don't allow implicit typenames except with a class-key. */
|
||||
if (!current_aggr && (TREE_CODE (type) != TYPENAME_TYPE
|
||||
|| IMPLICIT_TYPENAME_P (type)))
|
||||
if (!current_aggr)
|
||||
{
|
||||
/* Don't allow friend declaration without a class-key. */
|
||||
if (TREE_CODE (type) == TEMPLATE_TYPE_PARM)
|
||||
pedwarn ("template parameters cannot be friends");
|
||||
pedwarn ("template parameters cannot be friends");
|
||||
else if (TREE_CODE (type) == TYPENAME_TYPE)
|
||||
pedwarn ("\
|
||||
friend declaration requires class-key, i.e. `friend class %T::%T'",
|
||||
constructor_name (current_class_type),
|
||||
TYPE_IDENTIFIER (type));
|
||||
pedwarn ("friend declaration requires class-key, "
|
||||
"i.e. `friend class %T::%D'",
|
||||
TYPE_CONTEXT (type), TYPENAME_TYPE_FULLNAME (type));
|
||||
else
|
||||
pedwarn ("\
|
||||
friend declaration requires class-key, i.e. `friend %#T'",
|
||||
type);
|
||||
pedwarn ("friend declaration requires class-key, "
|
||||
"i.e. `friend %#T'",
|
||||
type);
|
||||
}
|
||||
|
||||
/* Only try to do this stuff if we didn't already give up. */
|
||||
|
@ -1,3 +1,8 @@
|
||||
2002-12-02 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
|
||||
|
||||
DR 180
|
||||
* g++.old-deja/g++.pt/crash32.C: Expect error.
|
||||
|
||||
2002-12-01 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
PR c++/5919
|
||||
|
@ -8,6 +8,6 @@ template <class T> struct A
|
||||
|
||||
template<class T> struct C
|
||||
{
|
||||
friend typename A<T>::B;
|
||||
friend typename A<T>::B; // ERROR - struct is required
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user