aoqi@0: /*
aoqi@0: * @test /nodynamiccopyright/
aoqi@0: * @bug 8003280
aoqi@0: * @summary Add lambda tests
aoqi@0: * check case of nested method calls with lambda expression
aoqi@0: * @compile/fail/ref=TargetType24.out -XDrawDiagnostics TargetType24.java
aoqi@0: */
aoqi@0:
aoqi@0: class TargetType24 {
aoqi@0:
aoqi@0: interface F {
aoqi@0: B f(A a);
aoqi@0: }
aoqi@0:
aoqi@0: interface FSub extends F { }
aoqi@0:
aoqi@0: static class Array {
aoqi@0: boolean forAll(final F f) {
aoqi@0: return false;
aoqi@0: }
aoqi@0:
aoqi@0: String forAll(final FSub f) {
aoqi@0: return "";
aoqi@0: }
aoqi@0:
aoqi@0: String forAll2(final FSub f) {
aoqi@0: return "";
aoqi@0: }
aoqi@0: }
aoqi@0:
aoqi@0: void test(Array as, final Array ac) {
aoqi@0: final boolean b1 = as.forAll((String s) -> ac.forAll((Character c) -> false)); //ok
aoqi@0: final boolean b2 = as.forAll(s -> ac.forAll(c -> false)); //ambiguous
aoqi@0: final boolean b3 = as.forAll((String s) -> ac.forAll(c -> false)); //ambiguous
aoqi@0: final boolean b4 = as.forAll(s -> ac.forAll((Character c) -> false)); //ambiguous
aoqi@0: final String s1 = as.forAll2(s -> ac.forAll2(c -> "")); //ok
aoqi@0: final boolean b5 = as.forAll(s -> ac.forAll(c -> "" )); //fail
aoqi@0: final String s2 = as.forAll2(s -> ac.forAll2(c -> false)); //fail
aoqi@0: final boolean b6 = as.forAll((F)s -> ac.forAll((F)c -> "")); //fail
aoqi@0: final String s3 = as.forAll((FSub)s -> ac.forAll((FSub)c -> false)); //fail
aoqi@0: }
aoqi@0: }