Maurizio Cimadamore c269c9451b 8066974: Compiler doesn't infer method's generic type information in lambda body
Add loghic to avoid post-inference triggers on temporarty AST types

Reviewed-by: jlahoda, vromero
2014-12-18 13:21:44 +00:00

45 lines
1.2 KiB
Java

/*
* @test /nodynamiccopyright/
* @bug 8066974
* @summary Compiler doesn't infer method's generic type information in lambda body
* @compile/fail/ref=T8066974.out -XDrawDiagnostics T8066974.java
*/
class T8066974 {
static class Throwing<E extends Throwable> { }
static class RuntimeThrowing extends Throwing<RuntimeException> { }
static class CheckedThrowing extends Throwing<Exception> { }
interface Parameter {
<E extends Throwable> Object m(Throwing<E> tw) throws E;
}
interface Mapper<R> {
R m(Parameter p);
}
<Z> Z map(Mapper<Z> mz) { return null; }
<Z extends Throwable> Mapper<Throwing<Z>> mapper(Throwing<Z> tz) throws Z { return null; }
static class ThrowingMapper<X extends Throwable> implements Mapper<Throwing<X>> {
ThrowingMapper(Throwing<X> arg) throws X { }
@Override
public Throwing<X> m(Parameter p) {
return null;
}
}
void testRuntime(RuntimeThrowing rt) {
map(p->p.m(rt));
map(mapper(rt));
map(new ThrowingMapper<>(rt));
}
void testChecked(CheckedThrowing ct) {
map(p->p.m(ct));
map(mapper(ct));
map(new ThrowingMapper<>(ct));
}
}