Article View: gnu.g++.bug
Article #1749Hi Michael...we beat jon becher to give you some feedback...
From: Michael Tiemann
Date: Fri, 17 Mar 1989 04:59
Date: Fri, 17 Mar 1989 04:59
116 lines
4311 bytes
4311 bytes
See if this helps:
yahi% diff -c2 cplus-class.c~ cplus-class.c
*** cplus-class.c~ Tue Mar 14 23:04:58 1989
--- cplus-class.c Thu Mar 16 20:56:28 1989
***************
*** 1032,1046 ****
if (testp)
{
for (x = TREE_VALUE (testp), basep = x ? DECL_BASELINK (x) : 0; x;)
{
! if (DECL_NAME (fn_fields) == DECL_NAME (x))
{
char buf[OVERLOAD_MAX_LEN];
/* We complain about multiple destructors on sight,
! so we do not repeat the warning here. */
! if (! DESTRUCTOR_NAME_P (DECL_NAME (fn_fields)))
{
! print_fndecl_with_types (buf, t, fn_fields, 1);
! yylineerror (DECL_SOURCE_LINE (fn_fields),
"ambiguous method `%s' in structure", buf);
}
--- 1032,1048 ----
if (testp)
{
+ tree fndecl = TREE_CODE (fn_fields) == FRIEND_DECL ? TREE_TYPE (fn_fields) : fn_fields;
for (x = TREE_VALUE (testp), basep = x ? DECL_BASELINK (x) : 0; x;)
{
! if (DECL_NAME (fndecl) == DECL_NAME (x))
{
char buf[OVERLOAD_MAX_LEN];
/* We complain about multiple destructors on sight,
! so we do not repeat the warning here. Friend-friend
! ambiguities are warned about outside this loop. */
! if (! DESTRUCTOR_NAME_P (DECL_NAME (fndecl)))
{
! print_fndecl_with_types (buf, t, fndecl, 1);
! yylineerror (DECL_SOURCE_LINE (fndecl),
"ambiguous method `%s' in structure", buf);
}
***************
*** 1054,1062 ****
for (x = TREE_TYPE (testp); x;)
{
! if (DECL_NAME (TREE_TYPE (fn_fields)) == DECL_NAME (TREE_TYPE (x)))
{
char buf[OVERLOAD_MAX_LEN];
! print_fndecl_with_types (buf, t, TREE_TYPE (fn_fields), 1);
! yylineerror (DECL_SOURCE_LINE (fn_fields),
"friend `%s' is ambiguous in structure", buf);
break;
--- 1056,1064 ----
for (x = TREE_TYPE (testp); x;)
{
! if (DECL_NAME (fndecl) == DECL_NAME (TREE_TYPE (x)))
{
char buf[OVERLOAD_MAX_LEN];
! print_fndecl_with_types (buf, t, fndecl, 1);
! yylineerror (DECL_SOURCE_LINE (fndecl),
"friend `%s' is ambiguous in structure", buf);
break;
***************
*** 2914,2918 ****
else
{
! function = field;
}
if (protect == 0 || visibility == visibility_public)
--- 2916,2920 ----
else
{
! function = TREE_CODE (field) == FRIEND_DECL ? TREE_TYPE (field) : field;
}
if (protect == 0 || visibility == visibility_public)
***************
*** 3088,3092 ****
{
n_inner_fields_searched++;
! function = field;
cp->harshness
= (unsigned short *)alloca ((len+1) * sizeof (short));
--- 3090,3094 ----
{
n_inner_fields_searched++;
! function = TREE_CODE (field) == FRIEND_DECL ? TREE_TYPE (field) : field;
cp->harshness
= (unsigned short *)alloca ((len+1) * sizeof (short));
***************
*** 3132,3136 ****
/* Initialize these fields for error reporting. */
cp->u.field = field;
! cp->function = field;
field = TREE_CHAIN (field);
continue;
--- 3134,3138 ----
/* Initialize these fields for error reporting. */
cp->u.field = field;
! cp->function = TREE_CODE (field) == FRIEND_DECL ? TREE_TYPE (field) : field;
field = TREE_CHAIN (field);
continue;
***************
*** 3283,3287 ****
found:
! function = field;
if (visibility == visibility_private)
--- 3285,3289 ----
found:
! function = TREE_CODE (field) == FRIEND_DECL ? TREE_TYPE (field) : field;
if (visibility == visibility_private)
yahi%
Michael
Technical Details
Message-ID:
<8903170459.AA18974@yahi>Path:
arc1-ca.pugleaf.net!utzoo!telly!attcan!uunet!tut.cis.ohio-state.edu!YAHI.STANFORD.EDU!mdtReferences:
<8903162114.AA02103@tacky.local>Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!telly!attcan!uunet!tut.cis.ohio-state.edu!YAHI.STANFORD.EDU!mdt From: mdt@YAHI.STANFORD.EDU (Michael Tiemann) Newsgroups: gnu.g++.bug Subject: Hi Michael...we beat jon becher to give you some feedback... Message-ID: <8903170459.AA18974@yahi> Date: 17 Mar 89 04:59:46 GMT References: <8903162114.AA02103@tacky.local> Sender: daemon@tut.cis.ohio-state.edu Reply-To: tiemann@lurch.stanford.edu Distribution: gnu Organization: GNUs Not Usenet Lines: 116