Article View: gnu.g++.bug
Article #359friend bug and fix
From: James Clark
Date: Fri, 18 Aug 1989 12:19
Date: Fri, 18 Aug 1989 12:19
55 lines
1718 bytes
1718 bytes
g++ 1.35.1- incorrectly accepts this:
class A {
int n;
public:
A();
friend int foo(double);
friend int foo(char);
};
int foo(A a)
{
return a.n;
}
I think the fix for this is:
*** cplus-init.c.distrib Fri Aug 18 13:01:19 1989
--- cplus-init.c Fri Aug 18 13:02:00 1989
***************
*** 1703,1717 ****
add_friend (type, decl)
tree type, decl;
{
tree typedecl = TYPE_NAME (type);
tree list = DECL_FRIENDLIST (typedecl);
tree name = DECL_ORIGINAL_NAME (decl);
tree ctype = TREE_CODE (TREE_TYPE (decl)) == METHOD_TYPE
! ? TYPE_METHOD_BASETYPE (TREE_TYPE (decl)) : NULL_TREE;
while (list)
{
if (name == TREE_PURPOSE (list))
{
tree friends = TREE_VALUE (list);
while (friends)
--- 1703,1717 ----
add_friend (type, decl)
tree type, decl;
{
tree typedecl = TYPE_NAME (type);
tree list = DECL_FRIENDLIST (typedecl);
tree name = DECL_ORIGINAL_NAME (decl);
tree ctype = TREE_CODE (TREE_TYPE (decl)) == METHOD_TYPE
! ? TYPE_METHOD_BASETYPE (TREE_TYPE (decl)) : error_mark_node;
while (list)
{
if (name == TREE_PURPOSE (list))
{
tree friends = TREE_VALUE (list);
while (friends)
James Clark
jjc@jclark.uucp
Technical Details
Message-ID:
<8908181219.AA27643@jclark.uucp>Path:
arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!rutgers!gatech!tut.cis.ohio-state.edu!UUNET.UU.NET!jclark!jjcShow Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!rutgers!gatech!tut.cis.ohio-state.edu!UUNET.UU.NET!jclark!jjc From: jclark!jjc@UUNET.UU.NET (James Clark) Newsgroups: gnu.g++.bug Subject: friend bug and fix Message-ID: <8908181219.AA27643@jclark.uucp> Date: 18 Aug 89 12:19:33 GMT Sender: daemon@tut.cis.ohio-state.edu Distribution: gnu Organization: GNUs Not Usenet Lines: 55