test/tools/javac/generics/7034511/T7034511a.java

Wed, 17 Jul 2013 14:14:49 +0100

author
mcimadamore
date
Wed, 17 Jul 2013 14:14:49 +0100
changeset 1901
db2c539819dd
parent 1721
abd153854f16
child 2525
2eb010b6cb22
permissions
-rw-r--r--

7041019: Bogus type-variable substitution with array types with dependencies on accessibility check
Summary: call to upperBound() when performing type-variable substitution on element type leads to unsoundness
Reviewed-by: jjg

mcimadamore@970 1 /*
mcimadamore@970 2 * @test /nodynamiccopyright/
mcimadamore@1901 3 * @bug 7034511 7040883 7041019
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 }

mercurial