aoqi@0: /* aoqi@0: * @test /nodynamiccopyright/ aoqi@0: * @bug 8003280 aoqi@0: * @summary Add lambda tests aoqi@0: * Overloaded methods take raw SAM types that have type inference according to SAM descriptor aoqi@0: should have ambiguous resolution of method aoqi@0: * @compile/fail/ref=InferenceTest_neg1_2.out -XDrawDiagnostics InferenceTest_neg1_2.java aoqi@0: */ aoqi@0: aoqi@0: public class InferenceTest_neg1_2 { aoqi@0: aoqi@0: public static void main(String[] args) { aoqi@0: InferenceTest_neg1_2 test = new InferenceTest_neg1_2(); aoqi@0: test.method(n -> null); //method 1-5 all match aoqi@0: test.method(n -> "a"); //method 2, 4 match aoqi@0: test.method(n -> 0); //method 1, 3, 5 match aoqi@0: } aoqi@0: aoqi@0: void method(SAM1 s) { //method 1 aoqi@0: Integer i = s.foo("a"); aoqi@0: } aoqi@0: aoqi@0: void method(SAM2 s) { //method 2 aoqi@0: String str = s.foo(0); aoqi@0: } aoqi@0: aoqi@0: void method(SAM3 s) { //method 3 aoqi@0: Integer i = s.get(0); aoqi@0: } aoqi@0: aoqi@0: void method(SAM4 s) { //method 4 aoqi@0: String str = s.get(0.0); aoqi@0: } aoqi@0: aoqi@0: void method(SAM5 s) { //method 5 aoqi@0: Integer i = s.get(0.0); aoqi@0: } aoqi@0: aoqi@0: interface SAM1 { aoqi@0: Integer foo(String a); aoqi@0: } aoqi@0: aoqi@0: interface SAM2 { aoqi@0: String foo(Integer a); aoqi@0: } aoqi@0: aoqi@0: interface SAM3 { aoqi@0: T get(T t); aoqi@0: } aoqi@0: aoqi@0: interface SAM4 { aoqi@0: V get(T t); aoqi@0: } aoqi@0: aoqi@0: interface SAM5 { aoqi@0: T get(Double i); aoqi@0: } aoqi@0: }