Commit e5966228 by Jason Merrill

* class.c (instantiate_type): Don't abort on TREE_NONLOCAL_FLAG.

From-SVN: r19831
parent 0d7e147b
Mon May 18 03:00:57 1998 Jason Merrill <jason@yorick.cygnus.com>
* class.c (instantiate_type): Don't abort on TREE_NONLOCAL_FLAG.
Mon May 18 01:43:01 1998 Martin v. Loewis <loewis@informatik.hu-berlin.de> Mon May 18 01:43:01 1998 Martin v. Loewis <loewis@informatik.hu-berlin.de>
* decl.c (lookup_name_real): Don't look at IDENTIFIER_LOCAL_VALUE
for a type unless it is one.
* class.c (finish_struct_1): Use OVL_CURRENT in error message. * class.c (finish_struct_1): Use OVL_CURRENT in error message.
Mon May 18 01:24:08 1998 Jeffrey A Law (law@cygnus.com) Mon May 18 01:24:08 1998 Jeffrey A Law (law@cygnus.com)
......
...@@ -5229,16 +5229,18 @@ instantiate_type (lhstype, rhs, complain) ...@@ -5229,16 +5229,18 @@ instantiate_type (lhstype, rhs, complain)
tree elem, baselink, name = NULL_TREE; tree elem, baselink, name = NULL_TREE;
if (TREE_PURPOSE (rhs) == error_mark_node) if (TREE_PURPOSE (rhs) == error_mark_node)
{ {
/* Make sure we don't drop the non-local flag, as the old code /* Make sure we don't drop the non-local flag, as the old code
would rely on it. */ would rely on it. */
int nl = TREE_NONLOCAL_FLAG (rhs); int nl = TREE_NONLOCAL_FLAG (rhs);
/* We don't need the type of this node. */ /* We don't need the type of this node. */
rhs = TREE_VALUE (rhs); rhs = TREE_VALUE (rhs);
my_friendly_assert (TREE_NONLOCAL_FLAG (rhs) == nl, 980331); my_friendly_assert (TREE_NONLOCAL_FLAG (rhs) == nl, 980331);
} }
/* Now we should have a baselink. */ /* Now we should have a baselink. */
my_friendly_assert (TREE_CODE (TREE_PURPOSE (rhs)) == TREE_VEC, 980331); my_friendly_assert (TREE_CODE (TREE_PURPOSE (rhs)) == TREE_VEC,
980331);
/* First look for an exact match. Search member functions. /* First look for an exact match. Search member functions.
May have to undo what `default_conversion' might do to May have to undo what `default_conversion' might do to
lhstype. */ lhstype. */
...@@ -5247,20 +5249,10 @@ instantiate_type (lhstype, rhs, complain) ...@@ -5247,20 +5249,10 @@ instantiate_type (lhstype, rhs, complain)
if (lhstype == error_mark_node) if (lhstype == error_mark_node)
return lhstype; return lhstype;
if (TREE_NONLOCAL_FLAG (rhs)) my_friendly_assert (TREE_CHAIN (rhs) == NULL_TREE, 181);
{ my_friendly_assert (TREE_CODE (TREE_VALUE (rhs)) == FUNCTION_DECL
my_friendly_abort (980401); || TREE_CODE (TREE_VALUE (rhs)) == OVERLOAD,
/* Got to get it as a baselink. */ 182);
rhs = lookup_fnfields (TYPE_BINFO (current_class_type),
DECL_NAME (OVL_FUNCTION (rhs)), 0);
}
else
{
my_friendly_assert (TREE_CHAIN (rhs) == NULL_TREE, 181);
my_friendly_assert (TREE_CODE (TREE_VALUE (rhs)) == FUNCTION_DECL
|| TREE_CODE (TREE_VALUE (rhs)) == OVERLOAD,
182);
}
for (baselink = rhs; baselink; for (baselink = rhs; baselink;
baselink = next_baselink (baselink)) baselink = next_baselink (baselink))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment