JDK-8213908 : AssertionError in DeferredAttr at setOverloadKind
  • Type: Bug
  • Component: tools
  • Sub-Component: javac
  • Affected Version: 11,12
  • Priority: P2
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2018-11-14
  • Updated: 2019-12-10
  • Resolved: 2018-11-20
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 11 JDK 12
11.0.7Fixed 12 b21Fixed
Related Reports
Duplicate :  
Duplicate :  
Relates :  
Relates :  
Relates :  
Description
This is related to JDK-8210483, JDK-8203679.

```
import java.util.Optional;
import java.util.stream.Stream;

abstract class T {

  abstract void f(long c); 

  interface I { 
    I g(String o); 
  }

  private void test(Stream<I> is, Optional<String> o) {
    f(  
        is.map(
                i -> {
                  o.ifPresent(i::g);
                  return null;
                })  
            .count());
  }
}
```

```
An exception has occurred in the compiler (12-ea). Please file a bug against the Java compiler via the Java bug reporting page (http://bugreport.java.com) after checking the Bug Database (http://bugs.java.com) for duplicates. Include your program and the following diagnostic in your report. Thank you.
java.lang.AssertionError
        at jdk.compiler/com.sun.tools.javac.util.Assert.error(Assert.java:155)
        at jdk.compiler/com.sun.tools.javac.util.Assert.check(Assert.java:46)
        at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr$2$1.setOverloadKind(DeferredAttr.java:175)
        at jdk.compiler/com.sun.tools.javac.comp.ArgumentAttr.visitReference(ArgumentAttr.java:284)
        at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMemberReference.accept(JCTree.java:2264)
        at jdk.compiler/com.sun.tools.javac.comp.ArgumentAttr.attribArg(ArgumentAttr.java:199)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:662)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribArgs(Attr.java:764)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.visitApply(Attr.java:2185)
        at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1707)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:664)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:715)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.visitExec(Attr.java:1863)
        at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.java:1517)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:664)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribStat(Attr.java:737)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribStats(Attr.java:756)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.visitBlock(Attr.java:1307)
        at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:1026)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:664)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribStat(Attr.java:737)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribStats(Attr.java:756)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.visitBlock(Attr.java:1307)
        at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:1026)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:664)
        at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr.attribSpeculative(DeferredAttr.java:501)
        at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr.attribSpeculative(DeferredAttr.java:484)
        at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr.attribSpeculativeLambda(DeferredAttr.java:459)
        at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr$DeferredAttrNode$StructuralStuckChecker.canLambdaBodyCompleteNormally(DeferredAttr.java:903)
        at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr$DeferredAttrNode$StructuralStuckChecker.visitLambda(DeferredAttr.java:881)
        at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1880)
        at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr$DeferredAttrNode$StructuralStuckChecker.complete(DeferredAttr.java:835)
        at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr$DeferredType.check(DeferredAttr.java:338)
        at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr$DeferredAttrNode.process(DeferredAttr.java:782)
        at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr$DeferredAttrContext.complete(DeferredAttr.java:629)
        at jdk.compiler/com.sun.tools.javac.comp.Infer.instantiateMethod(Infer.java:214)
        at jdk.compiler/com.sun.tools.javac.comp.Resolve.rawInstantiate(Resolve.java:603)
        at jdk.compiler/com.sun.tools.javac.comp.Resolve.selectBest(Resolve.java:1561)
        at jdk.compiler/com.sun.tools.javac.comp.Resolve.findMethodInScope(Resolve.java:1731)
```
Comments
Fix Request (jdk11u) Requesting a jdk11u backport approval of this fix. Patch applies cleanly. No suspicious tests results found. Reviewed request thread in jdk-updates-dev see here: https://mail.openjdk.java.net/pipermail/jdk-updates-dev/2019-December/002196.html
05-12-2019

http://mail.openjdk.java.net/pipermail/compiler-dev/2018-November/012634.html
20-11-2018