Skip to content

Enclosing type not found: type: Object supertype #7677

@cushon

Description

@cushon
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)

Metadata

Metadata

Assignees

Labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions