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