| /* | |
| * @test /nodynamiccopyright/ | |
| * @bug 8074381 | |
| * @summary java.lang.AssertionError during compiling | |
| * @compile/fail/ref=T8074381b.out -XDrawDiagnostics T8074381b.java | |
| */ | |
| import java.util.function.BiConsumer; | |
| import java.util.function.Consumer; | |
| class T8074381b { | |
| @SuppressWarnings("unchecked") | |
| public Invocation resolve(Handler handler) { | |
| return new Invocation((t) -> handler.handle((String) t)); | |
| } | |
| public static class Handler { | |
| public void handle(String s) { | |
| System.out.println(s); | |
| } | |
| } | |
| public static class Invocation<T> { | |
| public final ThrowingConsumer<T> consumer; | |
| public Invocation(final ThrowingConsumer<T> consumer) { | |
| this.consumer = consumer; | |
| } | |
| } | |
| @FunctionalInterface | |
| public interface ThrowingConsumer<T> extends BiConsumer<T,Consumer<Throwable>> { | |
| @Override | |
| default void accept(final T elem, final Consumer<Throwable> errorHandler) { | |
| try { | |
| acceptThrows(elem); | |
| } catch (final Throwable e) { | |
| errorHandler.accept(e); | |
| } | |
| } | |
| void acceptThrows(T elem) throws Throwable; | |
| } | |
| } |