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