Skip to content

AsSuperVisitor: type is not an erased subtype of supertype #4523

@cushon

Description

@cushon
import org.checkerframework.checker.nullness.qual.Nullable;

interface A<T extends A<T>> extends B<T> {}

interface B<T extends B<T>> {
  @Nullable
  T g();
}

class T {
  void f(A<?> x) {
    A<?> y = x.g() != null ? x.g() : x;
  }
}
$ ./checker-framework-3.12.0/checker/bin/javac -processor Nullness T.java |& head -n 30
error: Error in AnnotatedTypeMirror.fromExpression(KeyForAnnotatedTypeFactory, x.g() != null ? x.g() : x): AsSuperVisitor: type is not an erased subtype of supertype.
  type: B<T extends B<T extends B<T>>>
  superType: A
  ; The Checker Framework crashed.  Please report the crash.
  Compilation unit: T.java
  Last visited tree at line 10 column 1:
  class T {
  Exception: org.checkerframework.javacutil.BugInCF: AsSuperVisitor: type is not an erased subtype of supertype.
  type: B<T extends B<T extends B<T>>>
  superType: A; org.checkerframework.javacutil.BugInCF: AsSuperVisitor: type is not an erased subtype of supertype.
  type: B<T extends B<T extends B<T>>>
  superType: A
        at org.checkerframework.framework.type.AsSuperVisitor.errorTypeNotErasedSubtypeOfSuperType(AsSuperVisitor.java:145)
        at org.checkerframework.framework.type.AsSuperVisitor.visitDeclared_Declared(AsSuperVisitor.java:333)
        at org.checkerframework.framework.type.AsSuperVisitor.visitDeclared_Declared(AsSuperVisitor.java:29)
        at org.checkerframework.framework.util.AtmCombo.accept(AtmCombo.java:311)
        at org.checkerframework.framework.type.visitor.AbstractAtmComboVisitor.visit(AbstractAtmComboVisitor.java:65)
        at org.checkerframework.framework.type.AsSuperVisitor.visit(AsSuperVisitor.java:98)
        at org.checkerframework.framework.type.AsSuperVisitor.visitWildcard_NotTypvarNorWildcard(AsSuperVisitor.java:723)
        at org.checkerframework.framework.type.AsSuperVisitor.visitWildcard_Declared(AsSuperVisitor.java:739)
        at org.checkerframework.framework.type.AsSuperVisitor.visitWildcard_Declared(AsSuperVisitor.java:29)
        at org.checkerframework.framework.util.AtmCombo.accept(AtmCombo.java:627)

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions