lovubuntu / checker-framework

Automatically exported from code.google.com/p/checker-framework
0 stars 0 forks source link

Crash in PolyCollector with v1.8.2 #335

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
# What steps will reproduce the problem?

=== Test.java ===
import org.checkerframework.checker.nullness.qual.Nullable;

class Pair<A, B> {
  public static <A, B> Pair<A, B> of(@Nullable A first, @Nullable B second) {
    throw new RuntimeException();
  }
}

class Optional<T> {
  public static <T> Optional<T> of(T reference) {
    throw new RuntimeException();
  }
}

public class Test {
  Optional<Pair<String, String>> m(String one, String two) {
    return Optional.of(Pair.of(one, two));
  }
}
===

$ ~/jsr308/checker-framework-1.8.2/checker/bin/javac -AprintErrorStack 
-processor org.checkerframework.checker.nullness.NullnessChecker -cp 
~/jsr308/checker-framework-1.8.2/checker/dist/checker-qual.jar Test.java
...
error: SourceChecker.typeProcess: unexpected Throwable (AssertionError) while 
processing Test.java; message: PolyCollector: mismatched type kinds: 
@Initialized @Nullable String (DECLARED) and ? extends A extends @Initialized 
@Nullable Object (WILDCARD)
  Compilation unit: Test.java
  Exception: java.lang.AssertionError: PolyCollector: mismatched type kinds: @Initialized @Nullable String (DECLARED) and ? extends A extends @Initialized @Nullable Object (WILDCARD); Stack trace: org.checkerframework.framework.util.QualifierPolymorphism$PolyCollector.visitWildcard(QualifierPolymorphism.java:540)
  org.checkerframework.framework.util.QualifierPolymorphism$PolyCollector.visitWildcard(QualifierPolymorphism.java:277)
  org.checkerframework.framework.type.AnnotatedTypeMirror$AnnotatedWildcardType.accept(AnnotatedTypeMirror.java:2206)
  org.checkerframework.framework.type.visitor.SimpleAnnotatedTypeVisitor.visit(SimpleAnnotatedTypeVisitor.java:64)
  org.checkerframework.framework.util.QualifierPolymorphism$PolyCollector.visit(QualifierPolymorphism.java:322)
  org.checkerframework.framework.util.QualifierPolymorphism$PolyCollector.visitDeclared(QualifierPolymorphism.java:391)
  org.checkerframework.framework.util.QualifierPolymorphism$PolyCollector.visitDeclared(QualifierPolymorphism.java:277)
  org.checkerframework.framework.type.AnnotatedTypeMirror$AnnotatedDeclaredType.accept(AnnotatedTypeMirror.java:932)
  org.checkerframework.framework.type.visitor.SimpleAnnotatedTypeVisitor.visit(SimpleAnnotatedTypeVisitor.java:64)
  org.checkerframework.framework.util.QualifierPolymorphism$PolyCollector.visit(QualifierPolymorphism.java:322)
  org.checkerframework.framework.util.QualifierPolymorphism.annotate(QualifierPolymorphism.java:189)
  org.checkerframework.framework.type.GenericAnnotatedTypeFactory.methodFromUse(GenericAnnotatedTypeFactory.java:875)
  org.checkerframework.checker.nullness.NullnessAnnotatedTypeFactory.methodFromUse(NullnessAnnotatedTypeFactory.java:221)
  org.checkerframework.framework.type.TypeFromTree$TypeFromExpression.visitMethodInvocation(TypeFromTree.java:258)
  org.checkerframework.framework.type.TypeFromTree$TypeFromExpression.visitMethodInvocation(TypeFromTree.java:102)
  com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1511)
  com.sun.source.util.SimpleTreeVisitor.visit(SimpleTreeVisitor.java:53)
  org.checkerframework.framework.type.AnnotatedTypeFactory.fromTreeWithVisitor(AnnotatedTypeFactory.java:816)
  org.checkerframework.framework.type.AnnotatedTypeFactory.fromExpression(AnnotatedTypeFactory.java:738)
  org.checkerframework.framework.type.AnnotatedTypeFactory.getAnnotatedType(AnnotatedTypeFactory.java:547)
  org.checkerframework.framework.flow.CFAbstractTransfer.getValueFromFactory(CFAbstractTransfer.java:163)
  org.checkerframework.framework.flow.CFAbstractTransfer.visitMethodInvocation(CFAbstractTransfer.java:622)
  org.checkerframework.checker.initialization.InitializationTransfer.visitMethodInvocation(InitializationTransfer.java:210)
  org.checkerframework.checker.nullness.NullnessTransfer.visitMethodInvocation(NullnessTransfer.java:198)
  org.checkerframework.checker.nullness.NullnessTransfer.visitMethodInvocation(NullnessTransfer.java:55)
  org.checkerframework.dataflow.cfg.node.MethodInvocationNode.accept(MethodInvocationNode.java:81)
  org.checkerframework.dataflow.analysis.Analysis.callTransferFunction(Analysis.java:364)
  org.checkerframework.dataflow.analysis.Analysis.performAnalysis(Analysis.java:223)
  org.checkerframework.framework.type.GenericAnnotatedTypeFactory.analyze(GenericAnnotatedTypeFactory.java:659)
  org.checkerframework.framework.type.GenericAnnotatedTypeFactory.performFlowAnalysis(GenericAnnotatedTypeFactory.java:595)
  org.checkerframework.framework.type.GenericAnnotatedTypeFactory.annotateImplicitWithFlow(GenericAnnotatedTypeFactory.java:799)
  org.checkerframework.framework.type.GenericAnnotatedTypeFactory.annotateImplicit(GenericAnnotatedTypeFactory.java:761)
  org.checkerframework.checker.nullness.NullnessAnnotatedTypeFactory.annotateImplicit(NullnessAnnotatedTypeFactory.java:149)
  org.checkerframework.framework.type.GenericAnnotatedTypeFactory.annotateImplicit(GenericAnnotatedTypeFactory.java:776)
  org.checkerframework.framework.type.AnnotatedTypeFactory.getAnnotatedType(AnnotatedTypeFactory.java:554)
  org.checkerframework.framework.type.AnnotatedTypeFactory.getAnnotatedType(AnnotatedTypeFactory.java:1606)
  org.checkerframework.checker.initialization.InitializationVisitor.visitClass(InitializationVisitor.java:289)
  org.checkerframework.checker.initialization.InitializationVisitor.visitClass(InitializationVisitor.java:58)
  com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:754)
  com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:50)
  org.checkerframework.framework.source.SourceVisitor.visit(SourceVisitor.java:60)
  org.checkerframework.common.basetype.BaseTypeVisitor.visit(BaseTypeVisitor.java:238)
  org.checkerframework.checker.initialization.InitializationVisitor.visit(InitializationVisitor.java:80)
  org.checkerframework.checker.initialization.InitializationVisitor.visit(InitializationVisitor.java:58)
  org.checkerframework.framework.source.SourceChecker.typeProcess(SourceChecker.java:750)
  org.checkerframework.framework.source.AggregateChecker.typeProcess(AggregateChecker.java:119)
  org.checkerframework.javacutil.AbstractTypeProcessor$AttributionTaskListener.finished(AbstractTypeProcessor.java:205)
  com.sun.tools.javac.api.ClientCodeWrapper$WrappedTaskListener.finished(ClientCodeWrapper.java:625)
  com.sun.tools.javac.api.MultiTaskListener.finished(MultiTaskListener.java:110)
  com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1337)
  com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1287)
  com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:884)
  com.sun.tools.javac.main.Main.compile(Main.java:526)
  com.sun.tools.javac.main.Main.compile(Main.java:381)
  com.sun.tools.javac.main.Main.compile(Main.java:370)
  com.sun.tools.javac.main.Main.compile(Main.java:361)
  com.sun.tools.javac.Main.compile(Main.java:56)
  com.sun.tools.javac.Main.main(Main.java:42)

