View | Details | Raw Unified | Return to bug 100519
Collapse All | Expand All

(-)src/org/eclipse/jdt/core/tests/compiler/regression/GenericTypeTest.java (+190 lines)
Lines 22004-22014 Link Here
22004
			"	public static class InnerClass {\n" + 
22004
			"	public static class InnerClass {\n" + 
22005
			"		public InnerClass() {\n" + 
22005
			"		public InnerClass() {\n" + 
22006
			"			System.out.println(\"class : \" + InnerClass.this);\n" + 
22006
			"			System.out.println(\"class : \" + InnerClass.this);\n" + 
22007
			"			System.out.println(\"class : \" + X.InnerClass.this);\n" + 
22007
			"		}\n" + 
22008
			"		}\n" + 
22008
			"	}\n" + 
22009
			"	}\n" + 
22009
			"}\n",
22010
			"}\n",
22010
		},
22011
		},
22011
		"");
22012
		"");
22012
}
22013
}
22014
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=100519
22015
public void test763b() {
22016
	this.runConformTest(
22017
		new String[] {
22018
			"X.java",
22019
			"public class X<E> {\n" + 
22020
			"	public static class InnerClass {\n" + 
22021
			"		public InnerClass() {\n" + 
22022
			"			System.out.println(X.InnerClass.this);\n" + 
22023
			"			System.out.println(InnerClass.this);\n" + 
22024
			"			System.out.println(this);\n" + 
22025
			"			System.out.println(X.InnerClass.class);\n" + 
22026
			"			System.out.println(InnerClass.class);\n" + 
22027
			"			System.out.println(this.getClass());\n" + 
22028
			"			System.out.println(X.InnerClass2.class);\n" + 
22029
			"		}\n" + 
22030
			"	}\n" + 
22031
			"	class InnerClass2 {\n" + 
22032
			"		public InnerClass2() {\n" + 
22033
			"			System.out.println(this);\n" + 
22034
			"			System.out.println(X.InnerClass.class);\n" + 
22035
			"			System.out.println(InnerClass.class);\n" + 
22036
			"			System.out.println(X.InnerClass2.this);\n" + 
22037
			"			System.out.println(InnerClass2.this);\n" + 
22038
			"			System.out.println(this.getClass());\n" + 
22039
			"			System.out.println(X.InnerClass2.class);\n" + 
22040
			"			System.out.println(InnerClass2.class);\n" + 
22041
			"		}\n" + 
22042
			"	}\n" + 
22043
			"}\n"
22044
		},
22045
		"");
22046
}
22047
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=100519
22048
public void test763c() {
22049
	this.runNegativeTest(
22050
		new String[] {
22051
			"X.java",
22052
			"public class X<E> {\n" + 
22053
			"	public static class InnerClass {\n" + 
22054
			"		public InnerClass() {\n" + 
22055
			"			System.out.println(X.InnerClass2.this);\n" + 
22056
			"			System.out.println(InnerClass2.this);\n" + 
22057
			"			System.out.println(InnerClass2.class);\n" + 
22058
			"		}\n" + 
22059
			"	}\n" + 
22060
			"	class InnerClass2 {\n" + 
22061
			"		public InnerClass2() {\n" + 
22062
			"			System.out.println(X.InnerClass.this);\n" + 
22063
			"			System.out.println(InnerClass.this);\n" + 
22064
			"		}\n" + 
22065
			"	}\n" + 
22066
			"}\n"
22067
		},
22068
		"----------\n" + 
22069
		"1. ERROR in X.java (at line 4)\n" + 
22070
		"	System.out.println(X.InnerClass2.this);\n" + 
22071
		"	                   ^^^^^^^^^^^^^^^^^^\n" + 
22072
		"No enclosing instance of the type X<E>.InnerClass2 is accessible in scope\n" + 
22073
		"----------\n" + 
22074
		"2. ERROR in X.java (at line 5)\n" + 
22075
		"	System.out.println(InnerClass2.this);\n" + 
22076
		"	                   ^^^^^^^^^^^\n" + 
22077
		"Cannot make a static reference to the non-static type InnerClass2\n" + 
22078
		"----------\n" + 
22079
		"3. ERROR in X.java (at line 6)\n" + 
22080
		"	System.out.println(InnerClass2.class);\n" + 
22081
		"	                   ^^^^^^^^^^^\n" + 
22082
		"Cannot make a static reference to the non-static type InnerClass2\n" + 
22083
		"----------\n" + 
22084
		"4. ERROR in X.java (at line 11)\n" + 
22085
		"	System.out.println(X.InnerClass.this);\n" + 
22086
		"	                   ^^^^^^^^^^^^^^^^^\n" + 
22087
		"No enclosing instance of the type X<E>.InnerClass is accessible in scope\n" + 
22088
		"----------\n" + 
22089
		"5. ERROR in X.java (at line 12)\n" + 
22090
		"	System.out.println(InnerClass.this);\n" + 
22091
		"	                   ^^^^^^^^^^^^^^^\n" + 
22092
		"No enclosing instance of the type X<E>.InnerClass is accessible in scope\n" + 
22093
		"----------\n");
22094
}
22095
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=100519
22096
// second level - some discrepancies in the messages semantics
22097
public void _test763d() {
22098
	this.runNegativeTest(
22099
		new String[] {
22100
			"X.java",
22101
			"public class X<E> {\n" + 
22102
			"	public static class InnerClassA {\n" + 
22103
			"		static class InnerInnerClassA {\n" + 
22104
			"			public InnerInnerClassA() {\n" + 
22105
			"				System.out.println(X.InnerClassA.InnerInnerClassA.this);\n" + 
22106
			"				System.out.println(InnerClassA.InnerInnerClassA.this);\n" + 
22107
			"				System.out.println(InnerInnerClassA.this);\n" + 
22108
			"				System.out.println(this);\n" + 
22109
			"				System.out.println(X.InnerClassA.this);\n" + 
22110
			"				System.out.println(InnerClassA.this);\n" + 
22111
			"				System.out.println(X.InnerClassA.InnerInnerClassA.class);\n" + 
22112
			"				System.out.println(X.InnerClassA.class);\n" + 
22113
			"				System.out.println(InnerClassA.class);\n" + 
22114
			"				System.out.println(this.getClass());\n" + 
22115
			"				System.out.println(X.InnerClassA.class);\n" + 
22116
			"			}\n" + 
22117
			"		}\n" + 
22118
			"	}\n" + 
22119
			"	public static class InnerClassB {\n" + 
22120
			"		class InnerInnerClassB {\n" + 
22121
			"			public InnerInnerClassB() {\n" + 
22122
			"				System.out.println(X.InnerClassB.InnerInnerClassB.this);\n" + 
22123
			"				System.out.println(InnerClassB.InnerInnerClassB.this);\n" + 
22124
			"				System.out.println(InnerInnerClassB.this);\n" + 
22125
			"				System.out.println(this);\n" + 
22126
			"				System.out.println(X.InnerClassB.this);\n" + 
22127
			"				System.out.println(InnerClassB.this);\n" + 
22128
			"				System.out.println(X.InnerClassB.InnerInnerClassB.class);\n" + 
22129
			"				System.out.println(X.InnerClassB.class);\n" + 
22130
			"				System.out.println(InnerClassB.class);\n" + 
22131
			"				System.out.println(this.getClass());\n" + 
22132
			"				System.out.println(X.InnerClassB.class);\n" + 
22133
			"			}\n" + 
22134
			"		}\n" + 
22135
			"	}\n" + 
22136
			"	public class InnerClassC {\n" + 
22137
			"		static class InnerInnerClassC {\n" + 
22138
			"			public InnerInnerClassC() {\n" + 
22139
			"				System.out.println(X.InnerClassC.InnerInnerClassC.this);\n" + 
22140
			"				System.out.println(InnerClassC.InnerInnerClassC.this);\n" + 
22141
			"				System.out.println(InnerInnerClassC.this);\n" + 
22142
			"				System.out.println(this);\n" + 
22143
			"				System.out.println(X.InnerClassC.this);\n" + 
22144
			"				System.out.println(InnerClassC.this);\n" + 
22145
			"				System.out.println(X.InnerClassC.InnerInnerClassC.class);\n" + 
22146
			"				System.out.println(X.InnerClassC.class);\n" + 
22147
			"				System.out.println(InnerClassC.class);\n" + 
22148
			"				System.out.println(this.getClass());\n" + 
22149
			"				System.out.println(X.InnerClassC.class);\n" + 
22150
			"			}\n" + 
22151
			"		}\n" + 
22152
			"	}\n" + 
22153
			"	public class InnerClassD {\n" + 
22154
			"		class InnerInnerClassD {\n" + 
22155
			"			public InnerInnerClassD() {\n" + 
22156
			"				System.out.println(X.InnerClassD.InnerInnerClassD.this);\n" + 
22157
			"				System.out.println(InnerClassD.InnerInnerClassD.this);\n" + 
22158
			"				System.out.println(InnerInnerClassD.this);\n" + 
22159
			"				System.out.println(this);\n" + 
22160
			"				System.out.println(X.InnerClassD.this);\n" + 
22161
			"				System.out.println(InnerClassD.this);\n" + 
22162
			"				System.out.println(X.InnerClassD.InnerInnerClassD.class);\n" + 
22163
			"				System.out.println(X.InnerClassD.class);\n" + 
22164
			"				System.out.println(InnerClassD.class);\n" + 
22165
			"				System.out.println(this.getClass());\n" + 
22166
			"				System.out.println(X.InnerClassD.class);\n" + 
22167
			"			}\n" + 
22168
			"		}\n" + 
22169
			"	}\n" + 
22170
			"}"
22171
		}, 
22172
		"----------\n" + 
22173
		"1. ERROR in X.java (at line 9)\n" + 
22174
		"	System.out.println(X.InnerClassA.this);\n" + 
22175
		"	                   ^^^^^^^^^^^^^^^^^^\n" + 
22176
		// this one and the following contrast with javac, which reports:
22177
		// non-static variable this cannot be referenced from a static context
22178
		"DIFF JAVAC - No enclosing instance of the type X<E>.InnerClassA is accessible in scope\n" + 
22179
		"----------\n" + 
22180
		"2. ERROR in X.java (at line 10)\n" + 
22181
		"	System.out.println(InnerClassA.this);\n" + 
22182
		"	                   ^^^^^^^^^^^^^^^^\n" + 
22183
		"DIFF JAVAC - No enclosing instance of the type X<E>.InnerClassA is accessible in scope\n" + 
22184
		"----------\n" + 
22185
		"3. ERROR in X.java (at line 37)\n" + 
22186
		"	static class InnerInnerClassC {\n" + 
22187
		"	             ^^^^^^^^^^^^^^^^\n" + 
22188
		"The member type InnerInnerClassC cannot be declared static; static types can only be declared in static or top level types\n" + 
22189
		"----------\n" + 
22190
		// the following are not raised by javac but this is OK if we consider
22191
		// it simply stops error detection at the level of InnerInnerClassC
22192
		"4. ERROR in X.java (at line 43)\n" + 
22193
		"	System.out.println(X.InnerClassC.this);\n" + 
22194
		"	                   ^^^^^^^^^^^^^^^^^^\n" + 
22195
		"No enclosing instance of the type X<E>.InnerClassC is accessible in scope\n" + 
22196
		"----------\n" + 
22197
		"5. ERROR in X.java (at line 44)\n" + 
22198
		"	System.out.println(InnerClassC.this);\n" + 
22199
		"	                   ^^^^^^^^^^^^^^^^\n" + 
22200
		"No enclosing instance of the type X<E>.InnerClassC is accessible in scope\n" + 
22201
		"----------\n");
22202
}
22013
}
22203
}
22014
22204

Return to bug 100519