2008-05-22 Andrew Haley <aph@redhat.com>
authoraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 22 May 2008 16:20:55 +0000 (16:20 +0000)
committeraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 22 May 2008 16:20:55 +0000 (16:20 +0000)
        PR libgcj/35020
        * java/lang/Class.java (getSimpleName): Import from GNU Classpath.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@135771 138bc75d-0d04-0410-961f-82ee72b054a4

libjava/ChangeLog
libjava/classpath/lib/java/lang/Class$1.class
libjava/classpath/lib/java/lang/Class.class
libjava/java/lang/Class.java

index e8cd46e..52061d2 100644 (file)
@@ -1,3 +1,8 @@
+2008-05-22  Andrew Haley  <aph@redhat.com>
+
+       PR libgcj/35020
+       * java/lang/Class.java (getSimpleName): Import from GNU Classpath.
+
 2008-05-20  David Daney  <ddaney@avtrex.com>
 
        PR libgcj/36252
index 51ef884..09e3e86 100644 (file)
Binary files a/libjava/classpath/lib/java/lang/Class$1.class and b/libjava/classpath/lib/java/lang/Class$1.class differ
index ffe072f..bdcfcfe 100644 (file)
Binary files a/libjava/classpath/lib/java/lang/Class.class and b/libjava/classpath/lib/java/lang/Class.class differ
index 691f983..d59e83e 100644 (file)
@@ -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);
   }
 
   /**