diff options
author | Andrew John Hughes <gnu_andrew@member.fsf.org> | 2010-12-13 21:30:31 +0000 |
---|---|---|
committer | Andrew John Hughes <gnu_andrew@member.fsf.org> | 2010-12-13 21:30:31 +0000 |
commit | 5d5a64d47af13bdbfb5f3ed69073f08a8020e492 (patch) | |
tree | 92a64c084aa77f64866cc5cd998c2328e0cb7c80 | |
parent | 48e58efc8a95710ce87742f30d02a47bc494badc (diff) | |
download | classpath-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-- | ChangeLog | 6 | ||||
-rw-r--r-- | vm/reference/java/lang/VMClass.java | 29 |
2 files changed, 21 insertions, 14 deletions
@@ -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; } /** |