Call to defender method with missing return keyword hangs the JVM

Per Rovegård per at rovegard.se
Wed Dec 14 15:52:19 PST 2011


Hi,

To test defender methods, I wrote the following tiny test program:

public class TestDefender {
        public static String sayHi(A a) {
                return "Hello from " + a;
        }

        public static interface A {
                String sayHi() default { sayHi(this); }
        }

        public static class AImpl implements A { }

        public static void main(String[] args) throws Exception {
                System.out.println(new AImpl().sayHi());
        }
}

In the defender/default implementation of sayHi, I assumed that the
compiler would infer that a value needs to be returned (like with
closures). And the compiler indeed doesn't complain about the missing
"return" keyword.

But when I run the program, it simply hangs.

Is this a known bug?

Br,
Per Rovegård


More information about the lambda-dev mailing list