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

Wed, 27 Apr 2016 01:34:52 +0800

author
aoqi
date
Wed, 27 Apr 2016 01:34:52 +0800
changeset 0
959103a6100f
permissions
-rw-r--r--

Initial load
http://hg.openjdk.java.net/jdk8u/jdk8u/langtools/
changeset: 2573:53ca196be1ae
tag: jdk8u25-b17

aoqi@0 1 import java.lang.annotation.*;
aoqi@0 2 import java.util.List;
aoqi@0 3
aoqi@0 4 /*
aoqi@0 5 * @test /nodynamiccopyright/
aoqi@0 6 * @bug 6843077 8006775
aoqi@0 7 * @summary test that compiler doesn't warn about annotated redundant casts
aoqi@0 8 * @author Mahmood Ali
aoqi@0 9 * @author Werner Dietl
aoqi@0 10 * @compile/ref=LintCast.out -Xlint:cast -XDrawDiagnostics LintCast.java
aoqi@0 11 */
aoqi@0 12 class LintCast {
aoqi@0 13 void unparameterized() {
aoqi@0 14 String s = "m";
aoqi@0 15 String s1 = (String)s;
aoqi@0 16 String s2 = (@A String)s;
aoqi@0 17 }
aoqi@0 18
aoqi@0 19 void parameterized() {
aoqi@0 20 List<String> l = null;
aoqi@0 21 List<String> l1 = (List<String>)l;
aoqi@0 22 List<String> l2 = (List<@A String>)l;
aoqi@0 23 }
aoqi@0 24
aoqi@0 25 void array() {
aoqi@0 26 int @A [] a = null;
aoqi@0 27 int[] a1 = (int[])a;
aoqi@0 28 int[] a2 = (int @A [])a;
aoqi@0 29 }
aoqi@0 30
aoqi@0 31 void sameAnnotations() {
aoqi@0 32 @A String annotated = null;
aoqi@0 33 String unannotated = null;
aoqi@0 34
aoqi@0 35 // compiler ignore annotated casts even if redundant
aoqi@0 36 @A String anno1 = (@A String)annotated;
aoqi@0 37
aoqi@0 38 // warn if redundant without an annotation
aoqi@0 39 String anno2 = (String)annotated;
aoqi@0 40 String unanno2 = (String)unannotated;
aoqi@0 41 }
aoqi@0 42
aoqi@0 43 void more() {
aoqi@0 44 Object @A [] a = null;
aoqi@0 45 Object[] a1 = (Object[])a;
aoqi@0 46 Object[] a2 = (Object @A [])a;
aoqi@0 47
aoqi@0 48 @A List<String> l3 = null;
aoqi@0 49 List<String> l4 = (List<String>)l3;
aoqi@0 50 List<String> l5 = (@A List<String>)l3;
aoqi@0 51
aoqi@0 52 List<@A String> l6 = null;
aoqi@0 53 List<String> l7 = (List<String>)l6;
aoqi@0 54 List<String> l8 = (List<@A String>)l6;
aoqi@0 55
aoqi@0 56 @A Object o = null;
aoqi@0 57 Object o1 = (Object)o;
aoqi@0 58 Object o2 = (@A Object)o;
aoqi@0 59
aoqi@0 60 Outer. @A Inner oi = null;
aoqi@0 61 Outer.Inner oi1 = (Outer.Inner)oi;
aoqi@0 62 Outer.Inner oi2 = (Outer. @A Inner)oi;
aoqi@0 63 }
aoqi@0 64
aoqi@0 65 class Outer { class Inner {} }
aoqi@0 66 }
aoqi@0 67
aoqi@0 68 @Target({ElementType.TYPE_USE, ElementType.TYPE_PARAMETER})
aoqi@0 69 @interface A { }

mercurial