test/tools/javac/lambda/8016177/T8016177b.java

changeset 2000
4a6acc42c3a1
parent 0
959103a6100f
equal deleted inserted replaced
1999:7993cfab8610 2000:4a6acc42c3a1
1 /*
2 * @test /nodynamiccopyright/
3 * @bug 8016177 8016178
4 * @summary structural most specific and stuckness
5 * @compile/fail/ref=T8016177b.out -XDrawDiagnostics T8016177b.java
6 */
7 class T8016177b {
8 interface ToIntFunction<X> {
9 int m(X x);
10 }
11
12 interface Function<X, Y> {
13 Y m(X x);
14 }
15
16 <U, V> Function<U, V> id(Function<U, V> arg) { return null; }
17
18 <U, V> Function<U, V> id2(Function<U, V> arg) { return null; }
19 <U> ToIntFunction<U> id2(ToIntFunction<U> arg) { return null; }
20
21
22 <X,Y,Z> X f(Y arg, Function<Y, Z> f) { return null; }
23
24 <X,Y,Z> X f2(Y arg, Function<Y, Z> f) { return null; }
25 <X,Y> X f2(Y arg, ToIntFunction<Y> f) { return null; }
26
27 <T> T g(T arg) { return null; }
28
29 void test() {
30 g(f("hi", id(x->1))); //ok
31 g(f("hi", id2(x->1))); //ambiguous
32 g(f2("hi", id(x->1))); //ok
33 }
34 }

mercurial