jjc@UUNET.UU.NET (James Clark) (08/18/89)
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