Mon, 19 Jun 2017 14:51:25 -0700
Added tag jdk8u151-b02 for changeset 732e1bab2660
mcimadamore@1415 | 1 | /* |
mcimadamore@1415 | 2 | * @test /nodynamiccopyright/ |
mcimadamore@1415 | 3 | * @bug 8003280 |
mcimadamore@1415 | 4 | * @summary Add lambda tests |
mcimadamore@1415 | 5 | * check case of nested method calls with lambda expression |
mcimadamore@1415 | 6 | * @compile/fail/ref=TargetType24.out -XDrawDiagnostics TargetType24.java |
mcimadamore@1415 | 7 | */ |
mcimadamore@1415 | 8 | |
mcimadamore@1415 | 9 | class TargetType24 { |
mcimadamore@1415 | 10 | |
mcimadamore@1415 | 11 | interface F<A, B> { |
mcimadamore@1415 | 12 | B f(A a); |
mcimadamore@1415 | 13 | } |
mcimadamore@1415 | 14 | |
mcimadamore@1415 | 15 | interface FSub<A, B> extends F<A,B> { } |
mcimadamore@1415 | 16 | |
mcimadamore@1415 | 17 | static class Array<A> { |
mcimadamore@1415 | 18 | boolean forAll(final F<A, Boolean> f) { |
mcimadamore@1415 | 19 | return false; |
mcimadamore@1415 | 20 | } |
mcimadamore@1415 | 21 | |
mcimadamore@1415 | 22 | String forAll(final FSub<A, String> f) { |
mcimadamore@1415 | 23 | return ""; |
mcimadamore@1415 | 24 | } |
mcimadamore@1415 | 25 | |
mcimadamore@1415 | 26 | String forAll2(final FSub<A, String> f) { |
mcimadamore@1415 | 27 | return ""; |
mcimadamore@1415 | 28 | } |
mcimadamore@1415 | 29 | } |
mcimadamore@1415 | 30 | |
mcimadamore@1415 | 31 | void test(Array<String> as, final Array<Character> ac) { |
vromero@2000 | 32 | final boolean b1 = as.forAll((String s) -> ac.forAll((Character c) -> false)); //ok |
vromero@2000 | 33 | final boolean b2 = as.forAll(s -> ac.forAll(c -> false)); //ambiguous |
vromero@2000 | 34 | final boolean b3 = as.forAll((String s) -> ac.forAll(c -> false)); //ambiguous |
vromero@2000 | 35 | final boolean b4 = as.forAll(s -> ac.forAll((Character c) -> false)); //ambiguous |
mcimadamore@1415 | 36 | final String s1 = as.forAll2(s -> ac.forAll2(c -> "")); //ok |
vromero@2000 | 37 | final boolean b5 = as.forAll(s -> ac.forAll(c -> "" )); //fail |
mcimadamore@1415 | 38 | final String s2 = as.forAll2(s -> ac.forAll2(c -> false)); //fail |
vromero@2000 | 39 | final boolean b6 = as.forAll((F<String, Boolean>)s -> ac.forAll((F<Character, Boolean>)c -> "")); //fail |
mcimadamore@1415 | 40 | final String s3 = as.forAll((FSub<String, String>)s -> ac.forAll((FSub<Character, String>)c -> false)); //fail |
mcimadamore@1415 | 41 | } |
mcimadamore@1415 | 42 | } |