javac throws NullPointerException when the Wrong Program was compiled.

苦狐 bitterfoxc at gmail.com
Tue Nov 29 05:06:13 PST 2011


Hi.

The Java Compiler which is
version-1.8.0-ea(lambda-8-b1314-windows-x64-10_nov_2011) throws
NullPointerException when the program  which should be Compile Error was
compiled.

This is the code of that wrong program.

// vvvvvvvvvvvvv Code vvvvvvvvvvvvv

public class Main
{
    public /*static*/ class Class1 // NOT static
    {}

    public interface Constructor0<RET>
    {
        public RET createInstance();
    }

    public static void main(String[] args)
    {
        // Illegal Constructor Reference
        Constructor0<Class1> c = Main.Class1#new; // should be Compile
Error, NOT Compiler's Exception
    }
}

// ^^^^^^^^^^^^^ Code ^^^^^^^^^^^^^

We can understand this program is wrong, but The Java Compiler should tell
us that by the Compile Error, NOT Compiler's Exception.
Please check this problem.

This is the Message from javac, and the StackTrace.

==========================================================================================
コンパイラで例外が発生しました(1.8.0-ea)。Bug Paradeに同じバグが登録されていない
ことをご確認の上、Java Developer Connection(http://java.sun.com/webapps/bugrepor
t)でバグの登録をお願いいたします。レポートには、そのプログラムと下記の診断内容を
含めてください。ご協力ありがとうございます。
java.lang.NullPointerException
        at
com.sun.tools.javac.comp.LambdaToInnerClass.visitReference(LambdaToIn
nerClass.java:219)
        at
com.sun.tools.javac.tree.JCTree$JCMemberReference.accept(JCTree.java:
1815)
        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.ja
va:151)
        at
com.sun.tools.javac.comp.LambdaTranslator.visitVarDef(LambdaTranslato
r.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.jav
a: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(LambdaTransla
tor.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(Lamb
daTranslator.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)
==========================================================================================

Thank you for your watching.
bitter_fox


More information about the lambda-dev mailing list