class InferenceFailBug { | |
interface Func1<T1, R> { | |
R apply(T1 v1); | |
void other(); | |
} | |
interface F1<T1, R> extends Func1<T1, R> { | |
default void other() {} | |
} | |
<T1, R> Func1<T1, R> func(F1<T1, R> f1) { return f1; } | |
interface Future<T> { | |
<R> Future<R> map(Func1<T, R> f1); | |
} | |
private Future<Integer> futureExample(Future<String> future) { | |
return future.map(func(s -> s.toUpperCase())).map(func(s -> s.length())); | |
} | |
} |