public class CrashRepro {
static class Box<T> {
static <T> Box<T> of(T t) {
return new Box<>();
}
<R> Box<R> map(MyFunction<T, R> f) {
return new Box<>();
}
}
interface MyConsumer<V> {
void accept(V v);
}
interface MyFunction<A, B> {
B apply(A a);
}
<V> void use(V v, MyConsumer<V> consumer) {}
void test(Box<Long> box) {
use(box, m -> m.map(e -> Box.of(getBoolean() ? e : 0L)));
}
Boolean getBoolean() {
return true;
}
}
./checker-framework-4.0.0/checker/bin/javac -processor nullness CrashRepro.java |& head -n 30
error: Enclosing type not found: type: Object supertype: Box<T extends Object>
; The Checker Framework crashed. Please report the crash. Version: Checker Framework 4.0.0.
Compilation unit: CrashRepro.java
Last visited tree at line 23 column 19:
use(box, m -> m.map(e -> Box.of(getBoolean() ? e : 0L)));
Exception: org.checkerframework.javacutil.BugInCF: Enclosing type not found: type: Object supertype: Box<T extends Object>; org.checkerframework.javacutil.BugInCF: Enclosing type not found: type: Object supertype: Box<T extends Object>
at org.checkerframework.framework.util.AnnotatedTypes.asOuterSuper(AnnotatedTypes.java:257)
at org.checkerframework.framework.util.AnnotatedTypes.addTypeVarMappings(AnnotatedTypes.java:537)
at org.checkerframework.framework.util.AnnotatedTypes.substituteTypeVariables(AnnotatedTypes.java:510)
at org.checkerframework.framework.util.AnnotatedTypes.asMemberOfImpl(AnnotatedTypes.java:433)
at org.checkerframework.framework.util.AnnotatedTypes.asMemberOf(AnnotatedTypes.java:362)
at org.checkerframework.framework.util.AnnotatedTypes.asMemberOfImpl(AnnotatedTypes.java:394)
at org.checkerframework.framework.util.AnnotatedTypes.asMemberOf(AnnotatedTypes.java:362)
at org.checkerframework.framework.util.AnnotatedTypes.asMemberOf(AnnotatedTypes.java:303)
at org.checkerframework.framework.type.AnnotatedTypeFactory.methodFromUse(AnnotatedTypeFactory.java:2509)
at org.checkerframework.framework.type.AnnotatedTypeFactory.methodFromUse(AnnotatedTypeFactory.java:2428)
at org.checkerframework.framework.type.GenericAnnotatedTypeFactory.methodFromUse(GenericAnnotatedTypeFactory.java:2234)
at org.checkerframework.framework.type.AnnotatedTypeFactory.methodFromUse(AnnotatedTypeFactory.java:2390)
at org.checkerframework.framework.type.TypeFromExpressionVisitor.visitMethodInvocation(TypeFromExpressionVisitor.java:393)
at org.checkerframework.framework.type.TypeFromExpressionVisitor.visitMethodInvocation(TypeFromExpressionVisitor.java:77)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1892)
at jdk.compiler/com.sun.source.util.SimpleTreeVisitor.visit(SimpleTreeVisitor.java:80)
at org.checkerframework.framework.type.TypeFromTree.fromExpression(TypeFromTree.java:41)
at org.checkerframework.framework.type.AnnotatedTypeFactory.fromExpression(AnnotatedTypeFactory.java:1763)
at org.checkerframework.framework.type.AnnotatedTypeFactory.getAnnotatedType(AnnotatedTypeFactory.java:1431)
at org.checkerframework.framework.flow.CFAbstractTransfer.getValueFromFactory(CFAbstractTransfer.java:222)
at org.checkerframework.framework.flow.CFAbstractTransfer.visitMethodInvocation(CFAbstractTransfer.java:1107)
at org.checkerframework.checker.nullness.KeyForTransfer.visitMethodInvocation(KeyForTransfer.java:52)
at org.checkerframework.checker.nullness.KeyForTransfer.visitMethodInvocation(KeyForTransfer.java:23)
at org.checkerframework.dataflow.cfg.node.MethodInvocationNode.accept(MethodInvocationNode.java:154)