blob: 7c16a8b757235a71c56e3ba393f0f373c7d81a81 [file] [log] [blame]
class Test1 {
interface VoidReturnType {
void foo();
}
{
VoidReturnType aI = () -> System.out.println();
VoidReturnType aI1 = () -> {System.out.println();};
VoidReturnType aI2 = <error descr="Unexpected return value">() -> {return 1;}</error>;
VoidReturnType aI3 = <error descr="Incompatible return type int in lambda expression">() -> 1</error>;
VoidReturnType aI4 = () -> {return;};
}
}
class Test2 {
interface IntReturnType {
int foo();
}
{
IntReturnType aI = <error descr="Incompatible return type void in lambda expression">() -> System.out.println()</error>;
IntReturnType aI1 = () -> {System.out.println();<error descr="Missing return statement">}</error>;
IntReturnType aI2 = () -> {return 1;};
IntReturnType aI3 = () -> 1;
}
}
class Test3 {
interface XReturnType<X> {
X foo();
}
{
XReturnType<Object> aI = <error descr="Incompatible return type void in lambda expression">() -> System.out.println()</error>;
XReturnType<Object> aI1 = () -> {System.out.println();<error descr="Missing return statement">}</error>;
XReturnType<Object> aI2 = () -> {return 1;};
XReturnType<Object> aI3 = () -> 1;
XReturnType<Object> aI4 = () -> {<error descr="Missing return statement">}</error>;
}
}
class Test4 {
class Y<T>{}
interface YXReturnType<X> {
Y<X> foo();
}
{
YXReturnType<Object> aI = <error descr="Incompatible return type void in lambda expression">() -> System.out.println()</error>;
YXReturnType<Object> aI1 = () -> {System.out.println();<error descr="Missing return statement">}</error>;
YXReturnType<Object> aI2 = <error descr="Incompatible return type int in lambda expression">() -> {return 1;}</error>;
YXReturnType<Object> aI3 = <error descr="Incompatible return type int in lambda expression">() -> 1</error>;
YXReturnType<Object> aI4 = () -> new Y<Object>(){};
YXReturnType<Object> aIDiamond = () -> new Y<>();
}
}