aoqi@0: /* aoqi@0: * @test /nodynamiccopyright/ aoqi@0: * @bug 8003280 aoqi@0: * @summary Add lambda tests aoqi@0: * check that code generation handles void-compatibility correctly aoqi@0: * @compile/fail/ref=LambdaConv21.out -XDrawDiagnostics LambdaConv21.java aoqi@0: */ aoqi@0: aoqi@0: class LambdaConv21 { aoqi@0: aoqi@0: interface SAM_void { aoqi@0: void m(); aoqi@0: } aoqi@0: aoqi@0: interface SAM_java_lang_Void { aoqi@0: Void m(); aoqi@0: } aoqi@0: aoqi@0: static void m_void() { } aoqi@0: aoqi@0: static Void m_java_lang_Void() { return null; } aoqi@0: aoqi@0: static void testExpressionLambda() { aoqi@0: SAM_void s1 = ()->m_void(); //ok aoqi@0: SAM_java_lang_Void s2 = ()->m_void(); //no - incompatible target aoqi@0: SAM_void s3 = ()->m_java_lang_Void(); //ok - expression statement lambda is compatible with void aoqi@0: SAM_java_lang_Void s4 = ()->m_java_lang_Void(); //ok aoqi@0: } aoqi@0: aoqi@0: static void testStatementLambda() { aoqi@0: SAM_void s1 = ()-> { m_void(); }; //ok aoqi@0: SAM_java_lang_Void s2 = ()-> { m_void(); }; //no - missing return value aoqi@0: SAM_void s3 = ()-> { return m_java_lang_Void(); }; //no - unexpected return value aoqi@0: SAM_java_lang_Void s4 = ()-> { return m_java_lang_Void(); }; //ok aoqi@0: SAM_void s5 = ()-> { m_java_lang_Void(); }; //ok aoqi@0: SAM_java_lang_Void s6 = ()-> { m_java_lang_Void(); }; //no - missing return value aoqi@0: } aoqi@0: }