aoqi@0: /* aoqi@0: * @test /nodynamiccopyright/ aoqi@0: * @bug 8034223 aoqi@0: * @summary Most-specific testing for nested functional interface types aoqi@0: * @compile/fail/ref=MostSpecific14.out -XDrawDiagnostics MostSpecific14.java aoqi@0: */ aoqi@0: class MostSpecific14 { aoqi@0: interface ToNumber { Number get(); } aoqi@0: interface ToToNumber { ToNumber get(); } aoqi@0: interface Factory { T get(); } aoqi@0: aoqi@0: void m1(Factory> f) {} aoqi@0: void m1(ToToNumber f) {} aoqi@0: aoqi@0: void m2(Factory> f) {} aoqi@0: void m2(ToToNumber f) {} aoqi@0: aoqi@0: void m3(Factory> f) {} aoqi@0: void m3(ToToNumber f) {} aoqi@0: aoqi@0: aoqi@0: void test() { aoqi@0: m1(() -> () -> 23); // ok: choose ToToNumber aoqi@0: m2(() -> () -> 23); // error: ambiguous aoqi@0: m3(() -> () -> 23); // ok: choose Factory> aoqi@0: aoqi@0: m1(() -> this::getInteger); // ok: choose ToToNumber aoqi@0: m2(() -> this::getInteger); // error: ambiguous aoqi@0: m3(() -> this::getInteger); // ok: choose Factory> aoqi@0: } aoqi@0: aoqi@0: Integer getInteger() { return 23; } aoqi@0: }