CantAnnotateStaticClass3.java revision 2628:8df25ec8c930
1/* 2 * @test /nodynamiccopyright/ 3 * @bug 8006733 8006775 8027262 4 * @summary Ensure behavior for nested types is correct. 5 * @author Werner Dietl 6 * @ignore 8057679 clarify error messages trying to annotate scoping 7 * @ignore 8057683 improve order of errors with type annotations 8 * @compile/fail/ref=CantAnnotateStaticClass3.out -XDrawDiagnostics CantAnnotateStaticClass3.java 9 */ 10 11import java.util.List; 12import java.util.ArrayList; 13import java.util.HashMap; 14import java.lang.annotation.*; 15 16class Top { 17 @Target(ElementType.TYPE_USE) 18 @interface TA {} 19 20 @Target(ElementType.TYPE_USE) 21 @interface TB {} 22 23 @Target(ElementType.TYPE_USE) 24 @interface TC {} 25 26 interface Outer { 27 class Inner { 28 // Object o1 = Top.this; 29 // Object o2 = Outer.this; 30 Object o3 = this; 31 } 32 static class SInner { 33 // Object o1 = Top.this; 34 // Object o2 = Outer.this; 35 Object o3 = this; 36 } 37 interface IInner { 38 // Object o1 = Top.this; 39 // Object o2 = Outer.this; 40 // Object o3 = this; 41 } 42 } 43 44 45 @TB Outer f1; 46 @TB Outer.Inner f1a; // err 47 @TB Outer.SInner f2a; // err 48 @TB Outer.IInner f3a; // err 49 50 Outer. @TC Inner f1b; 51 Outer. @TC SInner f2b; 52 Outer. @TC IInner f3b; 53 54 @TB Outer. @TC Inner f1c; // err 55 @TB Outer. @TC SInner f2c; // err 56 @TB Outer. @TC IInner f3c; // err 57 58 @TA Top. @TB Outer g1; // err 59 @TA Top. @TB Outer.Inner g1a; // err 60 @TA Top. @TB Outer.SInner g2a; // err 61 @TA Top. @TB Outer.IInner g3a; // err 62 63 @TA Top. Outer. @TC Inner g1b; // err 64 @TA Top. Outer. @TC SInner g2b; // err 65 @TA Top. Outer. @TC IInner g3b; // err 66 67 @TA Top. @TB Outer. @TC Inner g1c; // err 68 @TA Top. @TB Outer. @TC SInner g2c; // err 69 @TA Top. @TB Outer. @TC IInner g3c; // err 70 71 @TB Outer f1r() { return null; } 72 73 @TB Outer.Inner f1ra() { return null; } // err 74 @TB Outer.SInner f2ra() { return null; } // err 75 @TB Outer.IInner f3ra() { return null; } // err 76 77 Outer. @TC Inner f1rb() { return null; } 78 Outer. @TC SInner f2rb() { return null; } 79 Outer. @TC IInner f3rb() { return null; } 80 81 @TB Outer. @TC Inner f1rc() { return null; } // err 82 @TB Outer. @TC SInner f2rc() { return null; } // err 83 @TB Outer. @TC IInner f3rc() { return null; } // err 84 85 void f1param(@TB Outer p, 86 @TB Outer.Inner p1, // err 87 Outer. @TC Inner p2, 88 @TB Outer. @TC Inner p3) { } // err 89 void f2param(@TB Outer p, 90 @TB Outer.SInner p1, // err 91 Outer. @TC SInner p2, 92 @TB Outer. @TC SInner p3) { } // err 93 void f3param(@TB Outer p, 94 @TB Outer.IInner p1, // err 95 Outer. @TC IInner p2, 96 @TB Outer. @TC IInner p3) { } // err 97 98 void f1cast(Object o) { 99 Object l; 100 l = (@TB Outer) o; 101 l = (@TB Outer.Inner) o; // err 102 l = (Outer. @TC Inner) o; 103 l = (@TB Outer. @TC Inner) o; // err 104 } 105 void f2cast(Object o) { 106 Object l; 107 l = (@TB Outer) o; 108 l = (@TB Outer.SInner) o; // err 109 l = (Outer. @TC SInner) o; 110 l = (@TB Outer. @TC SInner) o; // err 111 } 112 void f3cast(Object o) { 113 Object l; 114 l = (@TB Outer) o; 115 l = (@TB Outer.IInner) o; // err 116 l = (Outer. @TC IInner) o; 117 l = (@TB Outer. @TC IInner) o; // err 118 } 119 120 List<@TB Outer> h1; 121 122 List<@TB Outer.Inner> h1a; // err 123 List<@TB Outer.SInner> h2a; // err 124 List<@TB Outer.IInner> h3a; // err 125 126 List<Outer. @TC Inner> h1b; 127 List<Outer. @TC SInner> h2b; 128 List<Outer. @TC IInner> h3b; 129 130 List<@TB Outer. @TC Inner> h1c; // err 131 List<@TB Outer. @TC SInner> h2c; // err 132 List<@TB Outer. @TC IInner> h3c; // err 133 134 List<@TA Top. @TB Outer> k1; // err 135 136 List<@TA Top. @TB Outer.Inner> k1a; // err 137 List<@TA Top. @TB Outer.SInner> k2a; // err 138 List<@TA Top. @TB Outer.IInner> k3a; // err 139 140 List<@TA Top. Outer. @TC Inner> k1b; // err 141 List<@TA Top. Outer. @TC SInner> k2b; // err 142 List<@TA Top. Outer. @TC IInner> k3b; // err 143 144 List<@TA Top. @TB Outer. @TC Inner> k1c; // err 145 List<@TA Top. @TB Outer. @TC SInner> k2c; // err 146 List<@TA Top. @TB Outer. @TC IInner> k3c; // err 147 148 149 List<@TB Outer> g1r() { return null; } 150 151 List<@TB Outer.Inner> g1ra() { return null; } // err 152 List<@TB Outer.SInner> g2ra() { return null; } // err 153 List<@TB Outer.IInner> g3ra() { return null; } // err 154 155 List<Outer. @TC Inner> g1rb() { return null; } 156 List<Outer. @TC SInner> g2rb() { return null; } 157 List<Outer. @TC IInner> g3rb() { return null; } 158 159 List<@TB Outer. @TC Inner> g1rc() { return null; } // err 160 List<@TB Outer. @TC SInner> g2rc() { return null; } // err 161 List<@TB Outer. @TC IInner> g3rc() { return null; } // err 162 163 void g1param(List<@TB Outer> p, 164 List<@TB Outer.Inner> p1, // err 165 List<Outer. @TC Inner> p2, 166 List<@TB Outer. @TC Inner> p3) { } // err 167 void g2param(List<@TB Outer> p, 168 List<@TB Outer.SInner> p1, // err 169 List<Outer. @TC SInner> p2, 170 List<@TB Outer. @TC SInner> p3) { } // err 171 void g3param(List<@TB Outer> p, 172 List<@TB Outer.IInner> p1, // err 173 List<Outer. @TC IInner> p2, 174 List<@TB Outer. @TC IInner> p3) { } // err 175 176 void g1new(Object o) { 177 Object l; 178 l = new @TB ArrayList<@TB Outer>(); 179 l = new @TB ArrayList<@TB Outer.Inner>(); // err 180 l = new @TB HashMap<String, Outer. @TC Inner>(); 181 l = new @TB HashMap<String, @TB Outer. Inner>(); // err 182 l = new @TB HashMap<String, @TB Outer. @TC Inner>(); // err 183 } 184 void g2new(Object o) { 185 Object l; 186 l = new @TB ArrayList<@TB Outer>(); 187 l = new @TB ArrayList<@TB Outer.SInner>(); // err 188 l = new @TB HashMap<String, Outer. @TC SInner>(); 189 l = new @TB HashMap<String, @TB Outer. SInner>(); // err 190 l = new @TB HashMap<String, @TB Outer. @TC SInner>(); // err 191 } 192 void g3new(Object o) { 193 Object l; 194 l = new @TB ArrayList<@TB Outer>(); 195 l = new @TB ArrayList<@TB Outer.IInner>(); // err 196 l = new @TB HashMap<String, Outer. @TC IInner>(); 197 l = new @TB HashMap<String, @TB Outer. IInner>(); // err 198 l = new @TB HashMap<String, @TB Outer. @TC IInner>(); // err 199 } 200 void g4new(Object o) { 201 Object l; 202 l = new @TB ArrayList<@TA Top. @TB Outer>(); // err 203 l = new @TB ArrayList<@TA Top. @TB Outer.IInner>(); // err 204 l = new @TB HashMap<String, @TA Top. Outer. @TC IInner>(); // err 205 l = new @TB HashMap<String, @TA Top. @TB Outer. IInner>(); // err 206 l = new @TB HashMap<String, @TA Top. @TB Outer. @TC IInner>(); // err 207 } 208} 209