lambda in result expression of explicitly typed lambda

Anna Kozlova anna.kozlova at jetbrains.com
Thu Feb 12 19:51:14 UTC 2015


Hi,

Consider the following code:
   
   {
         Supplier<Runnable > x = foo (() ->  () -> {});
    }

    static <T> Supplier<T> foo(Supplier<T> delegate) {
        return null;
    }

At the applicability check phase I expect B2 to contain <() -> {} -> T>,  and according to 18.2.1 it reduces to false ("If T is not a functional interface type (§9.8), the constraint reduces to false").
However 8u40 b23 compiles the code just fine, but why? 

Thank you,
Anna



More information about the compiler-dev mailing list