diff options
author | Andrew Haley <aph@redhat.com> | 2008-05-22 16:20:55 +0000 |
---|---|---|
committer | Andrew Haley <aph@gcc.gnu.org> | 2008-05-22 16:20:55 +0000 |
commit | 9f8e4e845ba0240f599fd541c5cee10cf8654cc5 (patch) | |
tree | 74bb902e22e1765a9f3eb9e9c8e239af478de42b /libjava/java | |
parent | 4799e6aa58eab27112b27c9ca328f57430f8d1ab (diff) | |
download | gcc-9f8e4e845ba0240f599fd541c5cee10cf8654cc5.zip gcc-9f8e4e845ba0240f599fd541c5cee10cf8654cc5.tar.gz gcc-9f8e4e845ba0240f599fd541c5cee10cf8654cc5.tar.bz2 |
re PR libgcj/35020 (Class.getSimpleName() differs from Sun Java)
2008-05-22 Andrew Haley <aph@redhat.com>
PR libgcj/35020
* java/lang/Class.java (getSimpleName): Import from GNU Classpath.
From-SVN: r135771
Diffstat (limited to 'libjava/java')
-rw-r--r-- | libjava/java/lang/Class.java | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/libjava/java/lang/Class.java b/libjava/java/lang/Class.java index 691f983..d59e83e 100644 --- a/libjava/java/lang/Class.java +++ b/libjava/java/lang/Class.java @@ -1075,22 +1075,27 @@ public final class Class<T> */ public String getSimpleName() { - StringBuffer sb = new StringBuffer(); - Class klass = this; - int arrayCount = 0; - while (klass.isArray()) + if (isAnonymousClass()) + return ""; + if (isArray()) { - klass = klass.getComponentType(); - ++arrayCount; + return getComponentType().getSimpleName() + "[]"; } - if (! klass.isAnonymousClass()) + String fullName = getName(); + int pos = fullName.lastIndexOf("$"); + if (pos == -1) + pos = 0; + else { - String fullName = klass.getName(); - sb.append(fullName, fullName.lastIndexOf(".") + 1, fullName.length()); + ++pos; + while (Character.isDigit(fullName.charAt(pos))) + ++pos; } - while (arrayCount-- > 0) - sb.append("[]"); - return sb.toString(); + int packagePos = fullName.lastIndexOf(".", pos); + if (packagePos == -1) + return fullName.substring(pos); + else + return fullName.substring(packagePos + 1); } /** |