From 8826b15be351ee4049126d604ae88a354bc9fc03 Mon Sep 17 00:00:00 2001 From: Alexandre Oliva Date: Thu, 15 Feb 2001 12:54:18 +0000 Subject: [PATCH] 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 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/friend.c | 12 +++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 7f14cfbc92d..e8119eac4a7 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2001-02-15 Alexandre Oliva + + * 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 * typeck.c (build_unary_op): Clarify error message. diff --git a/gcc/cp/friend.c b/gcc/cp/friend.c index b817c7c3917..170f63bea1d 100644 --- a/gcc/cp/friend.c +++ b/gcc/cp/friend.c @@ -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); -- 2.30.2