test/tools/javac/annotations/typeAnnotations/failures/CantAnnotateStaticClass.java

Tue, 15 Oct 2013 15:57:13 -0700

author
jjg
date
Tue, 15 Oct 2013 15:57:13 -0700
changeset 2134
b0c086cd4520
parent 2103
b1b4a6dcc282
child 2525
2eb010b6cb22
permissions
-rw-r--r--

8026564: import changes from type-annotations forest
Reviewed-by: jjg
Contributed-by: wdietl@gmail.com, steve.sides@oracle.com

jjg@1521 1 /*
jjg@1521 2 * @test /nodynamiccopyright/
jjg@1521 3 * @bug 8006733 8006775
jjg@2134 4 * @summary Ensure behavior for nested types is correct.
jjg@1521 5 * @author Werner Dietl
jjg@2134 6 * @compile CantAnnotateStaticClass.java
jjg@1521 7 */
jjg@1521 8
jjg@1521 9 import java.util.List;
jjg@2134 10 import java.util.ArrayList;
jjg@2134 11 import java.util.HashMap;
jjg@1521 12 import java.lang.annotation.*;
jjg@1521 13
jjg@2134 14 class Top {
jjg@1521 15 @Target(ElementType.TYPE_USE)
jjg@2134 16 @interface TA {}
jjg@1521 17
jjg@2134 18 @Target(ElementType.TYPE_USE)
jjg@2134 19 @interface TB {}
jjg@2134 20
jjg@2134 21 @Target(ElementType.TYPE_USE)
jjg@2134 22 @interface TC {}
jjg@2134 23
jjg@2134 24 class Outer {
jjg@2134 25 class Inner {
jjg@2134 26 Object o1 = Top.this;
jjg@2134 27 Object o2 = Outer.this;
jjg@2134 28 Object o3 = this;
jjg@2134 29 }
jjg@2134 30 // Illegal
jjg@2134 31 // static class SInner {}
jjg@2134 32 // interface IInner {}
jjg@1521 33 }
jjg@1521 34
jjg@2134 35 // All combinations are OK
jjg@2134 36
jjg@2134 37 Top.@TB Outer f1;
jjg@2134 38 @TB Outer.Inner f1a;
jjg@2134 39 Outer. @TC Inner f1b;
jjg@2134 40 @TB Outer. @TC Inner f1c;
jjg@2134 41
jjg@2134 42 @TA Top. @TB Outer f2;
jjg@2134 43 @TA Top. @TB Outer.Inner f2a;
jjg@2134 44 @TA Top. Outer. @TC Inner f2b;
jjg@2134 45 @TA Top. @TB Outer. @TC Inner f2c;
jjg@2134 46
jjg@2134 47 @TB Outer f1r() { return null; }
jjg@2134 48 @TB Outer.Inner f1ra() { return null; }
jjg@2134 49 Outer. @TC Inner f1rb() { return null; }
jjg@2134 50 @TB Outer. @TC Inner f1rc() { return null; }
jjg@2134 51
jjg@2134 52 void f1param(@TB Outer p,
jjg@2134 53 @TB Outer.Inner p1,
jjg@2134 54 Outer. @TC Inner p2,
jjg@2134 55 @TB Outer. @TC Inner p3) { }
jjg@2134 56
jjg@2134 57 void f1cast(Object o) {
jjg@2134 58 Object l;
jjg@2134 59 l = (@TB Outer) o;
jjg@2134 60 l = (@TB Outer.Inner) o;
jjg@2134 61 l = (Outer. @TC Inner) o;
jjg@2134 62 l = (@TB Outer. @TC Inner) o;
jjg@1521 63 }
jjg@1521 64
jjg@2134 65 List<@TB Outer> g1;
jjg@2134 66 List<@TB Outer.Inner> g1a;
jjg@2134 67 List<Outer. @TC Inner> g1b;
jjg@2134 68 List<@TB Outer. @TC Inner> g1c;
jjg@2134 69
jjg@2134 70 List<@TA Top. @TB Outer> g2;
jjg@2134 71 List<@TA Top. @TB Outer.Inner> g2a;
jjg@2134 72 List<@TA Top. Outer. @TC Inner> g2b;
jjg@2134 73 List<@TA Top. @TB Outer. @TC Inner> g2c;
jjg@2134 74
jjg@2134 75 List<@TB Outer> g1r() { return null; }
jjg@2134 76 List<@TB Outer.Inner> g1ra() { return null; }
jjg@2134 77 List<Outer. @TC Inner> g1rb() { return null; }
jjg@2134 78 List<@TB Outer. @TC Inner> g1rc() { return null; }
jjg@2134 79
jjg@2134 80 void g1param(List<@TB Outer> p,
jjg@2134 81 List<@TB Outer.Inner> p1,
jjg@2134 82 List<Outer. @TC Inner> p2,
jjg@2134 83 List<@TB Outer. @TC Inner> p3) { }
jjg@2134 84
jjg@2134 85 void g1new(Object o) {
jjg@2134 86 Object l;
jjg@2134 87 l = new @TB ArrayList<@TB Outer>();
jjg@2134 88 l = new @TB ArrayList<@TB Outer.Inner>();
jjg@2134 89 l = new @TB HashMap<String, Outer. @TC Inner>();
jjg@2134 90 l = new @TB HashMap<String, @TB Outer. Inner>();
jjg@2134 91 l = new @TB HashMap<String, @TB Outer. @TC Inner>();
jjg@2134 92 l = new @TB HashMap<String, @TA Top. Outer. @TC Inner>();
jjg@2134 93 l = new @TB HashMap<String, @TA Top. @TB Outer. Inner>();
jjg@2134 94 l = new @TB HashMap<String, @TA Top. @TB Outer. @TC Inner>();
jjg@1521 95 }
jjg@1521 96 }

mercurial