Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8008227

Mixing lambdas with anonymous classes leads to NPE thrown by compiler

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P2 P2
    • 8
    • 8
    • tools
    • b82
    • Verified


      Attempt to compile the following with JDK8b77-lambda or b76-main

      // code minimized by maurizio.cimadamore@oracle.com

      class CompilerError {

            public static void main(String[] args) {
                SAM s = ()-> { SAM s2 = ()->{ new Object() { }; }; };
            }

            interface SAM {
                void m();
            }
      }

      leads to

      java.lang.NullPointerException
              at com.sun.tools.javac.jvm.Code.emitop0(Code.java:538)
              at com.sun.tools.javac.jvm.Items$SelfItem.load(Items.java:367)
              at com.sun.tools.javac.jvm.Gen.genArgs(Gen.java:912)
              at com.sun.tools.javac.jvm.Gen.visitNewClass(Gen.java:1831)
              at com.sun.tools.javac.tree.JCTree$JCNewClass.accept(JCTree.java:1491)
              at com.sun.tools.javac.jvm.Gen.genExpr(Gen.java:893)
              at com.sun.tools.javac.jvm.Gen.visitExec(Gen.java:1697)
              at com.sun.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.java:1271)
              at com.sun.tools.javac.jvm.Gen.genDef(Gen.java:683)
              at com.sun.tools.javac.jvm.Gen.genStat(Gen.java:718)
              at com.sun.tools.javac.jvm.Gen.genStat(Gen.java:704)
              at com.sun.tools.javac.jvm.Gen.genStats(Gen.java:755)
              at com.sun.tools.javac.jvm.Gen.visitBlock(Gen.java:1093)
              at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:884)
              at com.sun.tools.javac.jvm.Gen.genDef(Gen.java:683)
              at com.sun.tools.javac.jvm.Gen.genStat(Gen.java:718)
              at com.sun.tools.javac.jvm.Gen.genMethod(Gen.java:968)
              at com.sun.tools.javac.jvm.Gen.visitMethodDef(Gen.java:941)
              at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:771)
              at com.sun.tools.javac.jvm.Gen.genDef(Gen.java:683)
              at com.sun.tools.javac.jvm.Gen.genClass(Gen.java:2355)
              at com.sun.tools.javac.main.JavaCompiler.genCode(JavaCompiler.java:751)
              at com.sun.tools.javac.main.JavaCompiler.generate(JavaCompiler.java:1545)
              at com.sun.tools.javac.main.JavaCompiler.generate(JavaCompiler.java:1509)
              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:506)
              at com.sun.tools.javac.main.Main.compile(Main.java:365)
              at com.sun.tools.javac.main.Main.compile(Main.java:354)
              at com.sun.tools.javac.main.Main.compile(Main.java:345)
              at com.sun.tools.javac.Main.compile(Main.java:76)
              at com.sun.tools.javac.Main.main(Main.java:61)

      JCK tests added:
      lang/LMBD/lmbd001/lmbd00103/
      lang/LMBD/lmbd001/lmbd00104/

            mcimadamore Maurizio Cimadamore
            dbessono Dmitry Bessonov
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: