Tom Tromey writes:
> >>>>> "Sebastian" == Sebastian Mancke <[EMAIL PROTECTED]> writes:
>
> Sebastian> Now, the method getSimpleName() is merged with the one of
> Sebastian> glibgcj. (Not changing behaviour, but avoiding recursion)
>
> I noticed it is still different.
> My recollection (I haven't looked at this in a while) is that the gcj
> implementation is correct. And, it relies only on the published Class
> API. So, why not just use it directly in Classpath's Class?
>
> Sebastian> + String fullName = getName(klass);
> Sebastian> + int pos = fullName.lastIndexOf("$");
>
> I think relying on the name mangling is not valid.
> That is why gcj's implementation uses isAnonymousClass and the like.
Yes, but gcj's implementation was also broken. This is the current gcj
code; please let me know if you think it's still wrong.
Andrew.
public String getSimpleName()
{
if (isAnonymousClass())
return "";
if (isArray())
{
return getComponentType().getSimpleName() + "[]";
}
String fullName = getName();
int pos = fullName.lastIndexOf("$");
if (pos == -1)
pos = 0;
else
{
++pos;
while (Character.isDigit(fullName.charAt(pos)))
++pos;
fullName = fullName.substring(pos);
}
int packagePos = fullName.lastIndexOf(".");
if (packagePos == -1)
return fullName;
else
return fullName.substring(packagePos + 1);
}