public class CrashRepro {
interface Iterator<E> {}
interface CheckedIterator<T, X extends Exception> {}
interface CheckedFunction<F, T, X extends Exception> {
T apply(F input) throws X;
}
<F, T, X extends Exception> CheckedIterator<T, X> transform(
Iterator<? extends F> fromIterator,
CheckedFunction<? super F, ? extends T, ? extends X> function) {
throw new UnsupportedOperationException();
}
interface Foo {
Bar toBar();
}
interface Bar {}
CheckedIterator<Bar, ?> run(Iterator<Foo> rows) {
return transform(rows, row -> row.toBar());
}
}
$ ~/checker-framework-4.0.0/checker/bin/javac -processor nullness CrashRepro.java
CrashRepro.java:23: error: [type.argument.inference.crashed] Type argument inference crashed for CrashRepro.transform
return transform(rows, row -> row.toBar());
^
error: An exception occurred: class org.checkerframework.framework.util.typeinference8.types.InferenceType cannot be cast to class org.checkerframework.framework.util.typeinference8.types.UseOfVariable (org.checkerframework.framework.util.typeinference8.types.InferenceType and org.checkerframework.framework.util.typeinference8.types.UseOfVariable are in unnamed module of loader java.net.URLClassLoader @35fb3008)
CrashRepro.java:23: error: [type.argument.inference.crashed] Type argument inference crashed for CrashRepro.transform
return transform(rows, row -> row.toBar());
^
error: An exception occurred: class org.checkerframework.framework.util.typeinference8.types.InferenceType cannot be cast to class org.checkerframework.framework.util.typeinference8.types.UseOfVariable (org.checkerframework.framework.util.typeinference8.types.InferenceType and org.checkerframework.framework.util.typeinference8.types.UseOfVariable are in unnamed module of loader java.net.URLClassLoader @35fb3008)
2 errors