javac exception compiling Lambda expression

Roger Riggs Roger.Riggs at oracle.com
Sat Jan 12 14:09:30 PST 2013


In converting some anonymous inner classes to lambda expressions
I get a compiler stack trace.

Created issue JDK-8006140:

The offending test case .java file is:

public interface ChronoLocalDate1
         extends Comparable<ChronoLocalDate1> {

     // Original
     public static final Comparator<ChronoLocalDate1> DATE_COMPARATOR1 =
             new Comparator() {
         public int compare(Object date1, Object date2) {
             return 0;
         }
     };
     // Netbeans suggested turning the comparator above into this.
     public static final Comparator<ChronoLocalDate1> DATE_COMPARATOR3 =
             ( date1,  date2) -> 0;

}


Stack Trace:
java.lang.NullPointerException
     at com.sun.tools.javac.jvm.Code.emitop0(Code.java:537)
     at com.sun.tools.javac.jvm.Items$SelfItem.load(Items.java:367)
     at com.sun.tools.javac.jvm.Gen.genArgs(Gen.java:852)
     at com.sun.tools.javac.jvm.Gen.visitApply(Gen.java:1686)
     at 
com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1385)
     at com.sun.tools.javac.jvm.Gen.genExpr(Gen.java:833)
     at com.sun.tools.javac.jvm.Gen.visitAssign(Gen.java:1784)
     at com.sun.tools.javac.tree.JCTree$JCAssign.accept(JCTree.java:1580)
     at com.sun.tools.javac.jvm.Gen.genExpr(Gen.java:833)
     at com.sun.tools.javac.jvm.Gen.visitExec(Gen.java:1634)
     at 
com.sun.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.java:1216)
     at com.sun.tools.javac.jvm.Gen.genDef(Gen.java:680)
     at com.sun.tools.javac.jvm.Gen.genStat(Gen.java:715)
     at com.sun.tools.javac.jvm.Gen.genStat(Gen.java:701)
     at com.sun.tools.javac.jvm.Gen.genStats(Gen.java:752)
     at com.sun.tools.javac.jvm.Gen.visitBlock(Gen.java:1030)
     at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:829)
     at com.sun.tools.javac.jvm.Gen.genDef(Gen.java:680)
     at com.sun.tools.javac.jvm.Gen.genStat(Gen.java:715)
     at com.sun.tools.javac.jvm.Gen.genMethod(Gen.java:908)
     at com.sun.tools.javac.jvm.Gen.visitMethodDef(Gen.java:881)
     at 
com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:717)
     at com.sun.tools.javac.jvm.Gen.genDef(Gen.java:680)
     at com.sun.tools.javac.jvm.Gen.genClass(Gen.java:2240)
     at 
com.sun.tools.javac.main.JavaCompiler.genCode(JavaCompiler.java:751)
     at 
com.sun.tools.javac.main.JavaCompiler.generate(JavaCompiler.java:1520)
     at 
com.sun.tools.javac.main.JavaCompiler.generate(JavaCompiler.java:1484)
     at 
com.sun.tools.javac.main.JavaCompiler.compile2(JavaCompiler.java:907)
     at 
com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:866)
     at com.sun.tools.javac.main.Main.compile(Main.java:482)
     at com.sun.tools.javac.main.Main.compile(Main.java:363)
     at com.sun.tools.javac.main.Main.compile(Main.java:352)
     at com.sun.tools.javac.main.Main.compile(Main.java:343)
     at com.sun.tools.javac.Main.compile(Main.java:76)
     at com.sun.tools.javac.Main.main(Main.java:61)


The fails in JDK8 builds b67 and b72 and recent private builds.



More information about the lambda-dev mailing list