LambdaConv21.java revision 1414:01c9d4161882
1/*
2 * @test /nodynamiccopyright/
3 * @bug 8003280
4 * @summary Add lambda tests
5 *  check that code generation handles void-compatibility correctly
6 * @compile/fail/ref=LambdaConv21.out -XDrawDiagnostics LambdaConv21.java
7 */
8
9class LambdaConv21 {
10
11    interface SAM_void<X> {
12        void m();
13    }
14
15    interface SAM_java_lang_Void {
16        Void m();
17    }
18
19    static void m_void() { }
20
21    static Void m_java_lang_Void() { return null; }
22
23    static void testExpressionLambda() {
24        SAM_void s1 = ()->m_void(); //ok
25        SAM_java_lang_Void s2 = ()->m_void(); //no - incompatible target
26        SAM_void s3 = ()->m_java_lang_Void(); //no - incompatible target
27        SAM_java_lang_Void s4 = ()->m_java_lang_Void(); //ok
28    }
29
30    static void testStatementLambda() {
31        SAM_void s1 = ()-> { m_void(); }; //ok
32        SAM_java_lang_Void s2 = ()-> { m_void(); }; //no - missing return value
33        SAM_void s3 = ()-> { return m_java_lang_Void(); }; //no - unexpected return value
34        SAM_java_lang_Void s4 = ()-> { return m_java_lang_Void(); }; //ok
35        SAM_void s5 = ()-> { m_java_lang_Void(); }; //ok
36        SAM_java_lang_Void s6 = ()-> { m_java_lang_Void(); }; //no - missing return value
37    }
38}
39