test/tools/javac/lambda/LambdaConv21.java

Thu, 31 Aug 2017 15:17:03 +0800

author
aoqi
date
Thu, 31 Aug 2017 15:17:03 +0800
changeset 2525
2eb010b6cb22
parent 1433
4f9853659bf1
parent 0
959103a6100f
permissions
-rw-r--r--

merge

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

mercurial