|
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 |
|
9 class 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 } |