NPE and AssertionError are thrown by calling Constructor
bitter_fox
bitterfoxc at gmail.com
Sun Jul 1 18:39:25 PDT 2012
Hi,
I found the javac throws two exceptions by calling Constructor.
(The exceptions appeared in the newest binary snapshot[1] and the newest
langtools repository[2].)
Here is the test code:
/**
* file: Main.java
*/
import java.io.*;
public class Main
{
public static void main(String[] args)
{
m(new A(new File(""))); // NPE
m(new A(null)); // AssertionError: typecode 20
}
public static void m(Object o) {}
}
/**
* file: A.java
*/
public class A
{
public A(File/* Unknown Class */ f) {}
}
If we compile Main.java, the javac throws NPE or AssertionError:
>javac Main.java
java.lang.NullPointerException
at
com.sun.tools.javac.comp.Flow$FlowAnalyzer.visitNewClass(Flow.java:12
03)
at
com.sun.tools.javac.tree.JCTree$JCNewClass.accept(JCTree.java:1444)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:57)
at
com.sun.tools.javac.comp.Flow$FlowAnalyzer.visitNewClass(Flow.java:12
01)
at
com.sun.tools.javac.tree.JCTree$JCNewClass.accept(JCTree.java:1444)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:57)
at
com.sun.tools.javac.comp.Flow$FlowAnalyzer.visitApply(Flow.java:1194)
at
com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java
:1393)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
at
com.sun.tools.javac.tree.TreeScanner.visitExec(TreeScanner.java:173)
at
com.sun.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.j
ava:1224)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:57)
at
com.sun.tools.javac.comp.Flow$FlowAnalyzer.visitBlock(Flow.java:956)
at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:837)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
at
com.sun.tools.javac.comp.Flow$FlowAnalyzer.visitMethodDef(Flow.java:9
23)
at
com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:721)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
at
com.sun.tools.javac.comp.Flow$FlowAnalyzer.visitClassDef(Flow.java:88
6)
at
com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:643)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
at
com.sun.tools.javac.comp.Flow$FlowAnalyzer.analyzeTree(Flow.java:1275
)
at
com.sun.tools.javac.comp.Flow$FlowAnalyzer.analyzeTree(Flow.java:1265
)
at com.sun.tools.javac.comp.Flow.analyzeTree(Flow.java:209)
at
com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1266)
at
com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1240)
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)
>javac Main.java
java.lang.AssertionError: typecode 20
at com.sun.tools.javac.jvm.Code.typecode(Code.java:245)
at com.sun.tools.javac.jvm.Items$Item.coerce(Items.java:273)
at com.sun.tools.javac.jvm.Gen.genExpr(Gen.java:834)
at com.sun.tools.javac.jvm.Gen.genArgs(Gen.java:851)
at com.sun.tools.javac.jvm.Gen.visitNewClass(Gen.java:1732)
at
com.sun.tools.javac.tree.JCTree$JCNewClass.accept(JCTree.java:1444)
at com.sun.tools.javac.jvm.Gen.genExpr(Gen.java:832)
at com.sun.tools.javac.jvm.Gen.genArgs(Gen.java:851)
at com.sun.tools.javac.jvm.Gen.visitApply(Gen.java:1689)
at
com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java
:1393)
at com.sun.tools.javac.jvm.Gen.genExpr(Gen.java:832)
at com.sun.tools.javac.jvm.Gen.visitExec(Gen.java:1637)
at
com.sun.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.j
ava:1224)
at com.sun.tools.javac.jvm.Gen.genDef(Gen.java:679)
at com.sun.tools.javac.jvm.Gen.genStat(Gen.java:714)
at com.sun.tools.javac.jvm.Gen.genStat(Gen.java:700)
at com.sun.tools.javac.jvm.Gen.genStats(Gen.java:751)
at com.sun.tools.javac.jvm.Gen.visitBlock(Gen.java:1029)
at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:837)
at com.sun.tools.javac.jvm.Gen.genDef(Gen.java:679)
at com.sun.tools.javac.jvm.Gen.genStat(Gen.java:714)
at com.sun.tools.javac.jvm.Gen.genMethod(Gen.java:907)
at com.sun.tools.javac.jvm.Gen.visitMethodDef(Gen.java:880)
at
com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:721)
at com.sun.tools.javac.jvm.Gen.genDef(Gen.java:679)
at com.sun.tools.javac.jvm.Gen.genClass(Gen.java:2245)
at
com.sun.tools.javac.main.JavaCompiler.genCode(JavaCompiler.java:734)
at
com.sun.tools.javac.main.JavaCompiler.generate(JavaCompiler.java:1478
)
at
com.sun.tools.javac.main.JavaCompiler.generate(JavaCompiler.java:1442
)
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)
[1]:http://mail.openjdk.java.net/pipermail/lambda-dev/2012-June/005095.html
[2]:http://mail.openjdk.java.net/pipermail/lambda-dev/2012-June/005121.html
Regards,
bitter_fox
More information about the lambda-dev
mailing list