diff options
author | aph <aph@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-05-28 15:12:47 +0000 |
---|---|---|
committer | aph <aph@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-05-28 15:12:47 +0000 |
commit | bfa499856489c285acca24851eaca3f00103ee17 (patch) | |
tree | 81a7bdb847459031cc59a1945975e9fec3ba2c40 /libjava | |
parent | 4277273aed2dfbf3b379c80cf17327303a9342e0 (diff) | |
download | ppe42-gcc-bfa499856489c285acca24851eaca3f00103ee17.tar.gz ppe42-gcc-bfa499856489c285acca24851eaca3f00103ee17.zip |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@136103 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava')
-rw-r--r-- | libjava/ChangeLog | 6 | ||||
-rw-r--r-- | libjava/classpath/lib/java/lang/Class.class | bin | 15551 -> 15545 bytes | |||
-rw-r--r-- | libjava/java/lang/Class.java | 34 | ||||
-rw-r--r-- | libjava/testsuite/libjava.lang/PR35020.jar | bin | 1856 -> 3559 bytes | |||
-rw-r--r-- | libjava/testsuite/libjava.lang/PR35020.java | 45 | ||||
-rw-r--r-- | libjava/testsuite/libjava.lang/PR35020.out | 3 |
6 files changed, 52 insertions, 36 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 37f12e2c892..65abe270155 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,9 @@ +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. + 2008-05-22 Andrew Haley <aph@redhat.com> PR libgcj/35020 diff --git a/libjava/classpath/lib/java/lang/Class.class b/libjava/classpath/lib/java/lang/Class.class Binary files differindex ce854558e54..2e4126b71d9 100644 --- a/libjava/classpath/lib/java/lang/Class.class +++ b/libjava/classpath/lib/java/lang/Class.class diff --git a/libjava/java/lang/Class.java b/libjava/java/lang/Class.java index 868e370b819..a4e8ee5929e 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; } /** diff --git a/libjava/testsuite/libjava.lang/PR35020.jar b/libjava/testsuite/libjava.lang/PR35020.jar Binary files differindex bedaed7ecdb..09c4ef4818d 100644 --- a/libjava/testsuite/libjava.lang/PR35020.jar +++ b/libjava/testsuite/libjava.lang/PR35020.jar diff --git a/libjava/testsuite/libjava.lang/PR35020.java b/libjava/testsuite/libjava.lang/PR35020.java index 1850da79683..ff5f6bf06f2 100644 --- a/libjava/testsuite/libjava.lang/PR35020.java +++ b/libjava/testsuite/libjava.lang/PR35020.java @@ -1,21 +1,30 @@ +class outer$inner +{ +}; + public class PR35020 { - class inner - { - } - public static void main(String[] args) - { - System.out.println(inner.class.getSimpleName()); - System.out.println(PR35020.class.getSimpleName()); - System.out.println(Class.class.getSimpleName()); - System.out.println((new int[7]).getClass().getSimpleName()); - System.out.println((new Object[1][1][1][1][1][1][1][1]).getClass().getSimpleName()); - System.out.println((new java.security.PrivilegedAction() - { - public Object run() { - return null; - } - }).getClass().getSimpleName()); - } + class PR35020$Inner + { + }; + class inner + { + } + public static void main(String[] args) + { + System.out.println(inner.class.getSimpleName()); + System.out.println(PR35020.class.getSimpleName()); + System.out.println(Class.class.getSimpleName()); + System.out.println((new int[7]).getClass().getSimpleName()); + System.out.println((new Object[1][1][1][1][1][1][1][1]).getClass().getSimpleName()); + System.out.println((new java.security.PrivilegedAction() + { + public Object run() { + return null; + } + }).getClass().getSimpleName()); + System.out.println(PR35020$Inner.class.getSimpleName()); + System.out.println(outer$inner.class.getSimpleName()); + System.out.println(outer$inner.inner.class.getSimpleName()); + } } - diff --git a/libjava/testsuite/libjava.lang/PR35020.out b/libjava/testsuite/libjava.lang/PR35020.out index 73eb0c917fc..9bf85e209d5 100644 --- a/libjava/testsuite/libjava.lang/PR35020.out +++ b/libjava/testsuite/libjava.lang/PR35020.out @@ -4,3 +4,6 @@ Class int[] Object[][][][][][][][] +PR35020$Inner +outer$inner +inner |