summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew John Hughes <gnu_andrew@member.fsf.org>2010-12-13 21:30:31 +0000
committerAndrew John Hughes <gnu_andrew@member.fsf.org>2010-12-13 21:30:31 +0000
commit5d5a64d47af13bdbfb5f3ed69073f08a8020e492 (patch)
tree92a64c084aa77f64866cc5cd998c2328e0cb7c80
parent48e58efc8a95710ce87742f30d02a47bc494badc (diff)
downloadclasspath-5d5a64d47af13bdbfb5f3ed69073f08a8020e492.tar.gz
Update java.lang.Class#getSimpleName() implementation from gcj's version.
2006-07-21 Tom Tromey <tromey@redhat.com> * vm/reference/java/lang/VMClass.java: (getSimpleName()): Use implementation from gcj.
-rw-r--r--ChangeLog6
-rw-r--r--vm/reference/java/lang/VMClass.java29
2 files changed, 21 insertions, 14 deletions
diff --git a/ChangeLog b/ChangeLog
index 8967f7c69..18c60b24f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2006-07-21 Tom Tromey <tromey@redhat.com>
+
+ * vm/reference/java/lang/VMClass.java:
+ (getSimpleName()): Use implementation from
+ gcj.
+
2010-12-02 Andrew John Hughes <ahughes@redhat.com>
PR classpath/46775
diff --git a/vm/reference/java/lang/VMClass.java b/vm/reference/java/lang/VMClass.java
index a0091c073..d80eecdfd 100644
--- a/vm/reference/java/lang/VMClass.java
+++ b/vm/reference/java/lang/VMClass.java
@@ -303,20 +303,21 @@ final class VMClass
return getComponentType(klass).getSimpleName() + "[]";
}
String fullName = getName(klass);
- int pos = fullName.lastIndexOf("$");
- if (pos == -1)
- pos = 0;
- else
- {
- ++pos;
- while (Character.isDigit(fullName.charAt(pos)))
- ++pos;
- }
- int packagePos = fullName.lastIndexOf(".", pos);
- if (packagePos == -1)
- return fullName.substring(pos);
- else
- return fullName.substring(packagePos + 1);
+ Class enclosingClass = getEnclosingClass(klass);
+ if (enclosingClass == null)
+ // It's a top level class.
+ return fullName.substring(fullName.lastIndexOf(".") + 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;
}
/**