NPE by Constructor Reference for enum

bitter_fox bitterfoxc at gmail.com
Thu Jun 7 17:14:03 PDT 2012


Hi,
The compiler(Revision of langtools is 1422) throws NPE by Constructor
Reference for enum:

public class Main
{
    interface SAM0<R>
    {
        R invoke();
    }

    enum E
    {
        A;

        private SAM0<E> sam = E::new; // NPE

        E() {}

        private void m()
        {
            //new E(); // compile time error
        }
    }
}

I think E::new would be compile time error like new E().

Here is the StackTrace:

java.lang.NullPointerException
        at com.sun.tools.javac.util.ListBuffer.append(ListBuffer.java:129)
        at com.sun.tools.javac.comp.Lower.boxArgs(Lower.java:2898)
        at com.sun.tools.javac.comp.Lower.visitNewClass(Lower.java:2688)
        at
com.sun.tools.javac.tree.JCTree$JCNewClass.accept(JCTree.java:1444)
        at
com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java
:58)
        at com.sun.tools.javac.comp.Lower.translate(Lower.java:2201)
        at com.sun.tools.javac.comp.Lower.translate(Lower.java:2212)
        at com.sun.tools.javac.comp.Lower.visitReturn(Lower.java:3385)
        at com.sun.tools.javac.tree.JCTree$JCReturn.accept(JCTree.java:1312)
        at
com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java
:58)
        at com.sun.tools.javac.comp.Lower.translate(Lower.java:2201)
        at
com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java
:70)
        at
com.sun.tools.javac.tree.TreeTranslator.visitBlock(TreeTranslator.jav
a:160)
        at com.sun.tools.javac.comp.Lower.visitBlock(Lower.java:3358)
        at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:837)
        at
com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java
:58)
        at com.sun.tools.javac.comp.Lower.translate(Lower.java:2201)
        at
com.sun.tools.javac.tree.TreeTranslator.visitMethodDef(TreeTranslator
.java:144)
        at
com.sun.tools.javac.comp.Lower.visitMethodDefInternal(Lower.java:2667
)
        at com.sun.tools.javac.comp.Lower.visitMethodDef(Lower.java:2586)
        at
com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:721)
        at
com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java
:58)
        at com.sun.tools.javac.comp.Lower.translate(Lower.java:2201)
        at com.sun.tools.javac.comp.Lower.visitClassDef(Lower.java:2331)
        at
com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:643)
        at
com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java
:58)
        at com.sun.tools.javac.comp.Lower.translate(Lower.java:2201)
        at com.sun.tools.javac.comp.Lower.visitNewClass(Lower.java:2726)
        at
com.sun.tools.javac.tree.JCTree$JCNewClass.accept(JCTree.java:1444)
        at
com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java
:58)
        at com.sun.tools.javac.comp.Lower.translate(Lower.java:2201)
        at com.sun.tools.javac.comp.Lower.translate(Lower.java:2212)
        at com.sun.tools.javac.comp.Lower.visitVarDef(Lower.java:3344)
        at
com.sun.tools.javac.tree.JCTree$JCVariableDecl.accept(JCTree.java:781
)
        at
com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java
:58)
        at com.sun.tools.javac.comp.Lower.translate(Lower.java:2201)
        at com.sun.tools.javac.comp.Lower.visitClassDef(Lower.java:2331)
        at
com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:643)
        at
com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java
:58)
        at com.sun.tools.javac.comp.Lower.translate(Lower.java:2201)
        at com.sun.tools.javac.comp.Lower.visitClassDef(Lower.java:2331)
        at
com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:643)
        at
com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java
:58)
        at com.sun.tools.javac.comp.Lower.translate(Lower.java:2201)
        at com.sun.tools.javac.comp.Lower.translate(Lower.java:2220)
        at
com.sun.tools.javac.comp.Lower.translateTopLevelClass(Lower.java:3709
)
        at
com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1418)

        at
com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1295)

        at
com.sun.tools.javac.main.JavaCompiler.compile2(JavaCompiler.java:892)

        at
com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:851)
        at com.sun.tools.javac.main.Main.compile(Main.java:441)
        at com.sun.tools.javac.main.Main.compile(Main.java:358)
        at com.sun.tools.javac.main.Main.compile(Main.java:347)
        at com.sun.tools.javac.main.Main.compile(Main.java:338)
        at com.sun.tools.javac.Main.compile(Main.java:76)
        at com.sun.tools.javac.Main.main(Main.java:61)

Regards,
bitter_fox


More information about the lambda-dev mailing list