Index: src/org/eclipse/jdt/core/tests/compiler/regression/GenericTypeTest.java =================================================================== RCS file: /home/eclipse/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericTypeTest.java,v retrieving revision 1.319 diff -u -r1.319 GenericTypeTest.java --- src/org/eclipse/jdt/core/tests/compiler/regression/GenericTypeTest.java 17 Jun 2005 09:26:42 -0000 1.319 +++ src/org/eclipse/jdt/core/tests/compiler/regression/GenericTypeTest.java 17 Jun 2005 16:30:02 -0000 @@ -22004,11 +22004,201 @@ " public static class InnerClass {\n" + " public InnerClass() {\n" + " System.out.println(\"class : \" + InnerClass.this);\n" + + " System.out.println(\"class : \" + X.InnerClass.this);\n" + " }\n" + " }\n" + "}\n", }, ""); } +// https://bugs.eclipse.org/bugs/show_bug.cgi?id=100519 +public void test763b() { + this.runConformTest( + new String[] { + "X.java", + "public class X {\n" + + " public static class InnerClass {\n" + + " public InnerClass() {\n" + + " System.out.println(X.InnerClass.this);\n" + + " System.out.println(InnerClass.this);\n" + + " System.out.println(this);\n" + + " System.out.println(X.InnerClass.class);\n" + + " System.out.println(InnerClass.class);\n" + + " System.out.println(this.getClass());\n" + + " System.out.println(X.InnerClass2.class);\n" + + " }\n" + + " }\n" + + " class InnerClass2 {\n" + + " public InnerClass2() {\n" + + " System.out.println(this);\n" + + " System.out.println(X.InnerClass.class);\n" + + " System.out.println(InnerClass.class);\n" + + " System.out.println(X.InnerClass2.this);\n" + + " System.out.println(InnerClass2.this);\n" + + " System.out.println(this.getClass());\n" + + " System.out.println(X.InnerClass2.class);\n" + + " System.out.println(InnerClass2.class);\n" + + " }\n" + + " }\n" + + "}\n" + }, + ""); +} +// https://bugs.eclipse.org/bugs/show_bug.cgi?id=100519 +public void test763c() { + this.runNegativeTest( + new String[] { + "X.java", + "public class X {\n" + + " public static class InnerClass {\n" + + " public InnerClass() {\n" + + " System.out.println(X.InnerClass2.this);\n" + + " System.out.println(InnerClass2.this);\n" + + " System.out.println(InnerClass2.class);\n" + + " }\n" + + " }\n" + + " class InnerClass2 {\n" + + " public InnerClass2() {\n" + + " System.out.println(X.InnerClass.this);\n" + + " System.out.println(InnerClass.this);\n" + + " }\n" + + " }\n" + + "}\n" + }, + "----------\n" + + "1. ERROR in X.java (at line 4)\n" + + " System.out.println(X.InnerClass2.this);\n" + + " ^^^^^^^^^^^^^^^^^^\n" + + "No enclosing instance of the type X.InnerClass2 is accessible in scope\n" + + "----------\n" + + "2. ERROR in X.java (at line 5)\n" + + " System.out.println(InnerClass2.this);\n" + + " ^^^^^^^^^^^\n" + + "Cannot make a static reference to the non-static type InnerClass2\n" + + "----------\n" + + "3. ERROR in X.java (at line 6)\n" + + " System.out.println(InnerClass2.class);\n" + + " ^^^^^^^^^^^\n" + + "Cannot make a static reference to the non-static type InnerClass2\n" + + "----------\n" + + "4. ERROR in X.java (at line 11)\n" + + " System.out.println(X.InnerClass.this);\n" + + " ^^^^^^^^^^^^^^^^^\n" + + "No enclosing instance of the type X.InnerClass is accessible in scope\n" + + "----------\n" + + "5. ERROR in X.java (at line 12)\n" + + " System.out.println(InnerClass.this);\n" + + " ^^^^^^^^^^^^^^^\n" + + "No enclosing instance of the type X.InnerClass is accessible in scope\n" + + "----------\n"); +} +// https://bugs.eclipse.org/bugs/show_bug.cgi?id=100519 +// second level - some discrepancies in the messages semantics +public void _test763d() { + this.runNegativeTest( + new String[] { + "X.java", + "public class X {\n" + + " public static class InnerClassA {\n" + + " static class InnerInnerClassA {\n" + + " public InnerInnerClassA() {\n" + + " System.out.println(X.InnerClassA.InnerInnerClassA.this);\n" + + " System.out.println(InnerClassA.InnerInnerClassA.this);\n" + + " System.out.println(InnerInnerClassA.this);\n" + + " System.out.println(this);\n" + + " System.out.println(X.InnerClassA.this);\n" + + " System.out.println(InnerClassA.this);\n" + + " System.out.println(X.InnerClassA.InnerInnerClassA.class);\n" + + " System.out.println(X.InnerClassA.class);\n" + + " System.out.println(InnerClassA.class);\n" + + " System.out.println(this.getClass());\n" + + " System.out.println(X.InnerClassA.class);\n" + + " }\n" + + " }\n" + + " }\n" + + " public static class InnerClassB {\n" + + " class InnerInnerClassB {\n" + + " public InnerInnerClassB() {\n" + + " System.out.println(X.InnerClassB.InnerInnerClassB.this);\n" + + " System.out.println(InnerClassB.InnerInnerClassB.this);\n" + + " System.out.println(InnerInnerClassB.this);\n" + + " System.out.println(this);\n" + + " System.out.println(X.InnerClassB.this);\n" + + " System.out.println(InnerClassB.this);\n" + + " System.out.println(X.InnerClassB.InnerInnerClassB.class);\n" + + " System.out.println(X.InnerClassB.class);\n" + + " System.out.println(InnerClassB.class);\n" + + " System.out.println(this.getClass());\n" + + " System.out.println(X.InnerClassB.class);\n" + + " }\n" + + " }\n" + + " }\n" + + " public class InnerClassC {\n" + + " static class InnerInnerClassC {\n" + + " public InnerInnerClassC() {\n" + + " System.out.println(X.InnerClassC.InnerInnerClassC.this);\n" + + " System.out.println(InnerClassC.InnerInnerClassC.this);\n" + + " System.out.println(InnerInnerClassC.this);\n" + + " System.out.println(this);\n" + + " System.out.println(X.InnerClassC.this);\n" + + " System.out.println(InnerClassC.this);\n" + + " System.out.println(X.InnerClassC.InnerInnerClassC.class);\n" + + " System.out.println(X.InnerClassC.class);\n" + + " System.out.println(InnerClassC.class);\n" + + " System.out.println(this.getClass());\n" + + " System.out.println(X.InnerClassC.class);\n" + + " }\n" + + " }\n" + + " }\n" + + " public class InnerClassD {\n" + + " class InnerInnerClassD {\n" + + " public InnerInnerClassD() {\n" + + " System.out.println(X.InnerClassD.InnerInnerClassD.this);\n" + + " System.out.println(InnerClassD.InnerInnerClassD.this);\n" + + " System.out.println(InnerInnerClassD.this);\n" + + " System.out.println(this);\n" + + " System.out.println(X.InnerClassD.this);\n" + + " System.out.println(InnerClassD.this);\n" + + " System.out.println(X.InnerClassD.InnerInnerClassD.class);\n" + + " System.out.println(X.InnerClassD.class);\n" + + " System.out.println(InnerClassD.class);\n" + + " System.out.println(this.getClass());\n" + + " System.out.println(X.InnerClassD.class);\n" + + " }\n" + + " }\n" + + " }\n" + + "}" + }, + "----------\n" + + "1. ERROR in X.java (at line 9)\n" + + " System.out.println(X.InnerClassA.this);\n" + + " ^^^^^^^^^^^^^^^^^^\n" + + // this one and the following contrast with javac, which reports: + // non-static variable this cannot be referenced from a static context + "DIFF JAVAC - No enclosing instance of the type X.InnerClassA is accessible in scope\n" + + "----------\n" + + "2. ERROR in X.java (at line 10)\n" + + " System.out.println(InnerClassA.this);\n" + + " ^^^^^^^^^^^^^^^^\n" + + "DIFF JAVAC - No enclosing instance of the type X.InnerClassA is accessible in scope\n" + + "----------\n" + + "3. ERROR in X.java (at line 37)\n" + + " static class InnerInnerClassC {\n" + + " ^^^^^^^^^^^^^^^^\n" + + "The member type InnerInnerClassC cannot be declared static; static types can only be declared in static or top level types\n" + + "----------\n" + + // the following are not raised by javac but this is OK if we consider + // it simply stops error detection at the level of InnerInnerClassC + "4. ERROR in X.java (at line 43)\n" + + " System.out.println(X.InnerClassC.this);\n" + + " ^^^^^^^^^^^^^^^^^^\n" + + "No enclosing instance of the type X.InnerClassC is accessible in scope\n" + + "----------\n" + + "5. ERROR in X.java (at line 44)\n" + + " System.out.println(InnerClassC.this);\n" + + " ^^^^^^^^^^^^^^^^\n" + + "No enclosing instance of the type X.InnerClassC is accessible in scope\n" + + "----------\n"); +} }