Sat, 13 Apr 2013 12:25:44 +0100
8010659: Javac Crashes while building OpenJFX
Reviewed-by: jjg
Contributed-by: maurizio.cimadamore@oracle.com
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 { } |