aoqi@0: import java.lang.annotation.*; aoqi@0: import java.util.List; aoqi@0: aoqi@0: /* aoqi@0: * @test /nodynamiccopyright/ aoqi@0: * @bug 6843077 8006775 aoqi@0: * @summary test that compiler doesn't warn about annotated redundant casts aoqi@0: * @author Mahmood Ali aoqi@0: * @author Werner Dietl aoqi@0: * @compile/ref=LintCast.out -Xlint:cast -XDrawDiagnostics LintCast.java aoqi@0: */ aoqi@0: class LintCast { aoqi@0: void unparameterized() { aoqi@0: String s = "m"; aoqi@0: String s1 = (String)s; aoqi@0: String s2 = (@A String)s; aoqi@0: } aoqi@0: aoqi@0: void parameterized() { aoqi@0: List l = null; aoqi@0: List l1 = (List)l; aoqi@0: List l2 = (List<@A String>)l; aoqi@0: } aoqi@0: aoqi@0: void array() { aoqi@0: int @A [] a = null; aoqi@0: int[] a1 = (int[])a; aoqi@0: int[] a2 = (int @A [])a; aoqi@0: } aoqi@0: aoqi@0: void sameAnnotations() { aoqi@0: @A String annotated = null; aoqi@0: String unannotated = null; aoqi@0: aoqi@0: // compiler ignore annotated casts even if redundant aoqi@0: @A String anno1 = (@A String)annotated; aoqi@0: aoqi@0: // warn if redundant without an annotation aoqi@0: String anno2 = (String)annotated; aoqi@0: String unanno2 = (String)unannotated; aoqi@0: } aoqi@0: aoqi@0: void more() { aoqi@0: Object @A [] a = null; aoqi@0: Object[] a1 = (Object[])a; aoqi@0: Object[] a2 = (Object @A [])a; aoqi@0: aoqi@0: @A List l3 = null; aoqi@0: List l4 = (List)l3; aoqi@0: List l5 = (@A List)l3; aoqi@0: aoqi@0: List<@A String> l6 = null; aoqi@0: List l7 = (List)l6; aoqi@0: List l8 = (List<@A String>)l6; aoqi@0: aoqi@0: @A Object o = null; aoqi@0: Object o1 = (Object)o; aoqi@0: Object o2 = (@A Object)o; aoqi@0: aoqi@0: Outer. @A Inner oi = null; aoqi@0: Outer.Inner oi1 = (Outer.Inner)oi; aoqi@0: Outer.Inner oi2 = (Outer. @A Inner)oi; aoqi@0: } aoqi@0: aoqi@0: class Outer { class Inner {} } aoqi@0: } aoqi@0: aoqi@0: @Target({ElementType.TYPE_USE, ElementType.TYPE_PARAMETER}) aoqi@0: @interface A { }