Exceptions at Constructor References for inner classes

bitter_fox bitterfoxc at gmail.com
Sat Jun 2 16:01:27 PDT 2012


Sorry, I forgot to tell you which has problem.
Right, these exceptions appear on the newest revision, I mean Revision
1418[1] of lambda/langtool.

I could check that NPE appeared from 2012 Feb binary snapshot.(I don't have
a older one than 2012 Feb now.)
InapplicableMethodException appeared from Revision 1409[2]

[1]http://mail.openjdk.java.net/pipermail/lambda-dev/2012-June/004997.html
[2]http://mail.openjdk.java.net/pipermail/lambda-dev/2012-May/004936.html

Regards,
bitter_fox

2012/6/3 maurizio cimadamore <maurizio.cimadamore at oracle.com>

> 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