CantAnnotateStaticClass.java revision 2453:3dfd962149b2
1168515Sgshapiro/* 2168515Sgshapiro * @test /nodynamiccopyright/ 3168515Sgshapiro * @bug 8006733 8006775 4132943Sgshapiro * @summary Ensure behavior for nested types is correct. 5168515Sgshapiro * @author Werner Dietl 6132943Sgshapiro * @compile CantAnnotateStaticClass.java 7168515Sgshapiro */ 890792Sgshapiro 9168515Sgshapiroimport java.util.List; 1090792Sgshapiroimport java.util.ArrayList; 11168515Sgshapiroimport java.util.HashMap; 12168515Sgshapiroimport java.lang.annotation.*; 1390792Sgshapiro 1490792Sgshapiroclass Top { 15168515Sgshapiro @Target(ElementType.TYPE_USE) @interface TA {} 16168515Sgshapiro @Target(ElementType.TYPE_USE) @interface TB1 {} 1790792Sgshapiro @Target(ElementType.TYPE_USE) @interface TB2 {} 18168515Sgshapiro @Target(ElementType.TYPE_USE) @interface TB3 {} 1990792Sgshapiro @Target(ElementType.TYPE_USE) @interface TB4 {} 20168515Sgshapiro @Target(ElementType.TYPE_USE) @interface TB5 {} 2190792Sgshapiro @Target(ElementType.TYPE_USE) @interface TB6 {} 2290792Sgshapiro @Target(ElementType.TYPE_USE) @interface TB7 {} 23168515Sgshapiro @Target(ElementType.TYPE_USE) @interface TB8 {} 24168515Sgshapiro @Target(ElementType.TYPE_USE) @interface TB9 {} 25168515Sgshapiro @Target(ElementType.TYPE_USE) @interface TB10 {} 26168515Sgshapiro @Target(ElementType.TYPE_USE) @interface TB11 {} 27168515Sgshapiro @Target(ElementType.TYPE_USE) @interface TB12 {} 28168515Sgshapiro @Target(ElementType.TYPE_USE) @interface TB13 {} 29168515Sgshapiro @Target(ElementType.TYPE_USE) @interface TB14 {} 30168515Sgshapiro @Target(ElementType.TYPE_USE) @interface TB15 {} 31168515Sgshapiro @Target(ElementType.TYPE_USE) @interface TB16 {} 32168515Sgshapiro @Target(ElementType.TYPE_USE) @interface TB17 {} 33168515Sgshapiro @Target(ElementType.TYPE_USE) @interface TB18 {} 3490792Sgshapiro @Target(ElementType.TYPE_USE) @interface TB19 {} 3590792Sgshapiro @Target(ElementType.TYPE_USE) @interface TB20 {} 36168515Sgshapiro @Target(ElementType.TYPE_USE) @interface TB21 {} 37168515Sgshapiro @Target(ElementType.TYPE_USE) @interface TB22 {} 38168515Sgshapiro @Target(ElementType.TYPE_USE) @interface TB23 {} 39168515Sgshapiro @Target(ElementType.TYPE_USE) @interface TB24 {} 40168515Sgshapiro @Target(ElementType.TYPE_USE) @interface TB25 {} 41168515Sgshapiro @Target(ElementType.TYPE_USE) @interface TB26 {} 42168515Sgshapiro @Target(ElementType.TYPE_USE) @interface TB27 {} 43168515Sgshapiro @Target(ElementType.TYPE_USE) @interface TB28 {} 4490792Sgshapiro @Target(ElementType.TYPE_USE) @interface TB29 {} 4590792Sgshapiro @Target(ElementType.TYPE_USE) @interface TB30 {} 46168515Sgshapiro @Target(ElementType.TYPE_USE) @interface TB31 {} 47168515Sgshapiro @Target(ElementType.TYPE_USE) @interface TB32 {} 48168515Sgshapiro @Target(ElementType.TYPE_USE) @interface TB33 {} 4990792Sgshapiro @Target(ElementType.TYPE_USE) @interface TB34 {} 5090792Sgshapiro @Target(ElementType.TYPE_USE) @interface TB35 {} 51168515Sgshapiro @Target(ElementType.TYPE_USE) @interface TB36 {} 52168515Sgshapiro @Target(ElementType.TYPE_USE) @interface TB37 {} 53168515Sgshapiro @Target(ElementType.TYPE_USE) @interface TB38 {} 54168515Sgshapiro @Target(ElementType.TYPE_USE) @interface TB39 {} 55168515Sgshapiro @Target(ElementType.TYPE_USE) @interface TB40 {} 56168515Sgshapiro @Target(ElementType.TYPE_USE) @interface TB41 {} 57168515Sgshapiro @Target(ElementType.TYPE_USE) @interface TC {} 58168515Sgshapiro 59168515Sgshapiro class Outer { 60168515Sgshapiro class Inner { 61168515Sgshapiro Object o1 = Top.this; 62168515Sgshapiro Object o2 = Outer.this; 63168515Sgshapiro Object o3 = this; 64168515Sgshapiro } 65168515Sgshapiro // Illegal 66168515Sgshapiro // static class SInner {} 67168515Sgshapiro // interface IInner {} 68168515Sgshapiro } 69168515Sgshapiro 70168515Sgshapiro // All combinations are OK 71168515Sgshapiro 72168515Sgshapiro Top.@TB1 Outer f1; 73168515Sgshapiro @TB2 Outer.Inner f1a; 74168515Sgshapiro Outer. @TC Inner f1b; 75168515Sgshapiro @TB3 Outer. @TC Inner f1c; 76168515Sgshapiro 77168515Sgshapiro @TA Top. @TB4 Outer f2; 78168515Sgshapiro @TA Top. @TB5 Outer.Inner f2a; 7990792Sgshapiro @TA Top. Outer. @TC Inner f2b; 8090792Sgshapiro @TA Top. @TB6 Outer. @TC Inner f2c; 81168515Sgshapiro 82168515Sgshapiro @TB7 Outer f1r() { return null; } 83168515Sgshapiro @TB8 Outer.Inner f1ra() { return null; } 84168515Sgshapiro Outer. @TC Inner f1rb() { return null; } 85168515Sgshapiro @TB9 Outer. @TC Inner f1rc() { return null; } 86168515Sgshapiro 8790792Sgshapiro void f1param(@TB41 Outer p, 88168515Sgshapiro @TB10 Outer.Inner p1, 89168515Sgshapiro Outer. @TC Inner p2, 90112810Sgshapiro @TB11 Outer. @TC Inner p3) { } 9190792Sgshapiro 92168515Sgshapiro void f1cast(Object o) { 9390792Sgshapiro Object l; 94112810Sgshapiro l = (@TB12 Outer) o; 95168515Sgshapiro l = (@TB13 Outer.Inner) o; 96168515Sgshapiro l = (Outer. @TC Inner) o; 97168515Sgshapiro l = (@TB14 Outer. @TC Inner) o; 98 } 99 100 List<@TB15 Outer> g1; 101 List<@TB16 Outer.Inner> g1a; 102 List<Outer. @TC Inner> g1b; 103 List<@TB17 Outer. @TC Inner> g1c; 104 105 List<@TA Top. @TB18 Outer> g2; 106 List<@TA Top. @TB19 Outer.Inner> g2a; 107 List<@TA Top. Outer. @TC Inner> g2b; 108 List<@TA Top. @TB20 Outer. @TC Inner> g2c; 109 110 List<@TB21 Outer> g1r() { return null; } 111 List<@TB22 Outer.Inner> g1ra() { return null; } 112 List<Outer. @TC Inner> g1rb() { return null; } 113 List<@TB23 Outer. @TC Inner> g1rc() { return null; } 114 115 void g1param(List<@TB24 Outer> p, 116 List<@TB25 Outer.Inner> p1, 117 List<Outer. @TC Inner> p2, 118 List<@TB26 Outer. @TC Inner> p3) { } 119 120 void g1new(Object o) { 121 Object l; 122 l = new @TB27 ArrayList<@TB28 Outer>(); 123 l = new @TB29 ArrayList<@TB30 Outer.Inner>(); 124 l = new @TB31 HashMap<String, Outer. @TC Inner>(); 125 l = new @TB32 HashMap<String, @TB33 Outer. Inner>(); 126 l = new @TB34 HashMap<String, @TB35 Outer. @TC Inner>(); 127 l = new @TB36 HashMap<String, @TA Top. Outer. @TC Inner>(); 128 l = new @TB37 HashMap<String, @TA Top. @TB38 Outer. Inner>(); 129 l = new @TB39 HashMap<String, @TA Top. @TB40 Outer. @TC Inner>(); 130 } 131} 132