/* * @test /nodynamiccopyright/ * @bug 8066974 8062373 * @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 { } static class RuntimeThrowing extends Throwing { } static class CheckedThrowing extends Throwing { } interface Parameter { Object m(Throwing tw) throws E; } interface Mapper { R m(Parameter p); } Z map(Mapper mz) { return null; } Mapper> mapper(Throwing tz) throws Z { return null; } static class ThrowingMapper implements Mapper> { ThrowingMapper(Throwing arg) throws X { } @Override public Throwing m(Parameter p) { return null; } } void testRuntime(RuntimeThrowing rt) { map(p->p.m(rt)); map(mapper(rt)); map(new ThrowingMapper<>(rt)); map(new ThrowingMapper<>(rt) {}); } void testChecked(CheckedThrowing ct) { map(p->p.m(ct)); map(mapper(ct)); map(new ThrowingMapper<>(ct)); map(new ThrowingMapper<>(ct) {}); } }