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