From 112a70c24da0534355071de477c0b69e17e27eed Mon Sep 17 00:00:00 2001 From: Benjamin Kosnik Date: Thu, 11 Jun 1998 20:11:55 +0000 Subject: [PATCH] friend.c (do_friend): Add support for nested classes using member functions of the enclosing class as... 8 * friend.c (do_friend): Add support for nested classes using member functions of the enclosing class as friends. egcs bug From-SVN: r20433 --- gcc/cp/friend.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/gcc/cp/friend.c b/gcc/cp/friend.c index c6f68bd07f0..e36d3066836 100644 --- a/gcc/cp/friend.c +++ b/gcc/cp/friend.c @@ -344,13 +344,16 @@ do_friend (ctype, declarator, decl, parmdecls, flags, quals, funcdef_flag) if (is_friend_template) decl = DECL_TI_TEMPLATE (push_template_decl (decl)); - if (TYPE_SIZE (ctype) != 0 - && template_class_depth (ctype) == 0) + if (TYPE_SIZE (ctype) != 0 && template_class_depth (ctype) == 0) decl = check_classfn (ctype, decl); + /* TYPE_BEING_DEFINED is a hack for nested classes having + member functions of the enclosing class as friends. Will + go away as parsing of classes gets rewritten. */ if (TREE_TYPE (decl) != error_mark_node) { - if (TYPE_SIZE (ctype) || template_class_depth (ctype) > 0) + if (TYPE_BEING_DEFINED (ctype) || + TYPE_SIZE (ctype) || template_class_depth (ctype) > 0) add_friend (current_class_type, decl); else cp_error ("member `%D' declared as friend before type `%T' defined", -- 2.30.2