3789983e89
Reviewed-by: darcy, ihse
45 lines
1.2 KiB
Java
45 lines
1.2 KiB
Java
/*
|
|
* @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;
|
|
}
|
|
}
|