C++ changes for 5.0, finally committed.

This commit is contained in:
Daniel Berlin 2000-04-04 04:53:50 +00:00
parent eb90a51f9d
commit 070ad9f02e
6 changed files with 341 additions and 209 deletions

View file

@ -1484,11 +1484,11 @@ check_stub_method (type, method_id, signature_id)
argtypetext = p;
while (*p)
{
if (*p == '(')
if (*p == '(' || *p == '<')
{
depth += 1;
}
else if (*p == ')')
else if (*p == ')' || *p == '>')
{
depth -= 1;
}
@ -1527,11 +1527,11 @@ check_stub_method (type, method_id, signature_id)
argtypetext = p + 1;
}
if (*p == '(')
if (*p == '(' || *p == '<')
{
depth += 1;
}
else if (*p == ')')
else if (*p == ')' || *p == '>')
{
depth -= 1;
}
@ -2199,6 +2199,16 @@ rank_one_type (parm, arg)
if (TYPE_CODE (arg) == TYPE_CODE_TYPEDEF)
arg = check_typedef (arg);
/*
Well, damnit, if the names are exactly the same,
i'll say they are exactly the same. This happens when we generate
method stubs. The types won't point to the same address, but they
really are the same.
*/
if (TYPE_NAME (parm) == TYPE_NAME (arg))
return 0;
/* Check if identical after resolving typedefs */
if (parm == arg)
return 0;