Exceptions at Constructor References for inner classes
maurizio cimadamore
maurizio.cimadamore at oracle.com
Sat Jun 2 11:34:36 PDT 2012
Thanks - I will dig deeper and find what the problem is - I assume this
is with the latest compiler right (i.e. not lambda binary snapshot) ?
Maurizio
On 02-Jun-12 4:14 PM, bitter_fox wrote:
> Hi,
> I found two cases which cause of Exceptions at Constructor References for
> inner classes:
>
> public class Main
> {
> public interface SAM0<R>
> {
> R invoke();
> }
>
> public interface SAM1<R, A>
> {
> R invoke(A a);
> }
>
> static
> {
> SAM1<Sub.Inner, Sub> sam = Sub.Inner::new; // NPE
> }
> }
>
> public class Sub
> {
> public class Inner {}
>
> static
> {
> Main.SAM1<Inner, Sub> sam = Inner::new; // OK
> }
>
> {
> Main.SAM0<Inner> sam0 = Inner::new; // OK
> Main.SAM1<Inner, Sub> sam1 = Inner::new; //
> InapplicableMethodException
> }
> }
>
> These are stack traces:
>
> java.lang.NullPointerException
> at
> com.sun.tools.javac.comp.Resolve.hasEnclosingInstance(Resolve.java:25
> 17)
> at
> com.sun.tools.javac.comp.Resolve.resolveMemberReference(Resolve.java:
> 2236)
> at com.sun.tools.javac.comp.Attr.visitReference(Attr.java:2631)
> at
> com.sun.tools.javac.tree.JCTree$JCMemberReference.accept(JCTree.java:
> 1880)
> at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:552)
> at com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:568)
> at com.sun.tools.javac.comp.Attr.visitVarDef(Attr.java:1003)
> at
> com.sun.tools.javac.tree.JCTree$JCVariableDecl.accept(JCTree.java:781
> )
> at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:552)
> at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:595)
> at com.sun.tools.javac.comp.Attr.attribStats(Attr.java:611)
> at com.sun.tools.javac.comp.Attr.visitBlock(Attr.java:1029)
> at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:837)
> at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:552)
> at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:595)
> at com.sun.tools.javac.comp.Attr.attribClassBody(Attr.java:3739)
> at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:3658)
> at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:3592)
> at com.sun.tools.javac.comp.Attr.attrib(Attr.java:3566)
> at
> com.sun.tools.javac.main.JavaCompiler.attribute(JavaCompiler.java:120
> 6)
> 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)
>
> com.sun.tools.javac.comp.Resolve$InapplicableMethodException
> at com.sun.tools.javac.comp.Resolve.<init>(Resolve.java:131)
> at com.sun.tools.javac.comp.Resolve.instance(Resolve.java:146)
> at com.sun.tools.javac.comp.Check.<init>(Check.java:100)
> at com.sun.tools.javac.comp.Check.instance(Check.java:91)
> at com.sun.tools.javac.code.Types.<init>(Types.java:104)
> at com.sun.tools.javac.code.Types.instance(Types.java:90)
> at com.sun.tools.javac.jvm.ClassReader.<init>(ClassReader.java:267)
> at
> com.sun.tools.javac.jvm.ClassReader.instance(ClassReader.java:229)
> at
> com.sun.tools.javac.main.JavaCompiler.<init>(JavaCompiler.java:341)
> at
> com.sun.tools.javac.main.JavaCompiler.instance(JavaCompiler.java:90)
> at com.sun.tools.javac.main.Main.compile(Main.java:428)
> 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)
>
> Regards,
> bitter_fox
>
More information about the lambda-dev
mailing list