friend.c (do_friend): Don't take the nested [template] class into account when...
* friend.c (do_friend): Don't take the nested [template] class into account when deciding whether to warn about the friend function not referring to a template function. From-SVN: r39713
This commit is contained in:
parent
ff78d08278
commit
8826b15be3
2 changed files with 15 additions and 3 deletions
|
@ -1,3 +1,9 @@
|
|||
2001-02-15 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* friend.c (do_friend): Don't take the nested [template] class
|
||||
into account when deciding whether to warn about the friend
|
||||
function not referring to a template function.
|
||||
|
||||
2001-02-14 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* typeck.c (build_unary_op): Clarify error message.
|
||||
|
|
|
@ -380,6 +380,14 @@ do_friend (ctype, declarator, decl, parmdecls, attrlist,
|
|||
|
||||
if (! DECL_USE_TEMPLATE (decl))
|
||||
{
|
||||
/* We must check whether the decl refers to template
|
||||
arguments before push_template_decl_real adds a
|
||||
reference to the containing template class. */
|
||||
int warn = (warn_nontemplate_friend
|
||||
&& ! funcdef_flag && ! is_friend_template
|
||||
&& current_template_parms
|
||||
&& uses_template_parms (decl));
|
||||
|
||||
/* We can call pushdecl here, because the TREE_CHAIN of this
|
||||
FUNCTION_DECL is not needed for other purposes. Don't do
|
||||
this for a template instantiation. However, we don't
|
||||
|
@ -393,9 +401,7 @@ do_friend (ctype, declarator, decl, parmdecls, attrlist,
|
|||
else
|
||||
decl = push_template_decl_real (decl, /*is_friend=*/1);
|
||||
|
||||
if (warn_nontemplate_friend
|
||||
&& ! funcdef_flag && ! is_friend_template
|
||||
&& current_template_parms && uses_template_parms (decl))
|
||||
if (warn)
|
||||
{
|
||||
static int explained;
|
||||
cp_warning ("friend declaration `%#D' declares a non-template function", decl);
|
||||
|
|
Loading…
Add table
Reference in a new issue