1 /*******************************************************************************
2  * Copyright (c) 2011, 2017 IBM Corporation and others.
3  *
4  * This program and the accompanying materials
5  * are made available under the terms of the Eclipse Public License 2.0
6  * which accompanies this distribution, and is available at
7  * https://www.eclipse.org/legal/epl-2.0/
8  *
9  * SPDX-License-Identifier: EPL-2.0
10  *
11  * Contributors:
12  *     IBM Corporation - initial API and implementation
13  *     Stephan Herrmann - Contribution for
14  *								bug 392099 - [1.8][compiler][null] Apply null annotation on types for null analysis
15  *******************************************************************************/
16 package org.eclipse.jdt.core.tests.compiler.regression;
17 
18 import junit.framework.Test;
19 
20 @SuppressWarnings({ "rawtypes" })
21 public class GrammarCoverageTests308 extends AbstractRegressionTest {
22 
23 	static {
24 //		TESTS_NUMBERS = new int [] { 35 };
25 //		TESTS_NAMES = new String [] { "testnew" };
26 	}
testClass()27 	public static Class testClass() {
28 		return GrammarCoverageTests308.class;
29 	}
suite()30 	public static Test suite() {
31 		return buildMinimalComplianceTestSuite(testClass(), F_1_8);
32 	}
GrammarCoverageTests308(String testName)33 	public GrammarCoverageTests308(String testName){
34 		super(testName);
35 	}
36 	// Lone test to verify that multiple annotations of all three kinds are accepted. All other tests will use only marker annotations
test000()37 	public void test000() throws Exception {
38 		this.runNegativeTest(
39 				new String[] {
40 					"X.java",
41 					"public class X extends @Marker @SingleMember(0) @Normal(Value = 0) Object {\n" +
42 					"}\n"
43 				},
44 				"----------\n" +
45 				"1. ERROR in X.java (at line 1)\n" +
46 				"	public class X extends @Marker @SingleMember(0) @Normal(Value = 0) Object {\n" +
47 				"	                        ^^^^^^\n" +
48 				"Marker cannot be resolved to a type\n" +
49 				"----------\n" +
50 				"2. ERROR in X.java (at line 1)\n" +
51 				"	public class X extends @Marker @SingleMember(0) @Normal(Value = 0) Object {\n" +
52 				"	                                ^^^^^^^^^^^^\n" +
53 				"SingleMember cannot be resolved to a type\n" +
54 				"----------\n" +
55 				"3. ERROR in X.java (at line 1)\n" +
56 				"	public class X extends @Marker @SingleMember(0) @Normal(Value = 0) Object {\n" +
57 				"	                                                 ^^^^^^\n" +
58 				"Normal cannot be resolved to a type\n" +
59 				"----------\n");
60 	}
61 	// FieldDeclaration ::= Modifiersopt Type VariableDeclarators ';'
test001()62 	public void test001() throws Exception {
63 		this.runNegativeTest(
64 				new String[] {
65 					"X.java",
66 					"public class X {\n" +
67 					"    @Marker int x;\n" +
68 					"    Zork z;\n" +
69 					"}\n" +
70 					"@java.lang.annotation.Target (java.lang.annotation.ElementType.TYPE_PARAMETER)\n" +
71 					"@interface Marker {}\n",
72 
73 					"java/lang/annotation/ElementType.java",
74 					"package java.lang.annotation;\n"+
75 					"public enum ElementType {\n" +
76 					"    TYPE,\n" +
77 					"    FIELD,\n" +
78 					"    METHOD,\n" +
79 					"    PARAMETER,\n" +
80 					"    CONSTRUCTOR,\n" +
81 					"    LOCAL_VARIABLE,\n" +
82 					"    ANNOTATION_TYPE,\n" +
83 					"    PACKAGE,\n" +
84 					"    TYPE_PARAMETER,\n" +
85 					"    TYPE_USE\n" +
86 					"}\n"
87 				},
88 				"----------\n" +
89 				"1. ERROR in X.java (at line 2)\n" +
90 				"	@Marker int x;\n" +
91 				"	^^^^^^^\n" +
92 				"The annotation @Marker is disallowed for this location\n" +
93 				"----------\n" +
94 				"2. ERROR in X.java (at line 3)\n" +
95 				"	Zork z;\n" +
96 				"	^^^^\n" +
97 				"Zork cannot be resolved to a type\n" +
98 				"----------\n");
99 	}
100 	// TYPE:   MethodHeaderName ::= Modifiersopt TypeParameters Type 'Identifier' '('
test002()101 	public void test002() throws Exception {
102 		this.runNegativeTest(
103 				new String[] {
104 					"X.java",
105 					"public class X {\n" +
106 					"    @Marker <T> @Marker int x() { return 10; };\n" +
107 					"    Zork z;\n" +
108 					"}\n" +
109 					"@java.lang.annotation.Target (java.lang.annotation.ElementType.TYPE_PARAMETER)\n" +
110 					"@interface Marker {}\n",
111 
112 					"java/lang/annotation/ElementType.java",
113 					"package java.lang.annotation;\n"+
114 					"public enum ElementType {\n" +
115 					"    TYPE,\n" +
116 					"    FIELD,\n" +
117 					"    METHOD,\n" +
118 					"    PARAMETER,\n" +
119 					"    CONSTRUCTOR,\n" +
120 					"    LOCAL_VARIABLE,\n" +
121 					"    ANNOTATION_TYPE,\n" +
122 					"    PACKAGE,\n" +
123 					"    TYPE_PARAMETER,\n" +
124 					"    TYPE_USE\n" +
125 					"}\n"
126 				},
127 				"----------\n" +
128 				"1. ERROR in X.java (at line 2)\n" +
129 				"	@Marker <T> @Marker int x() { return 10; };\n" +
130 				"	^^^^^^^\n" +
131 				"The annotation @Marker is disallowed for this location\n" +
132 				"----------\n" +
133 				"2. ERROR in X.java (at line 2)\n" +
134 				"	@Marker <T> @Marker int x() { return 10; };\n" +
135 				"	            ^^^^^^^\n" +
136 				"The annotation @Marker is disallowed for this location\n" +
137 				"----------\n" +
138 				"3. ERROR in X.java (at line 3)\n" +
139 				"	Zork z;\n" +
140 				"	^^^^\n" +
141 				"Zork cannot be resolved to a type\n" +
142 				"----------\n");
143 	}
144 	// TYPE:   MethodHeaderName ::= Modifiersopt Type 'Identifier' '('
test003()145 	public void test003() throws Exception {
146 		this.runNegativeTest(
147 				new String[] {
148 					"X.java",
149 					"public class X {\n" +
150 					"    @Marker int x() { return 10; };\n" +
151 					"    Zork z;\n" +
152 					"}\n" +
153 					"@java.lang.annotation.Target (java.lang.annotation.ElementType.TYPE_PARAMETER)\n" +
154 					"@interface Marker {}\n",
155 
156 					"java/lang/annotation/ElementType.java",
157 					"package java.lang.annotation;\n"+
158 					"public enum ElementType {\n" +
159 					"    TYPE,\n" +
160 					"    FIELD,\n" +
161 					"    METHOD,\n" +
162 					"    PARAMETER,\n" +
163 					"    CONSTRUCTOR,\n" +
164 					"    LOCAL_VARIABLE,\n" +
165 					"    ANNOTATION_TYPE,\n" +
166 					"    PACKAGE,\n" +
167 					"    TYPE_PARAMETER,\n" +
168 					"    TYPE_USE\n" +
169 					"}\n"
170 				},
171 				"----------\n" +
172 				"1. ERROR in X.java (at line 2)\n" +
173 				"	@Marker int x() { return 10; };\n" +
174 				"	^^^^^^^\n" +
175 				"The annotation @Marker is disallowed for this location\n" +
176 				"----------\n" +
177 				"2. ERROR in X.java (at line 3)\n" +
178 				"	Zork z;\n" +
179 				"	^^^^\n" +
180 				"Zork cannot be resolved to a type\n" +
181 				"----------\n");
182 	}
183 	// FormalParameter ::= Modifiersopt Type VariableDeclaratorIdOrThis
test004()184 	public void test004() throws Exception {
185 		this.runNegativeTest(
186 				new String[] {
187 					"X.java",
188 					"public class X {\n" +
189 					"    int x(@Marker int p) { return 10; };\n" +
190 					"    Zork z;\n" +
191 					"}\n" +
192 					"@java.lang.annotation.Target (java.lang.annotation.ElementType.TYPE_PARAMETER)\n" +
193 					"@interface Marker {}\n",
194 
195 					"java/lang/annotation/ElementType.java",
196 					"package java.lang.annotation;\n"+
197 					"public enum ElementType {\n" +
198 					"    TYPE,\n" +
199 					"    FIELD,\n" +
200 					"    METHOD,\n" +
201 					"    PARAMETER,\n" +
202 					"    CONSTRUCTOR,\n" +
203 					"    LOCAL_VARIABLE,\n" +
204 					"    ANNOTATION_TYPE,\n" +
205 					"    PACKAGE,\n" +
206 					"    TYPE_PARAMETER,\n" +
207 					"    TYPE_USE\n" +
208 					"}\n"
209 				},
210 				"----------\n" +
211 				"1. ERROR in X.java (at line 2)\n" +
212 				"	int x(@Marker int p) { return 10; };\n" +
213 				"	      ^^^^^^^\n" +
214 				"The annotation @Marker is disallowed for this location\n" +
215 				"----------\n" +
216 				"2. ERROR in X.java (at line 3)\n" +
217 				"	Zork z;\n" +
218 				"	^^^^\n" +
219 				"Zork cannot be resolved to a type\n" +
220 				"----------\n");
221 	}
222 	// FormalParameter ::= Modifiersopt Type PushZeroTypeAnnotations '...' VariableDeclaratorIdOrThis
test005()223 	public void test005() throws Exception {
224 		this.runNegativeTest(
225 				new String[] {
226 					"X.java",
227 					"public class X {\n" +
228 					"    int x(@Marker int ... p) { return 10; };\n" +
229 					"    Zork z;\n" +
230 					"}\n" +
231 					"@java.lang.annotation.Target (java.lang.annotation.ElementType.TYPE_PARAMETER)\n" +
232 					"@interface Marker {}\n",
233 
234 					"java/lang/annotation/ElementType.java",
235 					"package java.lang.annotation;\n"+
236 					"public enum ElementType {\n" +
237 					"    TYPE,\n" +
238 					"    FIELD,\n" +
239 					"    METHOD,\n" +
240 					"    PARAMETER,\n" +
241 					"    CONSTRUCTOR,\n" +
242 					"    LOCAL_VARIABLE,\n" +
243 					"    ANNOTATION_TYPE,\n" +
244 					"    PACKAGE,\n" +
245 					"    TYPE_PARAMETER,\n" +
246 					"    TYPE_USE\n" +
247 					"}\n"
248 				},
249 				"----------\n" +
250 				"1. ERROR in X.java (at line 2)\n" +
251 				"	int x(@Marker int ... p) { return 10; };\n" +
252 				"	      ^^^^^^^\n" +
253 				"The annotation @Marker is disallowed for this location\n" +
254 				"----------\n" +
255 				"2. ERROR in X.java (at line 3)\n" +
256 				"	Zork z;\n" +
257 				"	^^^^\n" +
258 				"Zork cannot be resolved to a type\n" +
259 				"----------\n");
260 	}
261 	// FormalParameter ::= Modifiersopt Type @308... TypeAnnotations '...' VariableDeclaratorIdOrThis
test006()262 	public void test006() throws Exception {
263 		this.runNegativeTest(
264 				new String[] {
265 					"X.java",
266 					"public class X {\n" +
267 					"    int x(@Marker int [] @Marker ... p) { return 10; };\n" +
268 					"    Zork z;\n" +
269 					"}\n"
270 				},
271 				"----------\n" +
272 				"1. ERROR in X.java (at line 2)\n" +
273 				"	int x(@Marker int [] @Marker ... p) { return 10; };\n" +
274 				"	       ^^^^^^\n" +
275 				"Marker cannot be resolved to a type\n" +
276 				"----------\n" +
277 				"2. ERROR in X.java (at line 2)\n" +
278 				"	int x(@Marker int [] @Marker ... p) { return 10; };\n" +
279 				"	                      ^^^^^^\n" +
280 				"Marker cannot be resolved to a type\n" +
281 				"----------\n" +
282 				"3. ERROR in X.java (at line 3)\n" +
283 				"	Zork z;\n" +
284 				"	^^^^\n" +
285 				"Zork cannot be resolved to a type\n" +
286 				"----------\n");
287 	}
288 	// UnionType ::= Type
289 	// UnionType ::= UnionType '|' Type
test007()290 	public void test007() throws Exception {
291 		this.runNegativeTest(
292 				new String[] {
293 					"X.java",
294 					"public class X {\n" +
295 					"    int x() {\n" +
296 					"        try {\n" +
297 					"        } catch (@Marker NullPointerException | @Marker ArrayIndexOutOfBoundsException e) {\n" +
298 					"        }\n" +
299 					"        return 10;\n" +
300 					"    }\n" +
301 					"    Zork z;\n" +
302 					"}\n"
303 				},
304 				"----------\n" +
305 				"1. ERROR in X.java (at line 4)\n" +
306 				"	} catch (@Marker NullPointerException | @Marker ArrayIndexOutOfBoundsException e) {\n" +
307 				"	          ^^^^^^\n" +
308 				"Marker cannot be resolved to a type\n" +
309 				"----------\n" +
310 				"2. ERROR in X.java (at line 4)\n" +
311 				"	} catch (@Marker NullPointerException | @Marker ArrayIndexOutOfBoundsException e) {\n" +
312 				"	                                         ^^^^^^\n" +
313 				"Marker cannot be resolved to a type\n" +
314 				"----------\n" +
315 				"3. ERROR in X.java (at line 8)\n" +
316 				"	Zork z;\n" +
317 				"	^^^^\n" +
318 				"Zork cannot be resolved to a type\n" +
319 				"----------\n");
320 	}
321 	// LocalVariableDeclaration ::= Type PushModifiers VariableDeclarators
322     // LocalVariableDeclaration ::= Modifiers Type PushRealModifiers VariableDeclarators
test008()323 	public void test008() throws Exception {
324 		this.runNegativeTest(
325 				new String[] {
326 					"X.java",
327 					"public class X {\n" +
328 					"    int x() {\n" +
329 					"        @Marker int p;\n" +
330 					"        final @Marker int q;\n" +
331 					"        @Marker final int r;\n" +
332 					"        return 10;\n" +
333 					"    }\n" +
334 					"    Zork z;\n" +
335 					"}\n" +
336 					"@java.lang.annotation.Target (java.lang.annotation.ElementType.TYPE_PARAMETER)\n" +
337 					"@interface Marker {}\n",
338 
339 					"java/lang/annotation/ElementType.java",
340 					"package java.lang.annotation;\n"+
341 					"public enum ElementType {\n" +
342 					"    TYPE,\n" +
343 					"    FIELD,\n" +
344 					"    METHOD,\n" +
345 					"    PARAMETER,\n" +
346 					"    CONSTRUCTOR,\n" +
347 					"    LOCAL_VARIABLE,\n" +
348 					"    ANNOTATION_TYPE,\n" +
349 					"    PACKAGE,\n" +
350 					"    TYPE_PARAMETER,\n" +
351 					"    TYPE_USE\n" +
352 					"}\n"
353 				},
354 				"----------\n" +
355 				"1. ERROR in X.java (at line 3)\n" +
356 				"	@Marker int p;\n" +
357 				"	^^^^^^^\n" +
358 				"The annotation @Marker is disallowed for this location\n" +
359 				"----------\n" +
360 				"2. ERROR in X.java (at line 4)\n" +
361 				"	final @Marker int q;\n" +
362 				"	      ^^^^^^^\n" +
363 				"The annotation @Marker is disallowed for this location\n" +
364 				"----------\n" +
365 				"3. ERROR in X.java (at line 5)\n" +
366 				"	@Marker final int r;\n" +
367 				"	^^^^^^^\n" +
368 				"The annotation @Marker is disallowed for this location\n" +
369 				"----------\n" +
370 				"4. ERROR in X.java (at line 8)\n" +
371 				"	Zork z;\n" +
372 				"	^^^^\n" +
373 				"Zork cannot be resolved to a type\n" +
374 				"----------\n");
375 	}
376 	// Resource ::= Type PushModifiers VariableDeclaratorId EnterVariable '=' ForceNoDiet VariableInitializer RestoreDiet ExitVariableWithInitialization
377 	// Resource ::= Modifiers Type PushRealModifiers VariableDeclaratorId EnterVariable '=' ForceNoDiet VariableInitializer RestoreDiet ExitVariableWithInitialization
test009()378 	public void test009() throws Exception {
379 		this.runNegativeTest(
380 				new String[] {
381 					"X.java",
382 					"public class X {\n" +
383 					"    int x() {\n" +
384 					"        try (@Marker Integer p = null; final @Marker Integer q = null; @Marker final Integer r = null) {\n" +
385 					"        }\n" +
386 					"        return 10;\n" +
387 					"    }\n" +
388 					"    Zork z;\n" +
389 					"}\n" +
390 					"@java.lang.annotation.Target (java.lang.annotation.ElementType.TYPE_PARAMETER)\n" +
391 					"@interface Marker {}\n",
392 
393 					"java/lang/annotation/ElementType.java",
394 					"package java.lang.annotation;\n"+
395 					"public enum ElementType {\n" +
396 					"    TYPE,\n" +
397 					"    FIELD,\n" +
398 					"    METHOD,\n" +
399 					"    PARAMETER,\n" +
400 					"    CONSTRUCTOR,\n" +
401 					"    LOCAL_VARIABLE,\n" +
402 					"    ANNOTATION_TYPE,\n" +
403 					"    PACKAGE,\n" +
404 					"    TYPE_PARAMETER,\n" +
405 					"    TYPE_USE\n" +
406 					"}\n"
407 				},
408 				"----------\n" +
409 				"1. ERROR in X.java (at line 3)\n" +
410 				"	try (@Marker Integer p = null; final @Marker Integer q = null; @Marker final Integer r = null) {\n" +
411 				"	     ^^^^^^^\n" +
412 				"The annotation @Marker is disallowed for this location\n" +
413 				"----------\n" +
414 				"2. ERROR in X.java (at line 3)\n" +
415 				"	try (@Marker Integer p = null; final @Marker Integer q = null; @Marker final Integer r = null) {\n" +
416 				"	             ^^^^^^^\n" +
417 				"The resource type Integer does not implement java.lang.AutoCloseable\n" +
418 				"----------\n" +
419 				"3. ERROR in X.java (at line 3)\n" +
420 				"	try (@Marker Integer p = null; final @Marker Integer q = null; @Marker final Integer r = null) {\n" +
421 				"	                                     ^^^^^^^\n" +
422 				"The annotation @Marker is disallowed for this location\n" +
423 				"----------\n" +
424 				"4. ERROR in X.java (at line 3)\n" +
425 				"	try (@Marker Integer p = null; final @Marker Integer q = null; @Marker final Integer r = null) {\n" +
426 				"	                                             ^^^^^^^\n" +
427 				"The resource type Integer does not implement java.lang.AutoCloseable\n" +
428 				"----------\n" +
429 				"5. ERROR in X.java (at line 3)\n" +
430 				"	try (@Marker Integer p = null; final @Marker Integer q = null; @Marker final Integer r = null) {\n" +
431 				"	                                                               ^^^^^^^\n" +
432 				"The annotation @Marker is disallowed for this location\n" +
433 				"----------\n" +
434 				"6. ERROR in X.java (at line 3)\n" +
435 				"	try (@Marker Integer p = null; final @Marker Integer q = null; @Marker final Integer r = null) {\n" +
436 				"	                                                                             ^^^^^^^\n" +
437 				"The resource type Integer does not implement java.lang.AutoCloseable\n" +
438 				"----------\n" +
439 				"7. ERROR in X.java (at line 7)\n" +
440 				"	Zork z;\n" +
441 				"	^^^^\n" +
442 				"Zork cannot be resolved to a type\n" +
443 				"----------\n");
444 	}
445 	// EnhancedForStatementHeaderInit ::= 'for' '(' Type PushModifiers Identifier Dimsopt
446 	// EnhancedForStatementHeaderInit ::= 'for' '(' Modifiers Type PushRealModifiers Identifier Dimsopt
test010()447 	public void test010() throws Exception {
448 		this.runNegativeTest(
449 				new String[] {
450 					"X.java",
451 					"public class X {\n" +
452 					"    int x() {\n" +
453 					"        for (@Marker int i: new int[3]) {}\n" +
454 					"        for (final @Marker int i: new int[3]) {}\n" +
455 					"        for (@Marker final int i: new int[3]) {}\n" +
456 					"        return 10;\n" +
457 					"    }\n" +
458 					"    Zork z;\n" +
459 					"}\n" +
460 					"@java.lang.annotation.Target (java.lang.annotation.ElementType.TYPE_PARAMETER)\n" +
461 					"@interface Marker {}\n",
462 
463 					"java/lang/annotation/ElementType.java",
464 					"package java.lang.annotation;\n"+
465 					"public enum ElementType {\n" +
466 					"    TYPE,\n" +
467 					"    FIELD,\n" +
468 					"    METHOD,\n" +
469 					"    PARAMETER,\n" +
470 					"    CONSTRUCTOR,\n" +
471 					"    LOCAL_VARIABLE,\n" +
472 					"    ANNOTATION_TYPE,\n" +
473 					"    PACKAGE,\n" +
474 					"    TYPE_PARAMETER,\n" +
475 					"    TYPE_USE\n" +
476 					"}\n"
477 				},
478 				"----------\n" +
479 				"1. ERROR in X.java (at line 3)\n" +
480 				"	for (@Marker int i: new int[3]) {}\n" +
481 				"	     ^^^^^^^\n" +
482 				"The annotation @Marker is disallowed for this location\n" +
483 				"----------\n" +
484 				"2. ERROR in X.java (at line 4)\n" +
485 				"	for (final @Marker int i: new int[3]) {}\n" +
486 				"	           ^^^^^^^\n" +
487 				"The annotation @Marker is disallowed for this location\n" +
488 				"----------\n" +
489 				"3. ERROR in X.java (at line 5)\n" +
490 				"	for (@Marker final int i: new int[3]) {}\n" +
491 				"	     ^^^^^^^\n" +
492 				"The annotation @Marker is disallowed for this location\n" +
493 				"----------\n" +
494 				"4. ERROR in X.java (at line 8)\n" +
495 				"	Zork z;\n" +
496 				"	^^^^\n" +
497 				"Zork cannot be resolved to a type\n" +
498 				"----------\n");
499 	}
500 	// AnnotationMethodHeaderName ::= Modifiersopt TypeParameters Type 'Identifier' '('
501 	// AnnotationMethodHeaderName ::= Modifiersopt Type 'Identifier' '('
test011()502 	public void test011() throws Exception {
503 		this.runNegativeTest(
504 				new String[] {
505 					"X.java",
506 					"public @interface X { \n" +
507 					"	public @Marker String value(); \n" +
508 					"	@Marker String value2(); \n" +
509 					"	@Marker public String value3(); \n" +
510 					"	public @Marker <T> @Marker String value4(); \n" +
511 					"	@Marker <T> @Marker String value5(); \n" +
512 					"	@Marker public <T> @Marker String value6(); \n" +
513 					"}\n" +
514 
515 					"@java.lang.annotation.Target (java.lang.annotation.ElementType.TYPE_PARAMETER)\n" +
516 					"@interface Marker {}\n",
517 
518 					"java/lang/annotation/ElementType.java",
519 					"package java.lang.annotation;\n"+
520 					"public enum ElementType {\n" +
521 					"    TYPE,\n" +
522 					"    FIELD,\n" +
523 					"    METHOD,\n" +
524 					"    PARAMETER,\n" +
525 					"    CONSTRUCTOR,\n" +
526 					"    LOCAL_VARIABLE,\n" +
527 					"    ANNOTATION_TYPE,\n" +
528 					"    PACKAGE,\n" +
529 					"    TYPE_PARAMETER,\n" +
530 					"    TYPE_USE\n" +
531 					"}\n"
532 				},
533 				"----------\n" +
534 				"1. ERROR in X.java (at line 2)\n" +
535 				"	public @Marker String value(); \n" +
536 				"	       ^^^^^^^\n" +
537 				"The annotation @Marker is disallowed for this location\n" +
538 				"----------\n" +
539 				"2. ERROR in X.java (at line 3)\n" +
540 				"	@Marker String value2(); \n" +
541 				"	^^^^^^^\n" +
542 				"The annotation @Marker is disallowed for this location\n" +
543 				"----------\n" +
544 				"3. ERROR in X.java (at line 4)\n" +
545 				"	@Marker public String value3(); \n" +
546 				"	^^^^^^^\n" +
547 				"The annotation @Marker is disallowed for this location\n" +
548 				"----------\n" +
549 				"4. ERROR in X.java (at line 5)\n" +
550 				"	public @Marker <T> @Marker String value4(); \n" +
551 				"	       ^^^^^^^\n" +
552 				"The annotation @Marker is disallowed for this location\n" +
553 				"----------\n" +
554 				"5. ERROR in X.java (at line 5)\n" +
555 				"	public @Marker <T> @Marker String value4(); \n" +
556 				"	                   ^^^^^^^\n" +
557 				"Syntax error, type annotations are illegal here\n" +
558 				"----------\n" +
559 				"6. ERROR in X.java (at line 5)\n" +
560 				"	public @Marker <T> @Marker String value4(); \n" +
561 				"	                                  ^^^^^^^^\n" +
562 				"Annotation attributes cannot be generic\n" +
563 				"----------\n" +
564 				"7. ERROR in X.java (at line 6)\n" +
565 				"	@Marker <T> @Marker String value5(); \n" +
566 				"	^^^^^^^\n" +
567 				"The annotation @Marker is disallowed for this location\n" +
568 				"----------\n" +
569 				"8. ERROR in X.java (at line 6)\n" +
570 				"	@Marker <T> @Marker String value5(); \n" +
571 				"	            ^^^^^^^\n" +
572 				"Syntax error, type annotations are illegal here\n" +
573 				"----------\n" +
574 				"9. ERROR in X.java (at line 6)\n" +
575 				"	@Marker <T> @Marker String value5(); \n" +
576 				"	                           ^^^^^^^^\n" +
577 				"Annotation attributes cannot be generic\n" +
578 				"----------\n" +
579 				"10. ERROR in X.java (at line 7)\n" +
580 				"	@Marker public <T> @Marker String value6(); \n" +
581 				"	^^^^^^^\n" +
582 				"The annotation @Marker is disallowed for this location\n" +
583 				"----------\n" +
584 				"11. ERROR in X.java (at line 7)\n" +
585 				"	@Marker public <T> @Marker String value6(); \n" +
586 				"	                   ^^^^^^^\n" +
587 				"Syntax error, type annotations are illegal here\n" +
588 				"----------\n" +
589 				"12. ERROR in X.java (at line 7)\n" +
590 				"	@Marker public <T> @Marker String value6(); \n" +
591 				"	                                  ^^^^^^^^\n" +
592 				"Annotation attributes cannot be generic\n" +
593 				"----------\n");
594 	}
595 	// PrimaryNoNewArray ::= PrimitiveType Dims '.' 'class'
596 	// PrimaryNoNewArray ::= PrimitiveType '.' 'class'
test012()597 	public void test012() throws Exception {
598 		this.runNegativeTest(
599 				new String[] {
600 					"X.java",
601 					"public class X { \n" +
602 					"	public void value() {\n" +
603 					"		Object o = @Marker int.class;\n" +
604 					"		Object o2 = @Marker int @Marker[] [] @Marker[].class;\n" +
605 					"   }\n" +
606 					"}\n"
607 				},
608 				"----------\n" +
609 				"1. ERROR in X.java (at line 3)\n" +
610 				"	Object o = @Marker int.class;\n" +
611 				"	           ^^^^^^^\n" +
612 				"Syntax error, type annotations are illegal here\n" +
613 				"----------\n" +
614 				"2. ERROR in X.java (at line 4)\n" +
615 				"	Object o2 = @Marker int @Marker[] [] @Marker[].class;\n" +
616 				"	            ^^^^^^^\n" +
617 				"Syntax error, type annotations are illegal here\n" +
618 				"----------\n" +
619 				"3. ERROR in X.java (at line 4)\n" +
620 				"	Object o2 = @Marker int @Marker[] [] @Marker[].class;\n" +
621 				"	                        ^^^^^^^\n" +
622 				"Syntax error, type annotations are illegal here\n" +
623 				"----------\n" +
624 				"4. ERROR in X.java (at line 4)\n" +
625 				"	Object o2 = @Marker int @Marker[] [] @Marker[].class;\n" +
626 				"	                                     ^^^^^^^\n" +
627 				"Syntax error, type annotations are illegal here\n" +
628 				"----------\n");
629 	}
630 	// ReferenceExpression ::= PrimitiveType Dims '::' NonWildTypeArgumentsopt IdentifierOrNew
test013()631 	public void test013() throws Exception {
632 		this.runNegativeTest(
633 				new String[] {
634 					"X.java",
635 					"interface I {\n" +
636 					"    Object copy(int [] ia);\n" +
637 					"}\n" +
638 					"public class X  {\n" +
639 					"    public static void main(String [] args) {\n" +
640 					"        I i = @Marker int @Marker []::<String>clone;\n" +
641 					"        Zork z;\n" +
642 					"    }\n" +
643 					"}\n"
644 				},
645 				"----------\n" +
646 				"1. ERROR in X.java (at line 6)\n" +
647 				"	I i = @Marker int @Marker []::<String>clone;\n" +
648 				"	       ^^^^^^\n" +
649 				"Marker cannot be resolved to a type\n" +
650 				"----------\n" +
651 				"2. ERROR in X.java (at line 6)\n" +
652 				"	I i = @Marker int @Marker []::<String>clone;\n" +
653 				"	                   ^^^^^^\n" +
654 				"Marker cannot be resolved to a type\n" +
655 				"----------\n" +
656 				"3. WARNING in X.java (at line 6)\n" +
657 				"	I i = @Marker int @Marker []::<String>clone;\n" +
658 				"	                               ^^^^^^\n" +
659 				"Unused type arguments for the non generic method clone() of type Object; it should not be parameterized with arguments <String>\n" +
660 				"----------\n" +
661 				"4. ERROR in X.java (at line 7)\n" +
662 				"	Zork z;\n" +
663 				"	^^^^\n" +
664 				"Zork cannot be resolved to a type\n" +
665 				"----------\n");
666 	}
667 	// ArrayCreationWithoutArrayInitializer ::= 'new' PrimitiveType DimWithOrWithOutExprs
668 	// ArrayCreationWithArrayInitializer ::= 'new' PrimitiveType DimWithOrWithOutExprs ArrayInitializer
test014()669 	public void test014() throws Exception {
670 		this.runNegativeTest(
671 				new String[] {
672 					"X.java",
673 					"public class X  {\n" +
674 					"    public static void main(String [] args) {\n" +
675 					"        int i [] = new @Marker int @Marker [4];\n" +
676 					"        int j [] = new @Marker int @Marker [] { 10 };\n" +
677 					"        Zork z;\n" +
678 					"    }\n" +
679 					"}\n"
680 				},
681 				"----------\n" +
682 				"1. ERROR in X.java (at line 3)\n" +
683 				"	int i [] = new @Marker int @Marker [4];\n" +
684 				"	                ^^^^^^\n" +
685 				"Marker cannot be resolved to a type\n" +
686 				"----------\n" +
687 				"2. ERROR in X.java (at line 3)\n" +
688 				"	int i [] = new @Marker int @Marker [4];\n" +
689 				"	                            ^^^^^^\n" +
690 				"Marker cannot be resolved to a type\n" +
691 				"----------\n" +
692 				"3. ERROR in X.java (at line 4)\n" +
693 				"	int j [] = new @Marker int @Marker [] { 10 };\n" +
694 				"	                ^^^^^^\n" +
695 				"Marker cannot be resolved to a type\n" +
696 				"----------\n" +
697 				"4. ERROR in X.java (at line 4)\n" +
698 				"	int j [] = new @Marker int @Marker [] { 10 };\n" +
699 				"	                            ^^^^^^\n" +
700 				"Marker cannot be resolved to a type\n" +
701 				"----------\n" +
702 				"5. ERROR in X.java (at line 5)\n" +
703 				"	Zork z;\n" +
704 				"	^^^^\n" +
705 				"Zork cannot be resolved to a type\n" +
706 				"----------\n");
707 	}
708 	// CastExpression ::= PushLPAREN PrimitiveType Dimsopt PushRPAREN InsideCastExpression UnaryExpression
test015()709 	public void test015() throws Exception {
710 		this.runNegativeTest(
711 				new String[] {
712 					"X.java",
713 					"public class X  {\n" +
714 					"    public static void main(String [] args) {\n" +
715 					"        int i = (@Marker int) 0;\n" +
716 					"        int j [] = (@Marker int @Marker []) null;\n" +
717 					"        Zork z;\n" +
718 					"    }\n" +
719 					"}\n"
720 				},
721 				"----------\n" +
722 				"1. ERROR in X.java (at line 3)\n" +
723 				"	int i = (@Marker int) 0;\n" +
724 				"	          ^^^^^^\n" +
725 				"Marker cannot be resolved to a type\n" +
726 				"----------\n" +
727 				"2. ERROR in X.java (at line 4)\n" +
728 				"	int j [] = (@Marker int @Marker []) null;\n" +
729 				"	             ^^^^^^\n" +
730 				"Marker cannot be resolved to a type\n" +
731 				"----------\n" +
732 				"3. ERROR in X.java (at line 4)\n" +
733 				"	int j [] = (@Marker int @Marker []) null;\n" +
734 				"	                         ^^^^^^\n" +
735 				"Marker cannot be resolved to a type\n" +
736 				"----------\n" +
737 				"4. ERROR in X.java (at line 5)\n" +
738 				"	Zork z;\n" +
739 				"	^^^^\n" +
740 				"Zork cannot be resolved to a type\n" +
741 				"----------\n");
742 	}
743 	// InstanceofExpression ::= InstanceofExpression 'instanceof' ReferenceType
test016()744 	public void test016() throws Exception {
745 		this.runNegativeTest(
746 				new String[] {
747 					"X.java",
748 					"public class X  {\n" +
749 					"    public static void main(String [] args) {\n" +
750 					"        if (args instanceof @Readonly String) {\n" +
751 					"        }\n" +
752 					"    }\n" +
753 					"}\n"
754 				},
755 				"----------\n" +
756 				"1. ERROR in X.java (at line 3)\n" +
757 				"	if (args instanceof @Readonly String) {\n" +
758 				"	    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
759 				"Incompatible conditional operand types String[] and String\n" +
760 				"----------\n" +
761 				"2. ERROR in X.java (at line 3)\n" +
762 				"	if (args instanceof @Readonly String) {\n" +
763 				"	                     ^^^^^^^^\n" +
764 				"Readonly cannot be resolved to a type\n" +
765 				"----------\n");
766 	}
767 	// TypeArgument ::= ReferenceType
test017()768 	public void test017() throws Exception {
769 		this.runNegativeTest(
770 				new String[] {
771 					"X.java",
772 					"public class X extends Y<@Marker Integer, String> {}\n" +
773 					"class Y<T, V> {\n" +
774 				    "    Zork z;\n" +
775 					"}\n"
776 				},
777 				"----------\n" +
778 				"1. ERROR in X.java (at line 1)\n" +
779 				"	public class X extends Y<@Marker Integer, String> {}\n" +
780 				"	                          ^^^^^^\n" +
781 				"Marker cannot be resolved to a type\n" +
782 				"----------\n" +
783 				"2. ERROR in X.java (at line 3)\n" +
784 				"	Zork z;\n" +
785 				"	^^^^\n" +
786 				"Zork cannot be resolved to a type\n" +
787 				"----------\n");
788 	}
789 	// ReferenceType1 ::= ReferenceType '>'
test018()790 	public void test018() throws Exception {
791 		this.runNegativeTest(
792 				new String[] {
793 					"X.java",
794 					"public class X extends Y<@Marker Integer> {}\n" +
795 					"class Y<T> {\n" +
796 				    "    Zork z;\n" +
797 					"}\n"
798 				},
799 				"----------\n" +
800 				"1. ERROR in X.java (at line 1)\n" +
801 				"	public class X extends Y<@Marker Integer> {}\n" +
802 				"	                          ^^^^^^\n" +
803 				"Marker cannot be resolved to a type\n" +
804 				"----------\n" +
805 				"2. ERROR in X.java (at line 3)\n" +
806 				"	Zork z;\n" +
807 				"	^^^^\n" +
808 				"Zork cannot be resolved to a type\n" +
809 				"----------\n");
810 	}
811 
812 	// ReferenceType2 ::= ReferenceType '>>'
test019()813 	public void test019() throws Exception {
814 		this.runNegativeTest(
815 				new String[] {
816 					"X.java",
817 					"public class X<T extends Object & Comparable<? super @Marker String>> {}\n" +
818 					"class Y<T> {\n" +
819 				    "    Zork z;\n" +
820 					"}\n"
821 				},
822 				"----------\n" +
823 				"1. ERROR in X.java (at line 1)\n" +
824 				"	public class X<T extends Object & Comparable<? super @Marker String>> {}\n" +
825 				"	                                                      ^^^^^^\n" +
826 				"Marker cannot be resolved to a type\n" +
827 				"----------\n" +
828 				"2. ERROR in X.java (at line 3)\n" +
829 				"	Zork z;\n" +
830 				"	^^^^\n" +
831 				"Zork cannot be resolved to a type\n" +
832 				"----------\n");
833 	}
834 	// ReferenceType3 ::= ReferenceType '>>>'
test020()835 	public void test020() throws Exception {
836 		this.runNegativeTest(
837 				new String[] {
838 					"X.java",
839 					"public class X<A extends X<X<X<@Marker String>>>> {}\n" +
840 					"class Y<T> {\n" +
841 				    "    Zork z;\n" +
842 					"}\n"
843  				},
844  				"----------\n" +
845 				"1. ERROR in X.java (at line 1)\n" +
846 				"	public class X<A extends X<X<X<@Marker String>>>> {}\n" +
847 				"	                           ^\n" +
848 				"Bound mismatch: The type X<X<String>> is not a valid substitute for the bounded parameter <A extends X<X<X<String>>>> of the type X<A>\n" +
849 				"----------\n" +
850 				"2. ERROR in X.java (at line 1)\n" +
851 				"	public class X<A extends X<X<X<@Marker String>>>> {}\n" +
852 				"	                             ^\n" +
853 				"Bound mismatch: The type X<String> is not a valid substitute for the bounded parameter <A extends X<X<X<String>>>> of the type X<A>\n" +
854 				"----------\n" +
855 				"3. ERROR in X.java (at line 1)\n" +
856 				"	public class X<A extends X<X<X<@Marker String>>>> {}\n" +
857 				"	                               ^^^^^^^^^^^^^^\n" +
858 				"Bound mismatch: The type String is not a valid substitute for the bounded parameter <A extends X<X<X<String>>>> of the type X<A>\n" +
859 				"----------\n" +
860 				"4. ERROR in X.java (at line 1)\n" +
861 				"	public class X<A extends X<X<X<@Marker String>>>> {}\n" +
862 				"	                                ^^^^^^\n" +
863 				"Marker cannot be resolved to a type\n" +
864 				"----------\n" +
865 				"5. ERROR in X.java (at line 3)\n" +
866 				"	Zork z;\n" +
867 				"	^^^^\n" +
868 				"Zork cannot be resolved to a type\n" +
869 				"----------\n");
870 	}
871 	// WildcardBounds ::= 'extends' ReferenceType
872 	// WildcardBounds ::= 'super' ReferenceType
test021()873 	public void test021() throws Exception {
874 		this.runNegativeTest(
875 				new String[] {
876 					"X.java",
877 					"public class X {\n" +
878 					"	void foo(Map<@Marker ? super @Marker Object, @Marker ? extends @Marker String> m){}\n" +
879 					"   void goo(Map<@Marker ? extends @Marker Object, @Marker ? super @Marker String> m){}\n" +
880 					"}\n"
881 				},
882 				"----------\n" +
883 				"1. ERROR in X.java (at line 2)\n" +
884 				"	void foo(Map<@Marker ? super @Marker Object, @Marker ? extends @Marker String> m){}\n" +
885 				"	         ^^^\n" +
886 				"Map cannot be resolved to a type\n" +
887 				"----------\n" +
888 				"2. ERROR in X.java (at line 2)\n" +
889 				"	void foo(Map<@Marker ? super @Marker Object, @Marker ? extends @Marker String> m){}\n" +
890 				"	              ^^^^^^\n" +
891 				"Marker cannot be resolved to a type\n" +
892 				"----------\n" +
893 				"3. ERROR in X.java (at line 2)\n" +
894 				"	void foo(Map<@Marker ? super @Marker Object, @Marker ? extends @Marker String> m){}\n" +
895 				"	                              ^^^^^^\n" +
896 				"Marker cannot be resolved to a type\n" +
897 				"----------\n" +
898 				"4. ERROR in X.java (at line 2)\n" +
899 				"	void foo(Map<@Marker ? super @Marker Object, @Marker ? extends @Marker String> m){}\n" +
900 				"	                                              ^^^^^^\n" +
901 				"Marker cannot be resolved to a type\n" +
902 				"----------\n" +
903 				"5. ERROR in X.java (at line 2)\n" +
904 				"	void foo(Map<@Marker ? super @Marker Object, @Marker ? extends @Marker String> m){}\n" +
905 				"	                                                                ^^^^^^\n" +
906 				"Marker cannot be resolved to a type\n" +
907 				"----------\n" +
908 				"6. ERROR in X.java (at line 3)\n" +
909 				"	void goo(Map<@Marker ? extends @Marker Object, @Marker ? super @Marker String> m){}\n" +
910 				"	         ^^^\n" +
911 				"Map cannot be resolved to a type\n" +
912 				"----------\n" +
913 				"7. ERROR in X.java (at line 3)\n" +
914 				"	void goo(Map<@Marker ? extends @Marker Object, @Marker ? super @Marker String> m){}\n" +
915 				"	              ^^^^^^\n" +
916 				"Marker cannot be resolved to a type\n" +
917 				"----------\n" +
918 				"8. ERROR in X.java (at line 3)\n" +
919 				"	void goo(Map<@Marker ? extends @Marker Object, @Marker ? super @Marker String> m){}\n" +
920 				"	                                ^^^^^^\n" +
921 				"Marker cannot be resolved to a type\n" +
922 				"----------\n" +
923 				"9. ERROR in X.java (at line 3)\n" +
924 				"	void goo(Map<@Marker ? extends @Marker Object, @Marker ? super @Marker String> m){}\n" +
925 				"	                                                ^^^^^^\n" +
926 				"Marker cannot be resolved to a type\n" +
927 				"----------\n" +
928 				"10. ERROR in X.java (at line 3)\n" +
929 				"	void goo(Map<@Marker ? extends @Marker Object, @Marker ? super @Marker String> m){}\n" +
930 				"	                                                                ^^^^^^\n" +
931 				"Marker cannot be resolved to a type\n" +
932 				"----------\n");
933 	}
934 	// TypeParameter ::= TypeParameterHeader 'extends' ReferenceType
test022()935 	public void test022() throws Exception {
936 		this.runNegativeTest(
937 				new String[] {
938 					"X.java",
939 					"public class X <@Marker T extends @Marker Y<@Marker ?>, @Marker Q extends @Marker Integer> {\n" +
940 					"}\n" +
941 					"class Y<T> {}\n"
942 				},
943 				"----------\n" +
944 				"1. ERROR in X.java (at line 1)\n" +
945 				"	public class X <@Marker T extends @Marker Y<@Marker ?>, @Marker Q extends @Marker Integer> {\n" +
946 				"	                 ^^^^^^\n" +
947 				"Marker cannot be resolved to a type\n" +
948 				"----------\n" +
949 				"2. ERROR in X.java (at line 1)\n" +
950 				"	public class X <@Marker T extends @Marker Y<@Marker ?>, @Marker Q extends @Marker Integer> {\n" +
951 				"	                                   ^^^^^^\n" +
952 				"Marker cannot be resolved to a type\n" +
953 				"----------\n" +
954 				"3. ERROR in X.java (at line 1)\n" +
955 				"	public class X <@Marker T extends @Marker Y<@Marker ?>, @Marker Q extends @Marker Integer> {\n" +
956 				"	                                             ^^^^^^\n" +
957 				"Marker cannot be resolved to a type\n" +
958 				"----------\n" +
959 				"4. ERROR in X.java (at line 1)\n" +
960 				"	public class X <@Marker T extends @Marker Y<@Marker ?>, @Marker Q extends @Marker Integer> {\n" +
961 				"	                                                         ^^^^^^\n" +
962 				"Marker cannot be resolved to a type\n" +
963 				"----------\n" +
964 				"5. WARNING in X.java (at line 1)\n" +
965 				"	public class X <@Marker T extends @Marker Y<@Marker ?>, @Marker Q extends @Marker Integer> {\n" +
966 				"	                                                                          ^^^^^^^^^^^^^^^\n" +
967 				"The type parameter Q should not be bounded by the final type Integer. Final types cannot be further extended\n" +
968 				"----------\n" +
969 				"6. ERROR in X.java (at line 1)\n" +
970 				"	public class X <@Marker T extends @Marker Y<@Marker ?>, @Marker Q extends @Marker Integer> {\n" +
971 				"	                                                                           ^^^^^^\n" +
972 				"Marker cannot be resolved to a type\n" +
973 				"----------\n");
974 	}
975 	// TypeParameter ::= TypeParameterHeader 'extends' ReferenceType AdditionalBoundList
976 	// AdditionalBound ::= '&' ReferenceType
977 	// TypeParameter1 ::= TypeParameterHeader 'extends' ReferenceType AdditionalBoundList1
test023()978 	public void test023() throws Exception {
979 		this.runNegativeTest(
980 				new String[] {
981 					"I.java",
982 					"public interface I<U extends J<? extends I<U>>> {\n" +
983 					"}\n" +
984 					"interface J<T extends I<? extends J<T>>> {\n" +
985 					"}\n" +
986 					"class CI<U extends CJ<T, U> & @Marker J<@Marker T>,\n" +
987 					"			T extends CI<U, T> & @Marker I<U>>\n" +
988 					"	implements I<U> {\n" +
989 					"}\n" +
990 					"class CJ<T extends CI<U, T> & @Marker I<@Marker U>,\n" +
991 					"			U extends CJ<T, U> & J<T>>\n" +
992 					"	implements J<T> {\n" +
993 					"}\n"
994 				},
995 				"----------\n" +
996 				"1. ERROR in I.java (at line 5)\n" +
997 				"	class CI<U extends CJ<T, U> & @Marker J<@Marker T>,\n" +
998 				"	                               ^^^^^^\n" +
999 				"Marker cannot be resolved to a type\n" +
1000 				"----------\n" +
1001 				"2. ERROR in I.java (at line 5)\n" +
1002 				"	class CI<U extends CJ<T, U> & @Marker J<@Marker T>,\n" +
1003 				"	                                         ^^^^^^\n" +
1004 				"Marker cannot be resolved to a type\n" +
1005 				"----------\n" +
1006 				"3. ERROR in I.java (at line 6)\n" +
1007 				"	T extends CI<U, T> & @Marker I<U>>\n" +
1008 				"	                      ^^^^^^\n" +
1009 				"Marker cannot be resolved to a type\n" +
1010 				"----------\n" +
1011 				"4. ERROR in I.java (at line 9)\n" +
1012 				"	class CJ<T extends CI<U, T> & @Marker I<@Marker U>,\n" +
1013 				"	                               ^^^^^^\n" +
1014 				"Marker cannot be resolved to a type\n" +
1015 				"----------\n" +
1016 				"5. ERROR in I.java (at line 9)\n" +
1017 				"	class CJ<T extends CI<U, T> & @Marker I<@Marker U>,\n" +
1018 				"	                                         ^^^^^^\n" +
1019 				"Marker cannot be resolved to a type\n" +
1020 				"----------\n");
1021 	}
1022 	// InstanceofExpression_NotName ::= Name 'instanceof' ReferenceType
test024()1023 	public void test024() throws Exception {
1024 		this.runNegativeTest(
1025 				new String[] {
1026 					"X.java",
1027 					"public class X<E> {\n" +
1028 					"  class Y {\n" +
1029 					"    E e;\n" +
1030 					"    E getOtherElement(Object other) {\n" +
1031 					"      if (!(other instanceof @Marker X<?>.Y)) {};\n" +
1032 					"      return null;\n" +
1033 					"    }\n" +
1034 					"  }\n" +
1035 					"}\n"
1036 				},
1037 				"----------\n" +
1038 				"1. ERROR in X.java (at line 5)\n" +
1039 				"	if (!(other instanceof @Marker X<?>.Y)) {};\n" +
1040 				"	                        ^^^^^^\n" +
1041 				"Marker cannot be resolved to a type\n" +
1042 				"----------\n");
1043 	}
1044 	// InstanceofExpression_NotName ::= InstanceofExpression_NotName 'instanceof' ReferenceType
test025()1045 	public void test025() throws Exception {
1046 		this.runNegativeTest(
1047 				new String[] {
1048 					"X.java",
1049 					"public class X<P, C> {\n" +
1050 					"  public X() {\n" +
1051 					"    if (!(this instanceof @Marker X)) {}\n" +
1052 					"  }\n" +
1053 					"}\n"
1054 				},
1055 				"----------\n" +
1056 				"1. ERROR in X.java (at line 3)\n" +
1057 				"	if (!(this instanceof @Marker X)) {}\n" +
1058 				"	                       ^^^^^^\n" +
1059 				"Marker cannot be resolved to a type\n" +
1060 				"----------\n");
1061 	}
1062 	// ReferenceExpressionTypeArgumentsAndTrunk ::= OnlyTypeArguments '.' ClassOrInterfaceType Dimsopt
test026()1063 	public void test026() throws Exception {
1064 		this.runNegativeTest(
1065 				new String[] {
1066 					"X.java",
1067 					"interface I {\n" +
1068 					"    void foo(Y<String>.Z z, int x);\n" +
1069 					"}\n" +
1070 					"public class X  {\n" +
1071 					"    public static void main(String [] args) {\n" +
1072 					"        I i = Y<String>.@Marker Z::foo;\n" +
1073 					"        i.foo(new Y<String>().new Z(), 10); \n" +
1074 					"        Zork z;\n" +
1075 					"    }\n" +
1076 					"}\n" +
1077 					"class Y<T> {\n" +
1078 					"    class Z {\n" +
1079 					"        void foo(int x) {\n" +
1080 					"	    System.out.println(x);\n" +
1081 					"        }\n" +
1082 					"    }\n" +
1083 					"}\n"
1084 				},
1085 				"----------\n" +
1086 				"1. ERROR in X.java (at line 6)\n" +
1087 				"	I i = Y<String>.@Marker Z::foo;\n" +
1088 				"	                 ^^^^^^\n" +
1089 				"Marker cannot be resolved to a type\n" +
1090 				"----------\n" +
1091 				"2. ERROR in X.java (at line 8)\n" +
1092 				"	Zork z;\n" +
1093 				"	^^^^\n" +
1094 				"Zork cannot be resolved to a type\n" +
1095 				"----------\n");
1096 	}
1097 	// ArrayCreationWithoutArrayInitializer ::= 'new' ClassOrInterfaceType DimWithOrWithOutExprs
1098 	// ArrayCreationWithArrayInitializer ::= 'new' ClassOrInterfaceType DimWithOrWithOutExprs ArrayInitializer
test027()1099 	public void test027() throws Exception {
1100 		this.runNegativeTest(
1101 				new String[] {
1102 					"X.java",
1103 					"public class X  {\n" +
1104 					"    public static void main(String [] args) {\n" +
1105 					"        X [] x = new @Marker X @Marker [5];\n" +
1106 					"        X [] x2 = new @Marker X @Marker [] { null };\n" +
1107 					"        Zork z;\n" +
1108 					"    }\n" +
1109 					"}\n"				},
1110 					"----------\n" +
1111 					"1. ERROR in X.java (at line 3)\n" +
1112 					"	X [] x = new @Marker X @Marker [5];\n" +
1113 					"	              ^^^^^^\n" +
1114 					"Marker cannot be resolved to a type\n" +
1115 					"----------\n" +
1116 					"2. ERROR in X.java (at line 3)\n" +
1117 					"	X [] x = new @Marker X @Marker [5];\n" +
1118 					"	                        ^^^^^^\n" +
1119 					"Marker cannot be resolved to a type\n" +
1120 					"----------\n" +
1121 					"3. ERROR in X.java (at line 4)\n" +
1122 					"	X [] x2 = new @Marker X @Marker [] { null };\n" +
1123 					"	               ^^^^^^\n" +
1124 					"Marker cannot be resolved to a type\n" +
1125 					"----------\n" +
1126 					"4. ERROR in X.java (at line 4)\n" +
1127 					"	X [] x2 = new @Marker X @Marker [] { null };\n" +
1128 					"	                         ^^^^^^\n" +
1129 					"Marker cannot be resolved to a type\n" +
1130 					"----------\n" +
1131 					"5. ERROR in X.java (at line 5)\n" +
1132 					"	Zork z;\n" +
1133 					"	^^^^\n" +
1134 					"Zork cannot be resolved to a type\n" +
1135 					"----------\n");
1136 	}
1137 	// CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression '.' ClassOrInterfaceType Dimsopt PushRPAREN InsideCastExpressionWithQualifiedGenerics UnaryExpressionNotPlusMinus
test028()1138 	public void test028() throws Exception {
1139 		this.runNegativeTest(
1140 				new String[] {
1141 					"X.java",
1142 					"public class X  {\n" +
1143 					"    public static void main(String [] args) {\n" +
1144 					"        java.util.Map.Entry [] e = (java.util.Map<String, String>.@Marker Entry []) null;\n" +
1145 					"    }\n" +
1146 					"}\n"				},
1147 					"----------\n" +
1148 					"1. WARNING in X.java (at line 3)\n" +
1149 					"	java.util.Map.Entry [] e = (java.util.Map<String, String>.@Marker Entry []) null;\n" +
1150 					"	^^^^^^^^^^^^^^^^^^^\n" +
1151 					"Map.Entry is a raw type. References to generic type Map.Entry<K,V> should be parameterized\n" +
1152 					"----------\n" +
1153 					"2. ERROR in X.java (at line 3)\n" +
1154 					"	java.util.Map.Entry [] e = (java.util.Map<String, String>.@Marker Entry []) null;\n" +
1155 					"	                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
1156 					"The member type Map.Entry<K,V> cannot be qualified with a parameterized type, since it is static. Remove arguments from qualifying type Map<String,String>\n" +
1157 					"----------\n" +
1158 					"3. ERROR in X.java (at line 3)\n" +
1159 					"	java.util.Map.Entry [] e = (java.util.Map<String, String>.@Marker Entry []) null;\n" +
1160 					"	                                                           ^^^^^^\n" +
1161 					"Marker cannot be resolved to a type\n" +
1162 					"----------\n");
1163 	}
1164 	// ReferenceType1 ::= ClassOrInterface '<' TypeArgumentList2
test029()1165 	public void test029() throws Exception {
1166 		this.runNegativeTest(
1167 				new String[] {
1168 					"X.java",
1169 					"import java.io.Serializable;\n" +
1170 					"import java.util.List;\n" +
1171 					"public class X<T extends Comparable<T> & Serializable> {\n" +
1172 					"	void foo(List<? extends @Marker Comparable<T>> p) {} \n" +
1173 					"}\n"
1174 				},
1175 				"----------\n" +
1176 				"1. ERROR in X.java (at line 4)\n" +
1177 				"	void foo(List<? extends @Marker Comparable<T>> p) {} \n" +
1178 				"	                         ^^^^^^\n" +
1179 				"Marker cannot be resolved to a type\n" +
1180 				"----------\n");
1181 	}
1182 	// ReferenceType2 ::= ClassOrInterface '<' TypeArgumentList3
test030()1183 	public void test030() throws Exception {
1184 		this.runNegativeTest(
1185 				new String[] {
1186 					"X.java",
1187 					"class Base {\n" +
1188 					"}\n" +
1189 					"class Foo<U extends Base, V extends Bar<U, @Marker Foo<U, V>>> {\n" +
1190 					"}\n" +
1191 					"class Bar<E extends Base, F extends Foo<E, @Marker Bar<E, F>>> {\n" +
1192 					"}\n"
1193 				},
1194 				"----------\n" +
1195 				"1. ERROR in X.java (at line 3)\n" +
1196 				"	class Foo<U extends Base, V extends Bar<U, @Marker Foo<U, V>>> {\n" +
1197 				"	                                           ^^^^^^^^^^^\n" +
1198 				"Bound mismatch: The type Foo<U,V> is not a valid substitute for the bounded parameter <F extends Foo<E,Bar<E,F>>> of the type Bar<E,F>\n" +
1199 				"----------\n" +
1200 				"2. ERROR in X.java (at line 3)\n" +
1201 				"	class Foo<U extends Base, V extends Bar<U, @Marker Foo<U, V>>> {\n" +
1202 				"	                                            ^^^^^^\n" +
1203 				"Marker cannot be resolved to a type\n" +
1204 				"----------\n" +
1205 				"3. ERROR in X.java (at line 5)\n" +
1206 				"	class Bar<E extends Base, F extends Foo<E, @Marker Bar<E, F>>> {\n" +
1207 				"	                                           ^^^^^^^^^^^\n" +
1208 				"Bound mismatch: The type Bar<E,F> is not a valid substitute for the bounded parameter <V extends Bar<U,Foo<U,V>>> of the type Foo<U,V>\n" +
1209 				"----------\n" +
1210 				"4. ERROR in X.java (at line 5)\n" +
1211 				"	class Bar<E extends Base, F extends Foo<E, @Marker Bar<E, F>>> {\n" +
1212 				"	                                            ^^^^^^\n" +
1213 				"Marker cannot be resolved to a type\n" +
1214 				"----------\n");
1215 	}
1216 	// ClassHeaderExtends ::= 'extends' ClassType
test031()1217 	public void test031() throws Exception {
1218 		this.runNegativeTest(
1219 				new String[] {
1220 					"X.java",
1221 					"public class X extends @Marker Object {\n" +
1222 					"}\n"
1223 				},
1224 				"----------\n" +
1225 				"1. ERROR in X.java (at line 1)\n" +
1226 				"	public class X extends @Marker Object {\n" +
1227 				"	                        ^^^^^^\n" +
1228 				"Marker cannot be resolved to a type\n" +
1229 				"----------\n");
1230 	}
1231 	// ClassInstanceCreationExpression ::= 'new' OnlyTypeArguments ClassType EnterInstanceCreationArgumentList '(' ArgumentListopt ')' UnqualifiedClassBodyopt
1232 	// ClassInstanceCreationExpression ::= 'new' ClassType EnterInstanceCreationArgumentList '(' ArgumentListopt ')' UnqualifiedClassBodyopt
test032()1233 	public void test032() throws Exception {
1234 		this.runNegativeTest(
1235 				new String[] {
1236 					"X.java",
1237 					"public class X {\n" +
1238 					"    X x = new @Marker X();\n" +
1239 					"    X y = new <String> @Marker X();\n" +
1240 					"}\n"
1241 				},
1242 				"----------\n" +
1243 				"1. ERROR in X.java (at line 2)\n" +
1244 				"	X x = new @Marker X();\n" +
1245 				"	           ^^^^^^\n" +
1246 				"Marker cannot be resolved to a type\n" +
1247 				"----------\n" +
1248 				"2. WARNING in X.java (at line 3)\n" +
1249 				"	X y = new <String> @Marker X();\n" +
1250 				"	           ^^^^^^\n" +
1251 				"Unused type arguments for the non generic constructor X() of type X; it should not be parameterized with arguments <String>\n" +
1252 				"----------\n" +
1253 				"3. ERROR in X.java (at line 3)\n" +
1254 				"	X y = new <String> @Marker X();\n" +
1255 				"	                    ^^^^^^\n" +
1256 				"Marker cannot be resolved to a type\n" +
1257 				"----------\n");
1258 	}
1259 	// ClassInstanceCreationExpression ::= Primary '.' 'new' OnlyTypeArguments ClassType EnterInstanceCreationArgumentList '(' ArgumentListopt ')' QualifiedClassBodyopt
1260 	// ClassInstanceCreationExpression ::= Primary '.' 'new' ClassType EnterInstanceCreationArgumentList '(' ArgumentListopt ')' QualifiedClassBodyopt
test033()1261 	public void test033() throws Exception {
1262 		this.runNegativeTest(
1263 				new String[] {
1264 					"X.java",
1265 					"public class X {\n" +
1266 					"    class Y {\n" +
1267 					"    }\n" +
1268 					"    Y y1 = new @Marker X().new @Marker Y();\n" +
1269 					"    Y y2 = new @Marker X().new <String> @Marker Y();\n" +
1270 					"}\n"
1271 				},
1272 				"----------\n" +
1273 				"1. ERROR in X.java (at line 4)\n" +
1274 				"	Y y1 = new @Marker X().new @Marker Y();\n" +
1275 				"	            ^^^^^^\n" +
1276 				"Marker cannot be resolved to a type\n" +
1277 				"----------\n" +
1278 				"2. ERROR in X.java (at line 4)\n" +
1279 				"	Y y1 = new @Marker X().new @Marker Y();\n" +
1280 				"	                            ^^^^^^\n" +
1281 				"Marker cannot be resolved to a type\n" +
1282 				"----------\n" +
1283 				"3. ERROR in X.java (at line 5)\n" +
1284 				"	Y y2 = new @Marker X().new <String> @Marker Y();\n" +
1285 				"	            ^^^^^^\n" +
1286 				"Marker cannot be resolved to a type\n" +
1287 				"----------\n" +
1288 				"4. WARNING in X.java (at line 5)\n" +
1289 				"	Y y2 = new @Marker X().new <String> @Marker Y();\n" +
1290 				"	                            ^^^^^^\n" +
1291 				"Unused type arguments for the non generic constructor X.Y() of type X.Y; it should not be parameterized with arguments <String>\n" +
1292 				"----------\n" +
1293 				"5. ERROR in X.java (at line 5)\n" +
1294 				"	Y y2 = new @Marker X().new <String> @Marker Y();\n" +
1295 				"	                                     ^^^^^^\n" +
1296 				"Marker cannot be resolved to a type\n" +
1297 				"----------\n");
1298 	}
1299 	// ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 'new' ClassType EnterInstanceCreationArgumentList '(' ArgumentListopt ')' QualifiedClassBodyopt
1300 	// ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 'new' OnlyTypeArguments ClassType EnterInstanceCreationArgumentList '(' ArgumentListopt ')' QualifiedClassBodyopt
test034()1301 	public void test034() throws Exception {
1302 		this.runNegativeTest(
1303 				new String[] {
1304 					"X.java",
1305 					"public class X {\n" +
1306 					"    X x;\n" +
1307 					"    class Y {\n" +
1308 					"    }\n" +
1309 					"    Y y1 = @Marker x.new @Marker Y();\n" +
1310 					"    Y y2 = @Marker x.new <String> @Marker Y();\n" +
1311 					"}\n"
1312 				},
1313 				"----------\n" +
1314 				"1. ERROR in X.java (at line 5)\n" +
1315 				"	Y y1 = @Marker x.new @Marker Y();\n" +
1316 				"	       ^^^^^^^\n" +
1317 				"Syntax error, type annotations are illegal here\n" +
1318 				"----------\n" +
1319 				"2. ERROR in X.java (at line 5)\n" +
1320 				"	Y y1 = @Marker x.new @Marker Y();\n" +
1321 				"	                      ^^^^^^\n" +
1322 				"Marker cannot be resolved to a type\n" +
1323 				"----------\n" +
1324 				"3. ERROR in X.java (at line 6)\n" +
1325 				"	Y y2 = @Marker x.new <String> @Marker Y();\n" +
1326 				"	       ^^^^^^^\n" +
1327 				"Syntax error, type annotations are illegal here\n" +
1328 				"----------\n" +
1329 				"4. WARNING in X.java (at line 6)\n" +
1330 				"	Y y2 = @Marker x.new <String> @Marker Y();\n" +
1331 				"	                      ^^^^^^\n" +
1332 				"Unused type arguments for the non generic constructor X.Y() of type X.Y; it should not be parameterized with arguments <String>\n" +
1333 				"----------\n" +
1334 				"5. ERROR in X.java (at line 6)\n" +
1335 				"	Y y2 = @Marker x.new <String> @Marker Y();\n" +
1336 				"	                               ^^^^^^\n" +
1337 				"Marker cannot be resolved to a type\n" +
1338 				"----------\n");
1339 	}
1340 	// MethodHeaderThrowsClause ::= 'throws' ClassTypeList
1341 	// ClassTypeList -> ClassTypeElt
1342 	// ClassTypeList ::= ClassTypeList ',' ClassTypeElt
1343 	// ClassTypeElt ::= ClassType
test035()1344 	public void test035() throws Exception {
1345 		this.runNegativeTest(
1346 				new String[] {
1347 					"X.java",
1348 					"public class X {\n" +
1349 					"    void foo() throws @Marker NullPointerException, @Marker ArrayIndexOutOfBoundsException {}\n" +
1350 					"}\n"
1351 				},
1352 				"----------\n" +
1353 				"1. ERROR in X.java (at line 2)\n" +
1354 				"	void foo() throws @Marker NullPointerException, @Marker ArrayIndexOutOfBoundsException {}\n" +
1355 				"	                   ^^^^^^\n" +
1356 				"Marker cannot be resolved to a type\n" +
1357 				"----------\n" +
1358 				"2. ERROR in X.java (at line 2)\n" +
1359 				"	void foo() throws @Marker NullPointerException, @Marker ArrayIndexOutOfBoundsException {}\n" +
1360 				"	                                                 ^^^^^^\n" +
1361 				"Marker cannot be resolved to a type\n" +
1362 				"----------\n");
1363 	}
1364 	// ClassHeaderImplements ::= 'implements' InterfaceTypeList
1365 	// InterfaceHeaderExtends ::= 'extends' InterfaceTypeList
1366 	// InterfaceTypeList -> InterfaceType
1367 	// InterfaceTypeList ::= InterfaceTypeList ',' InterfaceType
1368 	// InterfaceType ::= ClassOrInterfaceType
test036()1369 	public void test036() throws Exception {
1370 		this.runNegativeTest(
1371 				new String[] {
1372 					"X.java",
1373 					"interface I {}\n" +
1374 					"interface J {}\n" +
1375 					"interface K extends @Marker I, @Marker J {}\n" +
1376 					"interface L {}\n" +
1377 					"public class X implements @Marker K, @Marker L {\n" +
1378 					"}\n"
1379 				},
1380 				"----------\n" +
1381 				"1. ERROR in X.java (at line 3)\n" +
1382 				"	interface K extends @Marker I, @Marker J {}\n" +
1383 				"	                     ^^^^^^\n" +
1384 				"Marker cannot be resolved to a type\n" +
1385 				"----------\n" +
1386 				"2. ERROR in X.java (at line 3)\n" +
1387 				"	interface K extends @Marker I, @Marker J {}\n" +
1388 				"	                                ^^^^^^\n" +
1389 				"Marker cannot be resolved to a type\n" +
1390 				"----------\n" +
1391 				"3. ERROR in X.java (at line 5)\n" +
1392 				"	public class X implements @Marker K, @Marker L {\n" +
1393 				"	                           ^^^^^^\n" +
1394 				"Marker cannot be resolved to a type\n" +
1395 				"----------\n" +
1396 				"4. ERROR in X.java (at line 5)\n" +
1397 				"	public class X implements @Marker K, @Marker L {\n" +
1398 				"	                                      ^^^^^^\n" +
1399 				"Marker cannot be resolved to a type\n" +
1400 				"----------\n");
1401 	}
1402 	// ReferenceExpression ::= Name Dimsopt '::' NonWildTypeArgumentsopt IdentifierOrNew
test037()1403 	public void test037() throws Exception {
1404 		this.runNegativeTest(
1405 				new String[] {
1406 					"X.java",
1407 					"interface I {\n" +
1408 					"    void foo(int x);\n" +
1409 					"}\n" +
1410 					"public class X  {\n" +
1411 					"    public static void main(String [] args) {\n" +
1412 					"        I i = @Marker Y. @Marker Z @Marker [] [] @Marker [] ::foo;\n" +
1413 					"        i.foo(10); \n" +
1414 					"        Zork z;\n" +
1415 					"    }\n" +
1416 					"}\n" +
1417 					"class Y {\n" +
1418 					"    static class Z {\n" +
1419 					"        public static void foo(int x) {\n" +
1420 					"	    System.out.println(x);\n" +
1421 					"        }\n" +
1422 					"    }\n" +
1423 					"}\n"
1424 				},
1425 				"----------\n" +
1426 				"1. ERROR in X.java (at line 6)\n" +
1427 				"	I i = @Marker Y. @Marker Z @Marker [] [] @Marker [] ::foo;\n" +
1428 				"	      ^^^^^^^\n" +
1429 				"Type annotations are not allowed on type names used to access static members\n" +
1430 				"----------\n" +
1431 				"2. ERROR in X.java (at line 6)\n" +
1432 				"	I i = @Marker Y. @Marker Z @Marker [] [] @Marker [] ::foo;\n" +
1433 				"	      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
1434 				"The type Y.Z[][][] does not define foo(int) that is applicable here\n" +
1435 				"----------\n" +
1436 				"3. ERROR in X.java (at line 6)\n" +
1437 				"	I i = @Marker Y. @Marker Z @Marker [] [] @Marker [] ::foo;\n" +
1438 				"	       ^^^^^^\n" +
1439 				"Marker cannot be resolved to a type\n" +
1440 				"----------\n" +
1441 				"4. ERROR in X.java (at line 6)\n" +
1442 				"	I i = @Marker Y. @Marker Z @Marker [] [] @Marker [] ::foo;\n" +
1443 				"	                  ^^^^^^\n" +
1444 				"Marker cannot be resolved to a type\n" +
1445 				"----------\n" +
1446 				"5. ERROR in X.java (at line 6)\n" +
1447 				"	I i = @Marker Y. @Marker Z @Marker [] [] @Marker [] ::foo;\n" +
1448 				"	                            ^^^^^^\n" +
1449 				"Marker cannot be resolved to a type\n" +
1450 				"----------\n" +
1451 				"6. ERROR in X.java (at line 6)\n" +
1452 				"	I i = @Marker Y. @Marker Z @Marker [] [] @Marker [] ::foo;\n" +
1453 				"	                                          ^^^^^^\n" +
1454 				"Marker cannot be resolved to a type\n" +
1455 				"----------\n" +
1456 				"7. ERROR in X.java (at line 8)\n" +
1457 				"	Zork z;\n" +
1458 				"	^^^^\n" +
1459 				"Zork cannot be resolved to a type\n" +
1460 				"----------\n");
1461 	}
1462 	// ReferenceExpression ::= Name BeginTypeArguments ReferenceExpressionTypeArgumentsAndTrunk '::' NonWildTypeArgumentsopt IdentifierOrNew
test038()1463 	public void test038() throws Exception {
1464 		this.runNegativeTest(
1465 				new String[] {
1466 					"X.java",
1467 					"interface I {\n" +
1468 					"    Y foo(int x);\n" +
1469 					"}\n" +
1470 					"public class X  {\n" +
1471 					"    class Z extends Y {\n" +
1472 					"        public Z(int x) {\n" +
1473 					"            super(x);\n" +
1474 					"            System.out.println();\n" +
1475 					"        }\n" +
1476 					"    }\n" +
1477 					"    public static void main(String [] args) {\n" +
1478 					"        i = @Marker W<@Marker Integer>::<@Marker String> new;\n" +
1479 					"    }\n" +
1480 					"}\n" +
1481 					"class W<T> extends Y {\n" +
1482 					"    public W(T x) {\n" +
1483 					"        super(0);\n" +
1484 					"        System.out.println(x);\n" +
1485 					"    }\n" +
1486 					"}\n" +
1487 					"class Y {\n" +
1488 					"    public Y(int x) {\n" +
1489 					"        System.out.println(x);\n" +
1490 					"    }\n" +
1491 					"}\n"
1492 
1493 
1494 				},
1495 				"----------\n" +
1496 				"1. ERROR in X.java (at line 12)\n" +
1497 				"	i = @Marker W<@Marker Integer>::<@Marker String> new;\n" +
1498 				"	^\n" +
1499 				"i cannot be resolved to a variable\n" +
1500 				"----------\n" +
1501 				"2. ERROR in X.java (at line 12)\n" +
1502 				"	i = @Marker W<@Marker Integer>::<@Marker String> new;\n" +
1503 				"	    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
1504 				"The target type of this expression must be a functional interface\n" +
1505 				"----------\n" +
1506 				"3. ERROR in X.java (at line 12)\n" +
1507 				"	i = @Marker W<@Marker Integer>::<@Marker String> new;\n" +
1508 				"	     ^^^^^^\n" +
1509 				"Marker cannot be resolved to a type\n" +
1510 				"----------\n" +
1511 				"4. ERROR in X.java (at line 12)\n" +
1512 				"	i = @Marker W<@Marker Integer>::<@Marker String> new;\n" +
1513 				"	               ^^^^^^\n" +
1514 				"Marker cannot be resolved to a type\n" +
1515 				"----------\n" +
1516 				"5. ERROR in X.java (at line 12)\n" +
1517 				"	i = @Marker W<@Marker Integer>::<@Marker String> new;\n" +
1518 				"	                                  ^^^^^^\n" +
1519 				"Marker cannot be resolved to a type\n" +
1520 				"----------\n");
1521 	}
1522 	// CastExpression ::= PushLPAREN Name PushRPAREN InsideCastExpressionLL1 UnaryExpressionNotPlusMinus
1523 	// CastExpression ::= PushLPAREN Name Dims PushRPAREN InsideCastExpression UnaryExpressionNotPlusMinus
1524 	// CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt PushRPAREN InsideCastExpression UnaryExpressionNotPlusMinus
1525 	// CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression '.' ClassOrInterfaceType Dimsopt PushRPAREN InsideCastExpressionWithQualifiedGenerics UnaryExpressionNotPlusMinus
test039()1526 	public void test039() throws Exception {
1527 		this.runNegativeTest(
1528 				new String[] {
1529 					"X.java",
1530 					"public class X  {\n" +
1531 					"    Object o = (@Marker X) null;\n" +
1532 					"    Object p = (@Marker X @Marker []) null;\n" +
1533 					"    Object q = (@Marker java. @Marker util. @Marker List<@Marker String> []) null;\n" +
1534 					"    Object r = (@Marker java. @Marker util.@Marker Map<@Marker String, @Marker String>.@Marker Entry @Marker []) null;\n" +
1535 					"}\n"
1536 				},
1537 				"----------\n" +
1538 				"1. ERROR in X.java (at line 2)\n" +
1539 				"	Object o = (@Marker X) null;\n" +
1540 				"	             ^^^^^^\n" +
1541 				"Marker cannot be resolved to a type\n" +
1542 				"----------\n" +
1543 				"2. ERROR in X.java (at line 3)\n" +
1544 				"	Object p = (@Marker X @Marker []) null;\n" +
1545 				"	             ^^^^^^\n" +
1546 				"Marker cannot be resolved to a type\n" +
1547 				"----------\n" +
1548 				"3. ERROR in X.java (at line 3)\n" +
1549 				"	Object p = (@Marker X @Marker []) null;\n" +
1550 				"	                       ^^^^^^\n" +
1551 				"Marker cannot be resolved to a type\n" +
1552 				"----------\n" +
1553 				"4. ERROR in X.java (at line 4)\n" +
1554 				"	Object q = (@Marker java. @Marker util. @Marker List<@Marker String> []) null;\n" +
1555 				"	            ^^^^^^^\n" +
1556 				"Illegally placed annotation: type annotations must directly precede the simple name of the type they are meant to affect (or the [] for arrays)\n" +
1557 				"----------\n" +
1558 				"5. ERROR in X.java (at line 4)\n" +
1559 				"	Object q = (@Marker java. @Marker util. @Marker List<@Marker String> []) null;\n" +
1560 				"	             ^^^^^^\n" +
1561 				"Marker cannot be resolved to a type\n" +
1562 				"----------\n" +
1563 				"6. ERROR in X.java (at line 4)\n" +
1564 				"	Object q = (@Marker java. @Marker util. @Marker List<@Marker String> []) null;\n" +
1565 				"	                          ^^^^^^^\n" +
1566 				"Syntax error, type annotations are illegal here\n" +
1567 				"----------\n" +
1568 				"7. ERROR in X.java (at line 4)\n" +
1569 				"	Object q = (@Marker java. @Marker util. @Marker List<@Marker String> []) null;\n" +
1570 				"	                                         ^^^^^^\n" +
1571 				"Marker cannot be resolved to a type\n" +
1572 				"----------\n" +
1573 				"8. ERROR in X.java (at line 4)\n" +
1574 				"	Object q = (@Marker java. @Marker util. @Marker List<@Marker String> []) null;\n" +
1575 				"	                                                      ^^^^^^\n" +
1576 				"Marker cannot be resolved to a type\n" +
1577 				"----------\n" +
1578 				"9. ERROR in X.java (at line 5)\n" +
1579 				"	Object r = (@Marker java. @Marker util.@Marker Map<@Marker String, @Marker String>.@Marker Entry @Marker []) null;\n" +
1580 				"	            ^^^^^^^\n" +
1581 				"Illegally placed annotation: type annotations must directly precede the simple name of the type they are meant to affect (or the [] for arrays)\n" +
1582 				"----------\n" +
1583 				"10. ERROR in X.java (at line 5)\n" +
1584 				"	Object r = (@Marker java. @Marker util.@Marker Map<@Marker String, @Marker String>.@Marker Entry @Marker []) null;\n" +
1585 				"	            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
1586 				"The member type Map.Entry<K,V> cannot be qualified with a parameterized type, since it is static. Remove arguments from qualifying type Map<String,String>\n" +
1587 				"----------\n" +
1588 				"11. ERROR in X.java (at line 5)\n" +
1589 				"	Object r = (@Marker java. @Marker util.@Marker Map<@Marker String, @Marker String>.@Marker Entry @Marker []) null;\n" +
1590 				"	             ^^^^^^\n" +
1591 				"Marker cannot be resolved to a type\n" +
1592 				"----------\n" +
1593 				"12. ERROR in X.java (at line 5)\n" +
1594 				"	Object r = (@Marker java. @Marker util.@Marker Map<@Marker String, @Marker String>.@Marker Entry @Marker []) null;\n" +
1595 				"	                          ^^^^^^^\n" +
1596 				"Syntax error, type annotations are illegal here\n" +
1597 				"----------\n" +
1598 				"13. ERROR in X.java (at line 5)\n" +
1599 				"	Object r = (@Marker java. @Marker util.@Marker Map<@Marker String, @Marker String>.@Marker Entry @Marker []) null;\n" +
1600 				"	                                       ^^^^^^^\n" +
1601 				"Type annotations are not allowed on type names used to access static members\n" +
1602 				"----------\n" +
1603 				"14. ERROR in X.java (at line 5)\n" +
1604 				"	Object r = (@Marker java. @Marker util.@Marker Map<@Marker String, @Marker String>.@Marker Entry @Marker []) null;\n" +
1605 				"	                                        ^^^^^^\n" +
1606 				"Marker cannot be resolved to a type\n" +
1607 				"----------\n" +
1608 				"15. ERROR in X.java (at line 5)\n" +
1609 				"	Object r = (@Marker java. @Marker util.@Marker Map<@Marker String, @Marker String>.@Marker Entry @Marker []) null;\n" +
1610 				"	                                                    ^^^^^^\n" +
1611 				"Marker cannot be resolved to a type\n" +
1612 				"----------\n" +
1613 				"16. ERROR in X.java (at line 5)\n" +
1614 				"	Object r = (@Marker java. @Marker util.@Marker Map<@Marker String, @Marker String>.@Marker Entry @Marker []) null;\n" +
1615 				"	                                                                    ^^^^^^\n" +
1616 				"Marker cannot be resolved to a type\n" +
1617 				"----------\n" +
1618 				"17. ERROR in X.java (at line 5)\n" +
1619 				"	Object r = (@Marker java. @Marker util.@Marker Map<@Marker String, @Marker String>.@Marker Entry @Marker []) null;\n" +
1620 				"	                                                                                    ^^^^^^\n" +
1621 				"Marker cannot be resolved to a type\n" +
1622 				"----------\n" +
1623 				"18. ERROR in X.java (at line 5)\n" +
1624 				"	Object r = (@Marker java. @Marker util.@Marker Map<@Marker String, @Marker String>.@Marker Entry @Marker []) null;\n" +
1625 				"	                                                                                                  ^^^^^^\n" +
1626 				"Marker cannot be resolved to a type\n" +
1627 				"----------\n");
1628 	}
1629 }
1630