public class CrashRepro {
static <I, O> Generic<O> transform(Generic<I> input, Function<? super I, ? extends O> function) {
throw new UnsupportedOperationException();
}
interface Function<F, T> {
T apply(F f);
}
interface Generic<T> {}
static class GenericConverter {
static <T> Generic<T> passthru(Generic<T> optional) {
throw new UnsupportedOperationException();
}
}
interface Foo {
Generic<Generic<Object>> doubleGeneric();
}
void test(Generic<Foo> foos, Generic<Generic<Object>> defaultVal, boolean b) {
Generic<Generic<Generic<Object>>> calendarEventDataListFuture =
transform(
foos,
foo -> b ? transform(foo.doubleGeneric(), GenericConverter::passthru) : defaultVal);
}
}
./checker-framework-4.0.0/checker/bin/javac -processor nullness CrashRepro.java |& head -n 30
CrashRepro.java:24: error: [type.argument.inference.crashed] Type argument inference crashed for CrashRepro.transform
transform(
^
error: An exception occurred: Cannot invoke "org.checkerframework.framework.util.typeinference8.types.AbstractType.capture(org.checkerframework.framework.util.typeinference8.util.Java8InferenceContext)" because the return value of "org.checkerframework.framework.util.typeinference8.types.AbstractType.asSuper(javax.lang.model.type.TypeMirror)" is null
CrashRepro.java:24: error: [type.argument.inference.crashed] Type argument inference crashed for CrashRepro.transform
transform(
^
error: An exception occurred: Cannot invoke "org.checkerframework.framework.util.typeinference8.types.AbstractType.capture(org.checkerframework.framework.util.typeinference8.util.Java8InferenceContext)" because the return value of "org.checkerframework.framework.util.typeinference8.types.AbstractType.asSuper(javax.lang.model.type.TypeMirror)" is null
2 errors