The compiler throws NPE by an incompatible OR-throws-type-parameter such as "<Exception | Error>".
Maurizio Cimadamore
maurizio.cimadamore at oracle.com
Wed Mar 21 02:48:56 PDT 2012
Thanks for the report
Maurizio
On 21/03/12 01:03, bitter_fox wrote:
> 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