|
1 /* |
|
2 * @test /nodynamiccopyright/ |
|
3 * @bug 8177466 |
|
4 * @summary Add compiler support for local variable type-inference |
|
5 * @compile -source 9 ParserTest.java |
|
6 * @compile/fail/ref=ParserTest.out -XDrawDiagnostics ParserTest.java |
|
7 */ |
|
8 |
|
9 import java.lang.annotation.ElementType; |
|
10 import java.lang.annotation.Target; |
|
11 import java.util.function.Function; |
|
12 import java.util.List; |
|
13 |
|
14 class ParserTest<var> { |
|
15 static class TestClass { |
|
16 static class var { } //illegal |
|
17 } |
|
18 |
|
19 static class TestInterface { |
|
20 interface var { } //illegal |
|
21 } |
|
22 |
|
23 static class TestEnum { |
|
24 enum var { } //illegal |
|
25 } |
|
26 |
|
27 static class TestAnno { |
|
28 @interface var { } //illegal |
|
29 } |
|
30 |
|
31 @Target(ElementType.TYPE_USE) |
|
32 @interface TA { } |
|
33 |
|
34 @interface DA { } |
|
35 |
|
36 static class var extends RuntimeException { } //illegal |
|
37 |
|
38 var x = null; //illegal |
|
39 |
|
40 void test() { |
|
41 var[] x1 = null; //illegal |
|
42 var x2[] = null; //illegal |
|
43 var[][] x3 = null; //illegal |
|
44 var x4[][] = null; //illegal |
|
45 var[] x5 = null; //illegal |
|
46 var x6[] = null; //illegal |
|
47 var@TA[]@TA[] x7 = null; //illegal |
|
48 var x8@TA[]@TA[] = null; //illegal |
|
49 var x9 = null, y = null; //illegal |
|
50 final @DA var x10 = m(); //ok |
|
51 @DA final var x11 = m(); //ok |
|
52 } |
|
53 |
|
54 var m() { //illegal |
|
55 return null; |
|
56 } |
|
57 |
|
58 void test2(var x) { //error |
|
59 List<var> l1; //error |
|
60 List<? extends var> l2; //error |
|
61 List<? super var> l3; //error |
|
62 try { |
|
63 Function<var, String> f = (var x2) -> ""; //error |
|
64 } catch (var ex) { } //error |
|
65 } |
|
66 |
|
67 void test3(Object o) { |
|
68 boolean b1 = o instanceof var; //error |
|
69 Object o2 = (var)o; //error |
|
70 } |
|
71 } |