1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/test/tools/javac/lambda/8016177/T8016177b.java Mon Sep 02 22:38:36 2013 +0100 1.3 @@ -0,0 +1,34 @@ 1.4 +/* 1.5 + * @test /nodynamiccopyright/ 1.6 + * @bug 8016177 8016178 1.7 + * @summary structural most specific and stuckness 1.8 + * @compile/fail/ref=T8016177b.out -XDrawDiagnostics T8016177b.java 1.9 + */ 1.10 +class T8016177b { 1.11 + interface ToIntFunction<X> { 1.12 + int m(X x); 1.13 + } 1.14 + 1.15 + interface Function<X, Y> { 1.16 + Y m(X x); 1.17 + } 1.18 + 1.19 + <U, V> Function<U, V> id(Function<U, V> arg) { return null; } 1.20 + 1.21 + <U, V> Function<U, V> id2(Function<U, V> arg) { return null; } 1.22 + <U> ToIntFunction<U> id2(ToIntFunction<U> arg) { return null; } 1.23 + 1.24 + 1.25 + <X,Y,Z> X f(Y arg, Function<Y, Z> f) { return null; } 1.26 + 1.27 + <X,Y,Z> X f2(Y arg, Function<Y, Z> f) { return null; } 1.28 + <X,Y> X f2(Y arg, ToIntFunction<Y> f) { return null; } 1.29 + 1.30 + <T> T g(T arg) { return null; } 1.31 + 1.32 + void test() { 1.33 + g(f("hi", id(x->1))); //ok 1.34 + g(f("hi", id2(x->1))); //ambiguous 1.35 + g(f2("hi", id(x->1))); //ok 1.36 + } 1.37 +}