From 71292a05408898d2e37ef5442083d1819ead741a Mon Sep 17 00:00:00 2001 From: Andrew Haley Date: Wed, 28 May 2008 15:12:47 +0000 Subject: [PATCH] re PR libgcj/35020 (Class.getSimpleName() differs from Sun Java) 2008-05-28 Andrew Haley * java/lang/Class.java (getSimpleName): Use getEnclosingClass(). * testsuite/libjava.lang/PR35020.java: New cases. * testsuite/libjava.lang/PR35020.out: New cases. From-SVN: r136103 --- libjava/ChangeLog | 6 +++ libjava/classpath/lib/java/lang/Class.class | Bin 15551 -> 15545 bytes libjava/java/lang/Class.java | 36 ++++++++-------- libjava/testsuite/libjava.lang/PR35020.jar | Bin 1856 -> 3559 bytes libjava/testsuite/libjava.lang/PR35020.java | 45 ++++++++++++-------- libjava/testsuite/libjava.lang/PR35020.out | 3 ++ 6 files changed, 53 insertions(+), 37 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 + + * 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 PR libgcj/35020 diff --git a/libjava/classpath/lib/java/lang/Class.class b/libjava/classpath/lib/java/lang/Class.class index ce854558e542fb0e5114f54b01889a3be01df88d..2e4126b71d908a24a6fe3076178b7121ec078441 100644 GIT binary patch delta 628 zcmY*VNla5w6g`*TO9#KjQmV8L(Kv)s#8`pf`b&`%1dPba5K$9}skN~!B*g_LMnjYh zarHEsYBa9gl92r9ihxu=a9%n^Hk!Cml(oLZm76=Ad(IuEN1u#Nz7Iw{AbM)h9Qp{p zOnRiVa5gto%oZ}K++eZjqGtqZ^x!Hj7?h<&LO?yF8h4L}mgt3(mX#5zZGK6w2+nM= zBb&*N5V$TC9w4~RUCiZ<4d&AXZ~8x3f@64SYB*E~xhvoR0~l6co1$0hZJOVccZ{Z;MXGc|Mo%+0y>K#Nw3iW zf{8f2(X|TnBS>#CrH5|R9frpA9lC!L^iye0tu|i@-quUpfx#vC_$~r`4lN&JPmYPU3{RP25ijV*R delta 671 zcmY*UTS(J!6#mY3PP@3Y-84<3$ilT!TIO_fTK&DG+2yS;lm3jkmeYyTz#t}4K?L>i ze~3nfKKUvLqEA7ZrZ&60CREg0(L-syRln$|mvhc{IUncDjXW8ddRy$V(ma96?HHwJ z4oc7>!D~#AC(~x9=d@y>WrF*PepRnZ>izL5?Xo_oM~7mA4qBxb1WO{_l!zyW2wb80 zI<2&((kcnop5bKjwB8pZmW9RR8p%VQvijtGv-18Uj!Cu zM1dTITaKw54OP;NptK+?ttz7pF=4HrzB44_VyWte2j9=j~xd(^b JH*VHf{{bmfmVW>M 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 if (isAnonymousClass()) return ""; if (isArray()) - { - 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); - } + return getComponentType().getSimpleName() + "[]"; - int packagePos = fullName.lastIndexOf("."); - if (packagePos == -1) - return fullName; - else - return fullName.substring(packagePos + 1); + String fullName = getName(); + Class enclosingClass = getEnclosingClass(); + 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; } /** diff --git a/libjava/testsuite/libjava.lang/PR35020.jar b/libjava/testsuite/libjava.lang/PR35020.jar index bedaed7ecdba7b3a38f6411f9e1d1c7d89b0873d..09c4ef4818d4230f674fcc2c8a2fdfbd9fe6ac45 100644 GIT binary patch literal 3559 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 QoPiYxi-F;?ofX6b0L_5QDgXcg 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