Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BugInCF: Upper bounds should never be null or a declaration #5245

Closed
amalloy opened this issue Aug 5, 2022 · 1 comment · Fixed by #5349
Closed

BugInCF: Upper bounds should never be null or a declaration #5245

amalloy opened this issue Aug 5, 2022 · 1 comment · Fixed by #5349
Assignees
Labels

Comments

@amalloy
Copy link

amalloy commented Aug 5, 2022

Commands

$ ~/src/java/checker-framework-3.24.0/checker/bin/javac \
    -processor nullness CFRepro.java

Inputs

$ cat CFRepro.java
import java.util.List;

class CFRepro<E> {
  final CFRepro<List<String>> repro = new CFRepro<>(List.of());;
  <V extends E> CFRepro(V unknownObj) {
  }
}

Output

error: Error in AnnotatedTypeMirror.fromExpression(KeyForAnnotatedTypeFactory, new CFRepro<>(List.of())): Upper bounds should never be null or a declaration.
    new bound = E extends Object
    type = V
  ; The Checker Framework crashed.  Please report the crash.
  Compilation unit: CFRepro.java
  Last visited tree at line 3 column 1:
  class CFRepro<E> {
  Exception: org.checkerframework.javacutil.BugInCF: Upper bounds should never be null or a declaration.
    new bound = E extends Object
    type = V; org.checkerframework.javacutil.BugInCF: Upper bounds should never be null or a declaration.
    new bound = E extends Object
    type = V
  	at org.checkerframework.framework.type.AnnotatedTypeMirror.checkBound(AnnotatedTypeMirror.java:1479)
  	at org.checkerframework.framework.type.AnnotatedTypeMirror.access$1200(AnnotatedTypeMirror.java:54)
  	at org.checkerframework.framework.type.AnnotatedTypeMirror$AnnotatedTypeVariable.setUpperBound(AnnotatedTypeMirror.java:1633)
  	at org.checkerframework.framework.type.AnnotatedTypeCopier.visitTypeVariable(AnnotatedTypeCopier.java:240)
  	at org.checkerframework.framework.type.TypeVariableSubstitutor$Visitor.visitTypeVariable(TypeVariableSubstitutor.java:173)
  	at org.checkerframework.framework.type.TypeVariableSubstitutor$Visitor.visitTypeVariable(TypeVariableSubstitutor.java:79)
  	at org.checkerframework.framework.type.AnnotatedTypeMirror$AnnotatedTypeVariable.accept(AnnotatedTypeMirror.java:1549)
  	at org.checkerframework.framework.type.AnnotatedTypeCopier.visit(AnnotatedTypeCopier.java:100)
  	at org.checkerframework.framework.type.AnnotatedTypeCopier.visitExecutable(AnnotatedTypeCopier.java:191)
  	at org.checkerframework.framework.type.AnnotatedTypeCopier.visitExecutable(AnnotatedTypeCopier.java:42)
  	at org.checkerframework.framework.type.AnnotatedTypeMirror$AnnotatedExecutableType.accept(AnnotatedTypeMirror.java:1149)
  	at org.checkerframework.framework.type.AnnotatedTypeCopier.visit(AnnotatedTypeCopier.java:93)
  	at org.checkerframework.framework.type.TypeVariableSubstitutor.substitute(TypeVariableSubstitutor.java:32)
  	at org.checkerframework.framework.util.AnnotatedTypes.substituteTypeVariables(AnnotatedTypes.java:508)
  	at org.checkerframework.framework.util.AnnotatedTypes.asMemberOfImpl(AnnotatedTypes.java:468)
  	at org.checkerframework.framework.util.AnnotatedTypes.asMemberOf(AnnotatedTypes.java:402)
  	at org.checkerframework.framework.util.AnnotatedTypes.asMemberOf(AnnotatedTypes.java:343)
  	at org.checkerframework.framework.type.AnnotatedTypeFactory.constructorFromUse(AnnotatedTypeFactory.java:2609)
  	at org.checkerframework.framework.type.GenericAnnotatedTypeFactory.constructorFromUse(GenericAnnotatedTypeFactory.java:1719)
  	at org.checkerframework.checker.nullness.KeyForAnnotatedTypeFactory.constructorFromUse(KeyForAnnotatedTypeFactory.java:104)
  	at org.checkerframework.framework.type.TypeFromExpressionVisitor.visitNewClass(TypeFromExpressionVisitor.java:348)
  	at org.checkerframework.framework.type.TypeFromExpressionVisitor.visitNewClass(TypeFromExpressionVisitor.java:75)
  	at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCNewClass.accept(JCTree.java:1727)
  	at jdk.compiler/com.sun.source.util.SimpleTreeVisitor.visit(SimpleTreeVisitor.java:80)
  	at org.checkerframework.framework.type.TypeFromTree.fromExpression(TypeFromTree.java:40)
  	at org.checkerframework.framework.type.AnnotatedTypeFactory.fromExpression(AnnotatedTypeFactory.java:1591)
  	at org.checkerframework.framework.type.AnnotatedTypeFactory.getAnnotatedType(AnnotatedTypeFactory.java:1281)
  	at org.checkerframework.framework.flow.CFAbstractTransfer.getValueFromFactory(CFAbstractTransfer.java:204)
  	at org.checkerframework.framework.flow.CFAbstractTransfer.visitNode(CFAbstractTransfer.java:524)
  	at org.checkerframework.framework.flow.CFAbstractTransfer.visitNode(CFAbstractTransfer.java:94)
  	at org.checkerframework.dataflow.cfg.node.AbstractNodeVisitor.visitObjectCreation(AbstractNodeVisitor.java:338)
  	at org.checkerframework.framework.flow.CFAbstractTransfer.visitObjectCreation(CFAbstractTransfer.java:919)
  	at org.checkerframework.framework.flow.CFAbstractTransfer.visitObjectCreation(CFAbstractTransfer.java:94)
  	at org.checkerframework.dataflow.cfg.node.ObjectCreationNode.accept(ObjectCreationNode.java:63)
  	at org.checkerframework.dataflow.analysis.AbstractAnalysis.callTransferFunction(AbstractAnalysis.java:349)
  	at org.checkerframework.dataflow.analysis.ForwardAnalysisImpl.callTransferFunction(ForwardAnalysisImpl.java:372)
  	at org.checkerframework.dataflow.analysis.ForwardAnalysisImpl.performAnalysisBlock(ForwardAnalysisImpl.java:151)
  	at org.checkerframework.dataflow.analysis.ForwardAnalysisImpl.performAnalysis(ForwardAnalysisImpl.java:105)
  	at org.checkerframework.framework.flow.CFAbstractAnalysis.performAnalysis(CFAbstractAnalysis.java:146)
  	at org.checkerframework.framework.type.GenericAnnotatedTypeFactory.analyze(GenericAnnotatedTypeFactory.java:1507)
  	at org.checkerframework.framework.type.GenericAnnotatedTypeFactory.performFlowAnalysis(GenericAnnotatedTypeFactory.java:1354)
  	at org.checkerframework.framework.type.GenericAnnotatedTypeFactory.checkAndPerformFlowAnalysis(GenericAnnotatedTypeFactory.java:1839)
  	at org.checkerframework.framework.type.GenericAnnotatedTypeFactory.preProcessClassTree(GenericAnnotatedTypeFactory.java:414)
  	at org.checkerframework.common.basetype.BaseTypeVisitor.visitClass(BaseTypeVisitor.java:475)
  	at org.checkerframework.common.basetype.BaseTypeVisitor.visitClass(BaseTypeVisitor.java:180)
  	at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:808)
  	at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:56)
  	at org.checkerframework.framework.source.SourceVisitor.visit(SourceVisitor.java:82)
  	at org.checkerframework.framework.source.SourceChecker.typeProcess(SourceChecker.java:992)
  	at org.checkerframework.common.basetype.BaseTypeChecker.typeProcess(BaseTypeChecker.java:542)
  	at org.checkerframework.common.basetype.BaseTypeChecker.typeProcess(BaseTypeChecker.java:535)
  	at org.checkerframework.javacutil.AbstractTypeProcessor$AttributionTaskListener.finished(AbstractTypeProcessor.java:188)
  	at jdk.compiler/com.sun.tools.javac.api.ClientCodeWrapper$WrappedTaskListener.finished(ClientCodeWrapper.java:828)
  	at jdk.compiler/com.sun.tools.javac.api.MultiTaskListener.finished(MultiTaskListener.java:132)
  	at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1419)
  	at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1376)
  	at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:972)
  	at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:311)
  	at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:170)
  	at jdk.compiler/com.sun.tools.javac.Main.compile(Main.java:57)
  	at jdk.compiler/com.sun.tools.javac.Main.main(Main.java:43)
  Caused by: java.lang.Throwable
  	at org.checkerframework.javacutil.BugInCF.<init>(BugInCF.java:34)
  	... 61 more

  Underlying Exception: java.lang.Throwable; java.lang.Throwable
  	at org.checkerframework.javacutil.BugInCF.<init>(BugInCF.java:34)
  	at org.checkerframework.framework.type.AnnotatedTypeMirror.checkBound(AnnotatedTypeMirror.java:1479)
  	at org.checkerframework.framework.type.AnnotatedTypeMirror.access$1200(AnnotatedTypeMirror.java:54)
  	at org.checkerframework.framework.type.AnnotatedTypeMirror$AnnotatedTypeVariable.setUpperBound(AnnotatedTypeMirror.java:1633)
  	at org.checkerframework.framework.type.AnnotatedTypeCopier.visitTypeVariable(AnnotatedTypeCopier.java:240)
  	at org.checkerframework.framework.type.TypeVariableSubstitutor$Visitor.visitTypeVariable(TypeVariableSubstitutor.java:173)
  	at org.checkerframework.framework.type.TypeVariableSubstitutor$Visitor.visitTypeVariable(TypeVariableSubstitutor.java:79)
  	at org.checkerframework.framework.type.AnnotatedTypeMirror$AnnotatedTypeVariable.accept(AnnotatedTypeMirror.java:1549)
  	at org.checkerframework.framework.type.AnnotatedTypeCopier.visit(AnnotatedTypeCopier.java:100)
  	at org.checkerframework.framework.type.AnnotatedTypeCopier.visitExecutable(AnnotatedTypeCopier.java:191)
  	at org.checkerframework.framework.type.AnnotatedTypeCopier.visitExecutable(AnnotatedTypeCopier.java:42)
  	at org.checkerframework.framework.type.AnnotatedTypeMirror$AnnotatedExecutableType.accept(AnnotatedTypeMirror.java:1149)
  	at org.checkerframework.framework.type.AnnotatedTypeCopier.visit(AnnotatedTypeCopier.java:93)
  	at org.checkerframework.framework.type.TypeVariableSubstitutor.substitute(TypeVariableSubstitutor.java:32)
  	at org.checkerframework.framework.util.AnnotatedTypes.substituteTypeVariables(AnnotatedTypes.java:508)
  	at org.checkerframework.framework.util.AnnotatedTypes.asMemberOfImpl(AnnotatedTypes.java:468)
  	at org.checkerframework.framework.util.AnnotatedTypes.asMemberOf(AnnotatedTypes.java:402)
  	at org.checkerframework.framework.util.AnnotatedTypes.asMemberOf(AnnotatedTypes.java:343)
  	at org.checkerframework.framework.type.AnnotatedTypeFactory.constructorFromUse(AnnotatedTypeFactory.java:2609)
  	at org.checkerframework.framework.type.GenericAnnotatedTypeFactory.constructorFromUse(GenericAnnotatedTypeFactory.java:1719)
  	at org.checkerframework.checker.nullness.KeyForAnnotatedTypeFactory.constructorFromUse(KeyForAnnotatedTypeFactory.java:104)
  	at org.checkerframework.framework.type.TypeFromExpressionVisitor.visitNewClass(TypeFromExpressionVisitor.java:348)
  	at org.checkerframework.framework.type.TypeFromExpressionVisitor.visitNewClass(TypeFromExpressionVisitor.java:75)
  	at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCNewClass.accept(JCTree.java:1727)
  	at jdk.compiler/com.sun.source.util.SimpleTreeVisitor.visit(SimpleTreeVisitor.java:80)
  	at org.checkerframework.framework.type.TypeFromTree.fromExpression(TypeFromTree.java:40)
  	at org.checkerframework.framework.type.AnnotatedTypeFactory.fromExpression(AnnotatedTypeFactory.java:1591)
  	at org.checkerframework.framework.type.AnnotatedTypeFactory.getAnnotatedType(AnnotatedTypeFactory.java:1281)
  	at org.checkerframework.framework.flow.CFAbstractTransfer.getValueFromFactory(CFAbstractTransfer.java:204)
  	at org.checkerframework.framework.flow.CFAbstractTransfer.visitNode(CFAbstractTransfer.java:524)
  	at org.checkerframework.framework.flow.CFAbstractTransfer.visitNode(CFAbstractTransfer.java:94)
  	at org.checkerframework.dataflow.cfg.node.AbstractNodeVisitor.visitObjectCreation(AbstractNodeVisitor.java:338)
  	at org.checkerframework.framework.flow.CFAbstractTransfer.visitObjectCreation(CFAbstractTransfer.java:919)
  	at org.checkerframework.framework.flow.CFAbstractTransfer.visitObjectCreation(CFAbstractTransfer.java:94)
  	at org.checkerframework.dataflow.cfg.node.ObjectCreationNode.accept(ObjectCreationNode.java:63)
  	at org.checkerframework.dataflow.analysis.AbstractAnalysis.callTransferFunction(AbstractAnalysis.java:349)
  	at org.checkerframework.dataflow.analysis.ForwardAnalysisImpl.callTransferFunction(ForwardAnalysisImpl.java:372)
  	at org.checkerframework.dataflow.analysis.ForwardAnalysisImpl.performAnalysisBlock(ForwardAnalysisImpl.java:151)
  	at org.checkerframework.dataflow.analysis.ForwardAnalysisImpl.performAnalysis(ForwardAnalysisImpl.java:105)
  	at org.checkerframework.framework.flow.CFAbstractAnalysis.performAnalysis(CFAbstractAnalysis.java:146)
  	at org.checkerframework.framework.type.GenericAnnotatedTypeFactory.analyze(GenericAnnotatedTypeFactory.java:1507)
  	at org.checkerframework.framework.type.GenericAnnotatedTypeFactory.performFlowAnalysis(GenericAnnotatedTypeFactory.java:1354)
  	at org.checkerframework.framework.type.GenericAnnotatedTypeFactory.checkAndPerformFlowAnalysis(GenericAnnotatedTypeFactory.java:1839)
  	at org.checkerframework.framework.type.GenericAnnotatedTypeFactory.preProcessClassTree(GenericAnnotatedTypeFactory.java:414)
  	at org.checkerframework.common.basetype.BaseTypeVisitor.visitClass(BaseTypeVisitor.java:475)
  	at org.checkerframework.common.basetype.BaseTypeVisitor.visitClass(BaseTypeVisitor.java:180)
  	at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:808)
  	at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:56)
  	at org.checkerframework.framework.source.SourceVisitor.visit(SourceVisitor.java:82)
  	at org.checkerframework.framework.source.SourceChecker.typeProcess(SourceChecker.java:992)
  	at org.checkerframework.common.basetype.BaseTypeChecker.typeProcess(BaseTypeChecker.java:542)
  	at org.checkerframework.common.basetype.BaseTypeChecker.typeProcess(BaseTypeChecker.java:535)
  	at org.checkerframework.javacutil.AbstractTypeProcessor$AttributionTaskListener.finished(AbstractTypeProcessor.java:188)
  	at jdk.compiler/com.sun.tools.javac.api.ClientCodeWrapper$WrappedTaskListener.finished(ClientCodeWrapper.java:828)
  	at jdk.compiler/com.sun.tools.javac.api.MultiTaskListener.finished(MultiTaskListener.java:132)
  	at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1419)
  	at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1376)
  	at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:972)
  	at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:311)
  	at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:170)
  	at jdk.compiler/com.sun.tools.javac.Main.compile(Main.java:57)
  	at jdk.compiler/com.sun.tools.javac.Main.main(Main.java:43)
