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 | 34 +++++++-------- 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, 52 insertions(+), 36 deletions(-) diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 37f12e2c8927..65abe270155d 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 zc-mD^OH5Ny5IsX@=*MTV6qMFaG=4%UVywVxeNZHTP$RN3ji`yl)Y@1INpXRR(KO12 zxVjomH5ylLNl0FFMZ{u3@W1pI*=XWMQPz4BR&M6Z%$aj$GBe{(#-~06A|4PuGpK|C zf-jvK>&czXj^s1BbXRsLpLfx70yTMXmF5k~&;p@WJ)|0U!b6Mn(n(9o2-dZ{qSpjx zCf}V&XT}Iz-xV4pxXxY7W{(XGrwHEEf3^h2=*aYFFc)-JzySs@s=hTxt~A&*+uvA* zFC6yMoK0muV-rt>8*SJ&zU%xb#~-2cnuEeyZTxslFN%Lxb*hQ*l(uo8TE{r50B(ho zO|0W6syT+eY$3vJFu5HTcOb!?ILG~C`l(b>D=n7-xAhTsU~myWzKdGEhalg_E`Fe{ zw-$Fi)$A-hT*5Y5dI7|e}R|3qK=o4GWUuta}OdXbVoq$Qz(*6{ih5E+D9 ZPQojv)JHOryv`TPZEubaPt$eMz&ITVW>sk-3)BiJO5zC{jTL zb@(5mQK2WV13~f>q-koimuo^r-HHySb*p~ismt^7{eGVh&+N$4k?cFK+e&i;Dz{^d zo;xT`3j~ibN$$}$JH4P~3oQ{`SM;lTbwVGARcn{^A-yLZ9dghLy(C!Tsit@=o+faG zR@rH#RYj{JSbK*PiPL(2lwclArU>>yy{Au)MbG|QoUv%Sd7vkeOvMLcT0&1Lt@uAJ zIeojNtHf3SGZ?_I@vX)`>T}Vv8JdrjnkHa1N2XAA!$ecqqN=ZS249}gV&>0=8i_kp zHm9-;WhyJatgnnODLJcHW)!O00w=%$SU8A0u0t zoMNpL=eZf(d;-1PhCXgbKX<^TVEZ?pgc}~!{m|$Y4uB9sm|kNVCiJ3!-l)lpB9(9` zZ!=#E5Yb!X>yc~T2kMy&9Q+VYegqFcMhQ=#oF|RZKxX%xa_3>^1?=QS?BXTt0!EJ52mT-LGQ@Z(tw)RCnt*%)h3`YWGl` z1y-@5RBWhF{gBuZkUZ2$KF-KCoD(Pdq!1~!Ul#|)m3K=#xFbczTHPAujM 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 index bedaed7ecdba7b3a38f6411f9e1d1c7d89b0873d..09c4ef4818d4230f674fcc2c8a2fdfbd9fe6ac45 100644 GIT binary patch literal 3559 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 Kf6R=3^X^Y!J}ZR) literal 1856 zc-jl_W@h1H0D)r(+btN704IYegRg6dqpqi)n|^2rCj+zcQZo+_4y|Be_`>*wF#xDn z1gMe&thZ8CQ`G>-GXi1}WWBzQex7cw!6ACSZdi@^?0e?4kGHPgMP6@Rt#fD2Zw@lJ zV*H>;&&yZG)AwTOsx3hp%^okNJ)0`Fd|5#uBLk|nvXitwy<%iw2x4Yn;00P65M*p> zU}T_|oRe5wjMcu}K;L|!KoQ%1ro%nK-2oS_`RA-{h+5FA-7{NF%~x%!p!20GdU9V_ z?g~o9G?1b!N*gJ8t zgAYdEES~CcQ1aW-+fy6+9;wXayZ?G(!%LOdw|pvteltCNwb3~KHYf92{##qubxLbU zX~ZyI{b|89H9c8Wl}W0vbG=FKwZq30t)0JVzud}uMe{n4M__BHiRVgKcBZ3<}j%t|%rVAD$oJMfC< zxMTd@OBeUw@O)hsa-zU~kyhMV3k6~0cCHg*{F$$n%NHtCsv&!X*<^-qYO623F*LEMwBox9D7KOZa4ZaNz|$M1>ys-35Q z=C6>CeehDplzr>bQir|;K2v6{ypSz;&92c><3Yza*{Dam>2U%Y`SDe=R7lQevCeHej z!lKA}Fl^F8Z~w<37&jg+|Z4?|s@aYn$Bh;)iW&pLpCoO$73mr2e=im9cZmycu05w@Q1( z8$QurI_aUP^R|mJh7z^)N;)ZlTN0C+7ryaOm0NT);zhdMHx}osA7kJ3?wGc5K3i{r z8gtvC&2p>Ur&ulG+v;}tr@gf5+J*9&;df3+At3F$^FNU3QSuZA5VDlqCryVR_`9B$kc2)(Hk%PW<`w*%e*V6*ntrN%+CzMNRg45mzP?ECqhC4e7z4lh|HP3Bvv?B z`t|p-&itVVkFB5lXsH5+qwCV|zA+`jr6zQ z&p&e?5G-SnaeDvm-xD3XzV=-jA*v4q7tO4h`Zz}H{Nvjt%Qm%L$c-zp?cuDu^y_@& zo(rvcdYlhm_}`r^w8!)3k{W?&&LtOkA1o4gN@#u1*Ryc`3#Yp}&sMIIOP!^CNI}zh zrhn>E-}_zjBD3!NSNinm!NQo3nY%6>6Ww;%dGf5=*~zn>Y+4tpyTMgpZR3TF{0Y++ z@BG6m;;J@3v4&;Zk8d;Q9(u^s^tZXZjlU)Tj^zvEvbEP;k4QwxC5SRx$8X-z$GckS zy4tqJ_yBK4CUIt51vf90CBX335kw;u diff --git a/libjava/testsuite/libjava.lang/PR35020.java b/libjava/testsuite/libjava.lang/PR35020.java index 1850da79683c..ff5f6bf06f27 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 73eb0c917fc6..9bf85e209d5b 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 -- 2.47.3