langtools/test/tools/javac/lambda/8074381/T8074381b.java
changeset 29553 716d47f5a45e
equal deleted inserted replaced
29552:690d0becaf32 29553:716d47f5a45e
       
     1 /*
       
     2  * @test /nodynamiccopyright/
       
     3  * @bug 8074381
       
     4  * @summary java.lang.AssertionError during compiling
       
     5  * @compile/fail/ref=T8074381b.out -XDrawDiagnostics T8074381b.java
       
     6  */
       
     7 import java.util.function.BiConsumer;
       
     8 import java.util.function.Consumer;
       
     9 
       
    10 class T8074381b {
       
    11 
       
    12     @SuppressWarnings("unchecked")
       
    13     public Invocation resolve(Handler handler) {
       
    14         return new Invocation((t) -> handler.handle((String) t));
       
    15     }
       
    16 
       
    17     public static class Handler {
       
    18         public void handle(String s) {
       
    19             System.out.println(s);
       
    20         }
       
    21     }
       
    22 
       
    23     public static class Invocation<T> {
       
    24         public final ThrowingConsumer<T> consumer;
       
    25 
       
    26         public Invocation(final ThrowingConsumer<T> consumer) {
       
    27             this.consumer = consumer;
       
    28         }
       
    29     }
       
    30 
       
    31     @FunctionalInterface
       
    32     public interface ThrowingConsumer<T> extends BiConsumer<T,Consumer<Throwable>> {
       
    33         @Override
       
    34         default void accept(final T elem, final Consumer<Throwable> errorHandler) {
       
    35             try {
       
    36                 acceptThrows(elem);
       
    37             } catch (final Throwable e) {
       
    38                 errorHandler.accept(e);
       
    39             }
       
    40         }
       
    41 
       
    42         void acceptThrows(T elem) throws Throwable;
       
    43     }
       
    44 }