Community
Participate
Working Groups
Bug 108856 covers anonymous class, but the same bug exists for named classes. Test file: public class ClassNameTest { public static void main(String[] s) { new Object(){{ System.out.println(this.getClass()); System.out.println(this.getClass().getSimpleName()); new Object(){{ System.out.println(this.getClass()); System.out.println(this.getClass().getSimpleName()); class X {{ System.out.println(this.getClass()); System.out.println(this.getClass().getSimpleName()); }}; new X(); }}; }}; } } Output when compiled with javac: class ClassNameTest$1 class ClassNameTest$1$1 class ClassNameTest$1$1$1X X Output when compiled with Eclipse: class common.test.ClassNameTest$1 class common.test.ClassNameTest$1$1 class common.test.ClassNameTest$1X Exception in thread "main" java.lang.InternalError: Malformed class name at java.lang.Class.getSimpleBinaryName(Class.java:1223) at java.lang.Class.getSimpleName(Class.java:1108) at common.test.ClassNameTest$1X.<init>(ClassNameTest.java:13) at common.test.ClassNameTest$1$1.<init>(ClassNameTest.java:15) at common.test.ClassNameTest$1.<init>(ClassNameTest.java:8) at common.test.ClassNameTest.<clinit>(ClassNameTest.java:5)
Created attachment 33738 [details] Same fix as for 108856, just 10 lines further down :-)
Thanks. Will be fixed shortly.
Fixed and released in HEAD. Added regression test in: org.eclipse.jdt.core.tests.compiler.regression.Compliance_1_3.test104, org.eclipse.jdt.core.tests.compiler.regression.Compliance_1_4.test104, org.eclipse.jdt.core.tests.compiler.regression.Compliance_1_5.test104
Wow, that was fast. Thanks!
Olivier - pls backport to 3.1.x.
Backported in 3.1.x and contribution list is updated.
Verified for 3.2 M5 using build I20060215-0010