1 /*
2  * @test /nodynamiccopyright/
3  * @bug 8003280
4  * @summary Add lambda tests
5  *  check that that void compatibility affects overloading as expected
6  * @compile VoidCompatibility.java
7  */
8 class VoidCompatibility {
9 
run()10     interface Runnable { void run(); } //1
get()11     interface Thunk<T> { T get(); } //2
12 
schedule(Runnable r)13     void schedule(Runnable r) { }
schedule(Thunk<?> t)14     void schedule(Thunk<?> t) { }
15 
test()16     void test() {
17         schedule(() -> System.setProperty("done", "true")); //non-void most specific
18         schedule(() -> { System.setProperty("done", "true"); }); //1
19         schedule(() -> { return System.setProperty("done", "true"); }); //2
20         schedule(() -> System.out.println("done")); //1
21         schedule(() -> { System.out.println("done"); }); //1
22         schedule(Thread::yield); //1
23         schedule(Thread::getAllStackTraces); //non-void most specific
24         schedule(Thread::interrupted); //1 (most specific)
25     }
26 }
27