Tue, 12 Apr 2011 20:56:16 -0700
7034511: Loophole in typesafety
Summary: Type-variable substutution takes upper bound of replaced captured type-variable
Reviewed-by: dlsmith
mcimadamore@970 | 1 | /* |
mcimadamore@970 | 2 | * @test /nodynamiccopyright/ |
mcimadamore@970 | 3 | * @bug 7034511 |
mcimadamore@970 | 4 | * @summary Loophole in typesafety |
mcimadamore@970 | 5 | * @compile/fail/ref=T7034511a.out -XDrawDiagnostics T7034511a.java |
mcimadamore@970 | 6 | */ |
mcimadamore@970 | 7 | |
mcimadamore@970 | 8 | class T7034511a { |
mcimadamore@970 | 9 | |
mcimadamore@970 | 10 | interface A<T> { |
mcimadamore@970 | 11 | void foo(T x); |
mcimadamore@970 | 12 | } |
mcimadamore@970 | 13 | |
mcimadamore@970 | 14 | interface B<T> extends A<T[]> { } |
mcimadamore@970 | 15 | |
mcimadamore@970 | 16 | static abstract class C implements B<Integer> { |
mcimadamore@970 | 17 | <T extends B<?>> void test(T x, String[] ss) { |
mcimadamore@970 | 18 | x.foo(ss); |
mcimadamore@970 | 19 | } |
mcimadamore@970 | 20 | } |
mcimadamore@970 | 21 | } |