TargetType02.java revision 2890:e903011dafc7
185518Sjake/* 285518Sjake * @test /nodynamiccopyright/ 385518Sjake * @bug 8003280 8029718 8078024 485518Sjake * @summary Add lambda tests 585518Sjake * check overload resolution and target type inference w.r.t. generic methods 685518Sjake * Should always use lambda body structure to disambiguate overload resolution 785518Sjake * @author Maurizio Cimadamore 885518Sjake * @compile/fail/ref=TargetType02.out -XDrawDiagnostics TargetType02.java 985518Sjake */ 1085518Sjake 1185518Sjakepublic class TargetType02 { 1285518Sjake 1385518Sjake interface S1<X extends Number> { 1485518Sjake X m(Integer x); 1585518Sjake } 1685518Sjake 1785518Sjake interface S2<X extends String> { 1885518Sjake abstract X m(Integer x); 1985518Sjake } 2085518Sjake 2185518Sjake static <Z extends Number> void call1(S1<Z> s) { } 2285518Sjake 2385518Sjake static <Z extends String> void call2(S2<Z> s) { } 2485518Sjake 2585518Sjake static <Z extends Number> void call3(S1<Z> s) { } 2685518Sjake static <Z extends String> void call3(S2<Z> s) { } 2785518Sjake 2885518Sjake static <Z extends Number> Z call4(S1<Z> s) { return null; } 2985518Sjake static <Z extends String> Z call4(S2<Z> s) { return null; } 3085518Sjake 3185518Sjake void test() { 3285518Sjake call1(i -> { toString(); return i; }); 3385518Sjake call2(i -> { toString(); return i; }); 3485518Sjake call3(i -> { toString(); return i; }); 3585518Sjake call3(i -> { 3685518Sjake toString(); 3799116Sobrien return call4(j -> { 3885518Sjake return j; 3985518Sjake }); 4085518Sjake }); 4185518Sjake } 4299116Sobrien} 4399116Sobrien