# What version of the product are you using? On what operating system?

v1.8.2

# Please provide any additional information below.

I was trying to reproduce an error that began appearing with v1.8.2, and the 
crash happened. That original error was:

  found   : @Initialized @NonNull Pair<? extends A extends @Initialized @NonNull Object, ? extends B extends @Initialized @NonNull Object>
  required: @Initialized @NonNull Pair<@Initialized @NonNull String, @Initialized @NonNull String>

Original issue reported on code.google.com by cus...@google.com on 4 Jun 2014 at 11:24

GoogleCodeExporter commented 9 years ago
Thanks for the bug report! I can reproduce the issue.

Original comment by wdi...@gmail.com on 4 Jun 2014 at 11:42

GoogleCodeExporter commented 9 years ago

Original comment by wdi...@gmail.com on 4 Jun 2014 at 11:42

GoogleCodeExporter commented 9 years ago
This is fixed in the typevariables-improvement repo.

Original comment by mcart...@cs.washington.edu on 26 Jan 2015 at 11:55

GoogleCodeExporter commented 9 years ago

Original comment by Jonathan...@gmail.com on 8 Apr 2015 at 9:46

GoogleCodeExporter commented 9 years ago

Original comment by jtha...@cs.washington.edu on 18 Apr 2015 at 6:42