error: Error in AnnotatedTypeMirror.fromExpression(NullnessAnnotatedTypeFactory, new CFRepro<>(List.of())): Upper bounds should never be null or a declaration.
    new bound = E extends @Initialized @Nullable Object
    type = V
  ; The Checker Framework crashed.  Please report the crash.
  Compilation unit: CFRepro.java
  Last visited tree at line 3 column 1:
  class CFRepro<E> {
  Exception: org.checkerframework.javacutil.BugInCF: Upper bounds should never be null or a declaration.
    new bound = E extends @Initialized @Nullable Object
    type = V; org.checkerframework.javacutil.BugInCF: Upper bounds should never be null or a declaration.
    new bound = E extends @Initialized @Nullable Object
    type = V
  	at org.checkerframework.framework.type.AnnotatedTypeMirror.checkBound(AnnotatedTypeMirror.java:1479)
  	at org.checkerframework.framework.type.AnnotatedTypeMirror.access$1200(AnnotatedTypeMirror.java:54)
  	at org.checkerframework.framework.type.AnnotatedTypeMirror$AnnotatedTypeVariable.setUpperBound(AnnotatedTypeMirror.java:1633)
  	at org.checkerframework.framework.type.AnnotatedTypeCopier.visitTypeVariable(AnnotatedTypeCopier.java:240)
  	at org.checkerframework.framework.type.TypeVariableSubstitutor$Visitor.visitTypeVariable(TypeVariableSubstitutor.java:173)
  	at org.checkerframework.framework.type.TypeVariableSubstitutor$Visitor.visitTypeVariable(TypeVariableSubstitutor.java:79)
  	at org.checkerframework.framework.type.AnnotatedTypeMirror$AnnotatedTypeVariable.accept(AnnotatedTypeMirror.java:1549)
  	at org.checkerframework.framework.type.AnnotatedTypeCopier.visit(AnnotatedTypeCopier.java:100)
  	at org.checkerframework.framework.type.AnnotatedTypeCopier.visitExecutable(AnnotatedTypeCopier.java:191)
  	at org.checkerframework.framework.type.AnnotatedTypeCopier.visitExecutable(AnnotatedTypeCopier.java:42)
  	at org.checkerframework.framework.type.AnnotatedTypeMirror$AnnotatedExecutableType.accept(AnnotatedTypeMirror.java:1149)
  	at org.checkerframework.framework.type.AnnotatedTypeCopier.visit(AnnotatedTypeCopier.java:93)
  	at org.checkerframework.framework.type.TypeVariableSubstitutor.substitute(TypeVariableSubstitutor.java:32)
  	at org.checkerframework.framework.util.AnnotatedTypes.substituteTypeVariables(AnnotatedTypes.java:508)
  	at org.checkerframework.framework.util.AnnotatedTypes.asMemberOfImpl(AnnotatedTypes.java:468)
  	at org.checkerframework.framework.util.AnnotatedTypes.asMemberOf(AnnotatedTypes.java:402)
  	at org.checkerframework.framework.util.AnnotatedTypes.asMemberOf(AnnotatedTypes.java:343)
  	at org.checkerframework.framework.type.AnnotatedTypeFactory.constructorFromUse(AnnotatedTypeFactory.java:2609)
  	at org.checkerframework.framework.type.GenericAnnotatedTypeFactory.constructorFromUse(GenericAnnotatedTypeFactory.java:1719)
  	at org.checkerframework.framework.type.TypeFromExpressionVisitor.visitNewClass(TypeFromExpressionVisitor.java:348)
  	at org.checkerframework.framework.type.TypeFromExpressionVisitor.visitNewClass(TypeFromExpressionVisitor.java:75)
  	at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCNewClass.accept(JCTree.java:1727)
  	at jdk.compiler/com.sun.source.util.SimpleTreeVisitor.visit(SimpleTreeVisitor.java:80)
  	at org.checkerframework.framework.type.TypeFromTree.fromExpression(TypeFromTree.java:40)
  	at org.checkerframework.framework.type.AnnotatedTypeFactory.fromExpression(AnnotatedTypeFactory.java:1591)
  	at org.checkerframework.framework.type.AnnotatedTypeFactory.getAnnotatedType(AnnotatedTypeFactory.java:1281)
  	at org.checkerframework.framework.flow.CFAbstractTransfer.getValueFromFactory(CFAbstractTransfer.java:204)
  	at org.checkerframework.framework.flow.CFAbstractTransfer.visitNode(CFAbstractTransfer.java:524)
  	at org.checkerframework.framework.flow.CFAbstractTransfer.visitNode(CFAbstractTransfer.java:94)
  	at org.checkerframework.dataflow.cfg.node.AbstractNodeVisitor.visitObjectCreation(AbstractNodeVisitor.java:338)
  	at org.checkerframework.framework.flow.CFAbstractTransfer.visitObjectCreation(CFAbstractTransfer.java:919)
  	at org.checkerframework.framework.flow.CFAbstractTransfer.visitObjectCreation(CFAbstractTransfer.java:94)
  	at org.checkerframework.dataflow.cfg.node.ObjectCreationNode.accept(ObjectCreationNode.java:63)
  	at org.checkerframework.dataflow.analysis.AbstractAnalysis.callTransferFunction(AbstractAnalysis.java:349)
  	at org.checkerframework.dataflow.analysis.ForwardAnalysisImpl.callTransferFunction(ForwardAnalysisImpl.java:372)
  	at org.checkerframework.dataflow.analysis.ForwardAnalysisImpl.performAnalysisBlock(ForwardAnalysisImpl.java:151)
  	at org.checkerframework.dataflow.analysis.ForwardAnalysisImpl.performAnalysis(ForwardAnalysisImpl.java:105)
  	at org.checkerframework.framework.flow.CFAbstractAnalysis.performAnalysis(CFAbstractAnalysis.java:146)
  	at org.checkerframework.framework.type.GenericAnnotatedTypeFactory.analyze(GenericAnnotatedTypeFactory.java:1507)
  	at org.checkerframework.framework.type.GenericAnnotatedTypeFactory.performFlowAnalysis(GenericAnnotatedTypeFactory.java:1354)
  	at org.checkerframework.framework.type.GenericAnnotatedTypeFactory.checkAndPerformFlowAnalysis(GenericAnnotatedTypeFactory.java:1839)
  	at org.checkerframework.framework.type.GenericAnnotatedTypeFactory.preProcessClassTree(GenericAnnotatedTypeFactory.java:414)
  	at org.checkerframework.common.basetype.BaseTypeVisitor.visitClass(BaseTypeVisitor.java:475)
  	at org.checkerframework.common.basetype.BaseTypeVisitor.visitClass(BaseTypeVisitor.java:180)
  	at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:808)
  	at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:56)
  	at org.checkerframework.framework.source.SourceVisitor.visit(SourceVisitor.java:82)
  	at org.checkerframework.framework.source.SourceChecker.typeProcess(SourceChecker.java:992)
  	at org.checkerframework.common.basetype.BaseTypeChecker.typeProcess(BaseTypeChecker.java:542)
  	at org.checkerframework.javacutil.AbstractTypeProcessor$AttributionTaskListener.finished(AbstractTypeProcessor.java:188)
  	at jdk.compiler/com.sun.tools.javac.api.ClientCodeWrapper$WrappedTaskListener.finished(ClientCodeWrapper.java:828)
  	at jdk.compiler/com.sun.tools.javac.api.MultiTaskListener.finished(MultiTaskListener.java:132)
  	at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1419)
  	at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1376)
  	at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:972)
  	at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:311)
  	at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:170)
  	at jdk.compiler/com.sun.tools.javac.Main.compile(Main.java:57)
  	at jdk.compiler/com.sun.tools.javac.Main.main(Main.java:43)
  Caused by: java.lang.Throwable
  	at org.checkerframework.javacutil.BugInCF.<init>(BugInCF.java:34)
  	... 59 more

  Underlying Exception: java.lang.Throwable; java.lang.Throwable
  	at org.checkerframework.javacutil.BugInCF.<init>(BugInCF.java:34)
  	at org.checkerframework.framework.type.AnnotatedTypeMirror.checkBound(AnnotatedTypeMirror.java:1479)
  	at org.checkerframework.framework.type.AnnotatedTypeMirror.access$1200(AnnotatedTypeMirror.java:54)
  	at org.checkerframework.framework.type.AnnotatedTypeMirror$AnnotatedTypeVariable.setUpperBound(AnnotatedTypeMirror.java:1633)
  	at org.checkerframework.framework.type.AnnotatedTypeCopier.visitTypeVariable(AnnotatedTypeCopier.java:240)
  	at org.checkerframework.framework.type.TypeVariableSubstitutor$Visitor.visitTypeVariable(TypeVariableSubstitutor.java:173)
  	at org.checkerframework.framework.type.TypeVariableSubstitutor$Visitor.visitTypeVariable(TypeVariableSubstitutor.java:79)
  	at org.checkerframework.framework.type.AnnotatedTypeMirror$AnnotatedTypeVariable.accept(AnnotatedTypeMirror.java:1549)
  	at org.checkerframework.framework.type.AnnotatedTypeCopier.visit(AnnotatedTypeCopier.java:100)
  	at org.checkerframework.framework.type.AnnotatedTypeCopier.visitExecutable(AnnotatedTypeCopier.java:191)
  	at org.checkerframework.framework.type.AnnotatedTypeCopier.visitExecutable(AnnotatedTypeCopier.java:42)
  	at org.checkerframework.framework.type.AnnotatedTypeMirror$AnnotatedExecutableType.accept(AnnotatedTypeMirror.java:1149)
  	at org.checkerframework.framework.type.AnnotatedTypeCopier.visit(AnnotatedTypeCopier.java:93)
  	at org.checkerframework.framework.type.TypeVariableSubstitutor.substitute(TypeVariableSubstitutor.java:32)
  	at org.checkerframework.framework.util.AnnotatedTypes.substituteTypeVariables(AnnotatedTypes.java:508)
  	at org.checkerframework.framework.util.AnnotatedTypes.asMemberOfImpl(AnnotatedTypes.java:468)
  	at org.checkerframework.framework.util.AnnotatedTypes.asMemberOf(AnnotatedTypes.java:402)
  	at org.checkerframework.framework.util.AnnotatedTypes.asMemberOf(AnnotatedTypes.java:343)
  	at org.checkerframework.framework.type.AnnotatedTypeFactory.constructorFromUse(AnnotatedTypeFactory.java:2609)
  	at org.checkerframework.framework.type.GenericAnnotatedTypeFactory.constructorFromUse(GenericAnnotatedTypeFactory.java:1719)
  	at org.checkerframework.framework.type.TypeFromExpressionVisitor.visitNewClass(TypeFromExpressionVisitor.java:348)
  	at org.checkerframework.framework.type.TypeFromExpressionVisitor.visitNewClass(TypeFromExpressionVisitor.java:75)
  	at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCNewClass.accept(JCTree.java:1727)
  	at jdk.compiler/com.sun.source.util.SimpleTreeVisitor.visit(SimpleTreeVisitor.java:80)
  	at org.checkerframework.framework.type.TypeFromTree.fromExpression(TypeFromTree.java:40)
  	at org.checkerframework.framework.type.AnnotatedTypeFactory.fromExpression(AnnotatedTypeFactory.java:1591)
  	at org.checkerframework.framework.type.AnnotatedTypeFactory.getAnnotatedType(AnnotatedTypeFactory.java:1281)
  	at org.checkerframework.framework.flow.CFAbstractTransfer.getValueFromFactory(CFAbstractTransfer.java:204)
  	at org.checkerframework.framework.flow.CFAbstractTransfer.visitNode(CFAbstractTransfer.java:524)
  	at org.checkerframework.framework.flow.CFAbstractTransfer.visitNode(CFAbstractTransfer.java:94)
  	at org.checkerframework.dataflow.cfg.node.AbstractNodeVisitor.visitObjectCreation(AbstractNodeVisitor.java:338)
  	at org.checkerframework.framework.flow.CFAbstractTransfer.visitObjectCreation(CFAbstractTransfer.java:919)
  	at org.checkerframework.framework.flow.CFAbstractTransfer.visitObjectCreation(CFAbstractTransfer.java:94)
  	at org.checkerframework.dataflow.cfg.node.ObjectCreationNode.accept(ObjectCreationNode.java:63)
  	at org.checkerframework.dataflow.analysis.AbstractAnalysis.callTransferFunction(AbstractAnalysis.java:349)
  	at org.checkerframework.dataflow.analysis.ForwardAnalysisImpl.callTransferFunction(ForwardAnalysisImpl.java:372)
  	at org.checkerframework.dataflow.analysis.ForwardAnalysisImpl.performAnalysisBlock(ForwardAnalysisImpl.java:151)
  	at org.checkerframework.dataflow.analysis.ForwardAnalysisImpl.performAnalysis(ForwardAnalysisImpl.java:105)
  	at org.checkerframework.framework.flow.CFAbstractAnalysis.performAnalysis(CFAbstractAnalysis.java:146)
  	at org.checkerframework.framework.type.GenericAnnotatedTypeFactory.analyze(GenericAnnotatedTypeFactory.java:1507)
  	at org.checkerframework.framework.type.GenericAnnotatedTypeFactory.performFlowAnalysis(GenericAnnotatedTypeFactory.java:1354)
  	at org.checkerframework.framework.type.GenericAnnotatedTypeFactory.checkAndPerformFlowAnalysis(GenericAnnotatedTypeFactory.java:1839)
  	at org.checkerframework.framework.type.GenericAnnotatedTypeFactory.preProcessClassTree(GenericAnnotatedTypeFactory.java:414)
  	at org.checkerframework.common.basetype.BaseTypeVisitor.visitClass(BaseTypeVisitor.java:475)
  	at org.checkerframework.common.basetype.BaseTypeVisitor.visitClass(BaseTypeVisitor.java:180)
  	at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:808)
  	at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:56)
  	at org.checkerframework.framework.source.SourceVisitor.visit(SourceVisitor.java:82)
  	at org.checkerframework.framework.source.SourceChecker.typeProcess(SourceChecker.java:992)
  	at org.checkerframework.common.basetype.BaseTypeChecker.typeProcess(BaseTypeChecker.java:542)
  	at org.checkerframework.javacutil.AbstractTypeProcessor$AttributionTaskListener.finished(AbstractTypeProcessor.java:188)
  	at jdk.compiler/com.sun.tools.javac.api.ClientCodeWrapper$WrappedTaskListener.finished(ClientCodeWrapper.java:828)
  	at jdk.compiler/com.sun.tools.javac.api.MultiTaskListener.finished(MultiTaskListener.java:132)
  	at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1419)
  	at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1376)
  	at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:972)
  	at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:311)
  	at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:170)
  	at jdk.compiler/com.sun.tools.javac.Main.compile(Main.java:57)
  	at jdk.compiler/com.sun.tools.javac.Main.main(Main.java:43)
2 errors

Expecation

No crash.

mernst added a commit to mernst/checker-framework that referenced this issue Aug 5, 2022
@mernst mernst added the crash label Aug 5, 2022
@mernst
Copy link
Member

mernst commented Aug 5, 2022

A test case appears in file checker/tests/nullness/Issue5245.java.

mernst added a commit that referenced this issue Aug 6, 2022
wmdietl pushed a commit to eisop/checker-framework that referenced this issue Sep 2, 2022
wmdietl pushed a commit to eisop/checker-framework that referenced this issue Oct 10, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants