aboutsummaryrefslogtreecommitdiff
path: root/libjava/java
diff options
context:
space:
mode:
authorAndrew Haley <aph@redhat.com>2008-05-28 15:12:47 +0000
committerAndrew Haley <aph@gcc.gnu.org>2008-05-28 15:12:47 +0000
commit71292a05408898d2e37ef5442083d1819ead741a (patch)
tree81a7bdb847459031cc59a1945975e9fec3ba2c40 /libjava/java
parent38154e4f0f18baf7e80c1b78e25ac305c922a268 (diff)
downloadgcc-71292a05408898d2e37ef5442083d1819ead741a.zip
gcc-71292a05408898d2e37ef5442083d1819ead741a.tar.gz
gcc-71292a05408898d2e37ef5442083d1819ead741a.tar.bz2
re PR libgcj/35020 (Class.getSimpleName() differs from Sun Java)
2008-05-28 Andrew Haley <aph@redhat.com> * java/lang/Class.java (getSimpleName): Use getEnclosingClass(). * testsuite/libjava.lang/PR35020.java: New cases. * testsuite/libjava.lang/PR35020.out: New cases. From-SVN: r136103
Diffstat (limited to 'libjava/java')
-rw-r--r--libjava/java/lang/Class.java34
1 files changed, 16 insertions, 18 deletions
diff --git a/libjava/java/lang/Class.java b/libjava/java/lang/Class.java
index 868e370..a4e8ee5 100644
--- a/libjava/java/lang/Class.java
+++ b/libjava/java/lang/Class.java
@@ -1078,26 +1078,24 @@ public final class Class<T>
if (isAnonymousClass())
return "";
if (isArray())
- {
- return getComponentType().getSimpleName() + "[]";
- }
+ 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);
- }
+ Class enclosingClass = getEnclosingClass();
+ if (enclosingClass == null)
+ // It's a top level class.
+ return fullName.substring(fullName.lastIndexOf(".") + 1);
- int packagePos = fullName.lastIndexOf(".");
- if (packagePos == -1)
- return fullName;
- else
- return fullName.substring(packagePos + 1);
+ fullName = fullName.substring(enclosingClass.getName().length());
+
+ // We've carved off the enclosing class name; now we must have '$'
+ // followed optionally by digits, followed by the class name.
+ int pos = 1;
+ while (Character.isDigit(fullName.charAt(pos)))
+ ++pos;
+ fullName = fullName.substring(pos);
+
+ return fullName;
}
/**