test/tools/javac/lambda/LambdaConv21.java

changeset 1415
01c9d4161882
child 1433
4f9853659bf1
equal deleted inserted replaced
1414:843d3b191773 1415: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
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 }

mercurial