bumped into a compiler NPE when replaced lambda with an anonymous class

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Thu Feb 14 09:29:44 PST 2013


On 14/02/13 14:57, Maurizio Cimadamore wrote:
> This will do:
>
> class CompilerError {
>
>        public static void main(String[] args) {
>            SAM s = ()-> { SAM s2 = ()->{ new Object() { }; }; };
>        }
>
>        interface SAM {
>            void m();
>        }
> }
Fixed in tip

Maurizio
>
>
>   From the stack trace it looks like the the translator is missing that
> the anon class occurs in a static context and therefore no 'enclosing
> this' should be added.
>
> Maurizio
>
> On 14/02/13 14:38, Dmitry Bessonov wrote:
>> class CompilerError {
>>
>>        public static void main(String[] args) {
>>            Bar bar = a -> a.aMethod((ClassB) () -> new ClassB() {
>>                public void bMethod() {
>>                }
>>            });
>>        }
>>
>>        public static interface Bar {
>>            void barMethod(ClassA a);
>>        }
>>
>>        public interface ClassA {
>>            public void aMethod(Object t);
>>        }
>>
>>        public interface ClassB {
>>            public void bMethod();
>>        }
>>
>> }
>



More information about the lambda-dev mailing list