/* | |
* @test /nodynamiccopyright/ | |
* @bug 8141343 | |
* @summary Subtle semantics changes for union types in cast conversion | |
* @compile/fail/ref=T8141343.out -XDrawDiagnostics T8141343.java | |
*/ | |
class T8141343 { | |
interface Foo<X> { } | |
static class A extends Exception implements Foo<A> { } | |
static class B extends Exception implements Foo<B> { } | |
void test(boolean cond) { | |
try { | |
if (cond) { | |
throw new A(); | |
} else { | |
throw new B(); | |
} | |
} catch (A | B ex) { | |
Foo<Integer> fa = (Foo<Integer>)ex; | |
} | |
} | |
} |