"(Lambda Expression)#method" or "(Method or Constructor Reference)#method" causes javac to throw NullPointerException
bitter_fox
bitterfoxc at gmail.com
Thu Jan 26 05:01:51 PST 2012
Hi.
"(Lambda Expression)#method" or "(Method or Constructor Reference)#method"
causes javac to throw NullPointerException.(Revision of langtool is 1246.)
For example,
public class Main
{
interface SAM
{
void invoke();
}
public static void main(String[] args)
{
SAM sam = ((SAM)() -> {})#invoke;
}
}
This is the StackTrace:
java.lang.NullPointerException
at
com.sun.tools.javac.comp.LambdaToInnerClass.visitLambda(LambdaToInnerClass.java:90)
at com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1495)
at
com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at
com.sun.tools.javac.comp.LambdaTranslator.translate(LambdaTranslator.java:106)
at
com.sun.tools.javac.comp.LambdaTranslator.translate(LambdaTranslator.java:99)
at
com.sun.tools.javac.tree.TreeTranslator.visitTypeCast(TreeTranslator.java:328)
at
com.sun.tools.javac.tree.JCTree$JCTypeCast.accept(JCTree.java:1690)
at
com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at
com.sun.tools.javac.comp.LambdaTranslator.translate(LambdaTranslator.java:106)
at
com.sun.tools.javac.comp.LambdaTranslator.translate(LambdaTranslator.java:99)
at
com.sun.tools.javac.tree.TreeTranslator.visitParens(TreeTranslator.java:299)
at com.sun.tools.javac.tree.JCTree$JCParens.accept(JCTree.java:1537)
at
com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at
com.sun.tools.javac.comp.LambdaTranslator.translate(LambdaTranslator.java:106)
at
com.sun.tools.javac.comp.LambdaTranslator.translate(LambdaTranslator.java:99)
at
com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:70)
at
com.sun.tools.javac.tree.TreeTranslator.visitNewClass(TreeTranslator.java:280)
at
com.sun.tools.javac.tree.JCTree$JCNewClass.accept(JCTree.java:1399)
at
com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at
com.sun.tools.javac.comp.LambdaTranslator.translate(LambdaTranslator.java:106)
at
com.sun.tools.javac.comp.LambdaToInnerClass.visitReference(LambdaToInnerClass.java:280)
at
com.sun.tools.javac.tree.JCTree$JCMemberReference.accept(JCTree.java:1844)
at
com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at
com.sun.tools.javac.comp.LambdaTranslator.translate(LambdaTranslator.java:106)
at
com.sun.tools.javac.comp.LambdaTranslator.translate(LambdaTranslator.java:99)
at
com.sun.tools.javac.tree.TreeTranslator.visitVarDef(TreeTranslator.java:151)
at
com.sun.tools.javac.comp.LambdaTranslator.visitVarDef(LambdaTranslator.java:213)
at
com.sun.tools.javac.tree.JCTree$JCVariableDecl.accept(JCTree.java:736)
at
com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at
com.sun.tools.javac.comp.LambdaTranslator.translate(LambdaTranslator.java:106)
at
com.sun.tools.javac.comp.LambdaTranslator.translate(LambdaTranslator.java:99)
at
com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:70)
at
com.sun.tools.javac.tree.TreeTranslator.visitBlock(TreeTranslator.java:160)
at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:792)
at
com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at
com.sun.tools.javac.comp.LambdaTranslator.translate(LambdaTranslator.java:106)
at
com.sun.tools.javac.comp.LambdaTranslator.translate(LambdaTranslator.java:99)
at
com.sun.tools.javac.tree.TreeTranslator.visitMethodDef(TreeTranslator.java:144)
at
com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:676)
at
com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at
com.sun.tools.javac.comp.LambdaTranslator.translate(LambdaTranslator.java:106)
at
com.sun.tools.javac.comp.LambdaTranslator.translate(LambdaTranslator.java:99)
at
com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:70)
at
com.sun.tools.javac.tree.TreeTranslator.visitClassDef(TreeTranslator.java:134)
at
com.sun.tools.javac.comp.LambdaTranslator.visitClassDef(LambdaTranslator.java:139)
at
com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:598)
at
com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at
com.sun.tools.javac.comp.LambdaTranslator.translate(LambdaTranslator.java:106)
at
com.sun.tools.javac.comp.LambdaTranslator.translate(LambdaTranslator.java:99)
at
com.sun.tools.javac.comp.LambdaTranslator.translateTopLevelClass(LambdaTranslator.java:126)
at
com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1392)
at
com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1286)
at
com.sun.tools.javac.main.JavaCompiler.compile2(JavaCompiler.java:885)
at
com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:844)
at com.sun.tools.javac.main.Main.compile(Main.java:430)
at com.sun.tools.javac.main.Main.compile(Main.java:344)
at com.sun.tools.javac.main.Main.compile(Main.java:335)
at com.sun.tools.javac.Main.compile(Main.java:76)
at com.sun.tools.javac.Main.main(Main.java:61)
Method or Constructor Reference has a problem like this.
For example,
SAM println = ((SAM)System.out#println)#invoke;
StackTrace:
java.lang.NullPointerException
at
com.sun.tools.javac.comp.LambdaToInnerClass.visitReference(LambdaToInnerClass.java:180)
at
com.sun.tools.javac.tree.JCTree$JCMemberReference.accept(JCTree.java:1844)
at
com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at
com.sun.tools.javac.comp.LambdaTranslator.translate(LambdaTranslator.java:106)
at
com.sun.tools.javac.comp.LambdaTranslator.translate(LambdaTranslator.java:99)
at
com.sun.tools.javac.tree.TreeTranslator.visitTypeCast(TreeTranslator.java:328)
at
com.sun.tools.javac.tree.JCTree$JCTypeCast.accept(JCTree.java:1690)
at
com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at
com.sun.tools.javac.comp.LambdaTranslator.translate(LambdaTranslator.java:106)
at
com.sun.tools.javac.comp.LambdaTranslator.translate(LambdaTranslator.java:99)
at
com.sun.tools.javac.tree.TreeTranslator.visitParens(TreeTranslator.java:299)
at com.sun.tools.javac.tree.JCTree$JCParens.accept(JCTree.java:1537)
at
com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at
com.sun.tools.javac.comp.LambdaTranslator.translate(LambdaTranslator.java:106)
at
com.sun.tools.javac.comp.LambdaTranslator.translate(LambdaTranslator.java:99)
at
com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:70)
at
com.sun.tools.javac.tree.TreeTranslator.visitNewClass(TreeTranslator.java:280)
at
com.sun.tools.javac.tree.JCTree$JCNewClass.accept(JCTree.java:1399)
at
com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at
com.sun.tools.javac.comp.LambdaTranslator.translate(LambdaTranslator.java:106)
at
com.sun.tools.javac.comp.LambdaToInnerClass.visitReference(LambdaToInnerClass.java:280)
at
com.sun.tools.javac.tree.JCTree$JCMemberReference.accept(JCTree.java:1844)
at
com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at
com.sun.tools.javac.comp.LambdaTranslator.translate(LambdaTranslator.java:106)
at
com.sun.tools.javac.comp.LambdaTranslator.translate(LambdaTranslator.java:99)
at
com.sun.tools.javac.tree.TreeTranslator.visitVarDef(TreeTranslator.java:151)
at
com.sun.tools.javac.comp.LambdaTranslator.visitVarDef(LambdaTranslator.java:213)
at
com.sun.tools.javac.tree.JCTree$JCVariableDecl.accept(JCTree.java:736)
at
com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at
com.sun.tools.javac.comp.LambdaTranslator.translate(LambdaTranslator.java:106)
at
com.sun.tools.javac.comp.LambdaTranslator.translate(LambdaTranslator.java:99)
at
com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:70)
at
com.sun.tools.javac.tree.TreeTranslator.visitBlock(TreeTranslator.java:160)
at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:792)
at
com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at
com.sun.tools.javac.comp.LambdaTranslator.translate(LambdaTranslator.java:106)
at
com.sun.tools.javac.comp.LambdaTranslator.translate(LambdaTranslator.java:99)
at
com.sun.tools.javac.tree.TreeTranslator.visitMethodDef(TreeTranslator.java:144)
at
com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:676)
at
com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at
com.sun.tools.javac.comp.LambdaTranslator.translate(LambdaTranslator.java:106)
at
com.sun.tools.javac.comp.LambdaTranslator.translate(LambdaTranslator.java:99)
at
com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:70)
at
com.sun.tools.javac.tree.TreeTranslator.visitClassDef(TreeTranslator.java:134)
at
com.sun.tools.javac.comp.LambdaTranslator.visitClassDef(LambdaTranslator.java:139)
at
com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:598)
at
com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
at
com.sun.tools.javac.comp.LambdaTranslator.translate(LambdaTranslator.java:106)
at
com.sun.tools.javac.comp.LambdaTranslator.translate(LambdaTranslator.java:99)
at
com.sun.tools.javac.comp.LambdaTranslator.translateTopLevelClass(LambdaTranslator.java:126)
at
com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1392)
at
com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1286)
at
com.sun.tools.javac.main.JavaCompiler.compile2(JavaCompiler.java:885)
at
com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:844)
at com.sun.tools.javac.main.Main.compile(Main.java:430)
at com.sun.tools.javac.main.Main.compile(Main.java:344)
at com.sun.tools.javac.main.Main.compile(Main.java:335)
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