The compiler throws NPE by an incompatible OR-throws-type-parameter such as "<Exception | Error>".
bitter_fox
bitterfoxc at gmail.com
Tue Mar 20 18:03:51 PDT 2012
Hi,
As the title, the compiler throws NPE when we compile the following program:
public class Main<throws E>
{
{
new Main<Exception | Error>(); // NPE
// FYI
// new Main<Error>(); // Compile-Time Error
// new Main<Exception | Object>(); // Compile-Time Error:
/*
* Main.java:11: error: incompatible types
* new Main<Exception | Object>(); // Compile-Time Error:
* ^
* required: Throwable [I think this would be "required:
Exception".]
* found: Object
*/
}
}
This is the StackTrace:
java.lang.NullPointerException
at
com.sun.tools.javac.comp.Check$Validator.visitTypeApply(Check.java:12
40)
at
com.sun.tools.javac.tree.JCTree$JCTypeApply.accept(JCTree.java:2043)
at
com.sun.tools.javac.comp.Check$Validator.validateTree(Check.java:1345
)
at com.sun.tools.javac.comp.Check.validate(Check.java:1198)
at com.sun.tools.javac.comp.Check.validate(Check.java:1195)
at com.sun.tools.javac.comp.Attr.visitNewClass(Attr.java:1749)
at
com.sun.tools.javac.tree.JCTree$JCNewClass.accept(JCTree.java:1399)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:468)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:486)
at com.sun.tools.javac.comp.Attr.visitSelect(Attr.java:2886)
at
com.sun.tools.javac.tree.JCTree$JCFieldAccess.accept(JCTree.java:1773
)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:468)
at com.sun.tools.javac.comp.Attr.visitApply(Attr.java:1623)
at
com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java
:1348)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:468)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:486)
at com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:501)
at com.sun.tools.javac.comp.Attr.visitExec(Attr.java:1368)
at
com.sun.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.j
ava:1178)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:468)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:486)
at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:521)
at com.sun.tools.javac.comp.Attr.attribStats(Attr.java:537)
at com.sun.tools.javac.comp.Attr.visitBlock(Attr.java:962)
at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:792)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:468)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:486)
at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:521)
at com.sun.tools.javac.comp.Attr.visitMethodDef(Attr.java:878)
at
com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:676)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:468)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:486)
at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:521)
at com.sun.tools.javac.comp.Attr.attribClassBody(Attr.java:3877)
at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:3799)
at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:3735)
at com.sun.tools.javac.comp.Attr.attrib(Attr.java:3709)
at
com.sun.tools.javac.main.JavaCompiler.attribute(JavaCompiler.java:119
7)
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