aoqi@0: /* aoqi@0: * @test /nodynamiccopyright/ aoqi@0: * @bug 8003280 aoqi@0: * @summary Add lambda tests aoqi@0: * check that SAM conversion handles Object members correctly aoqi@0: * @author Alex Buckley aoqi@0: * @author Maurizio Cimadamore aoqi@0: * @compile/fail/ref=LambdaConv09.out -XDrawDiagnostics LambdaConv09.java aoqi@0: */ aoqi@0: aoqi@0: class LambdaConv09 { aoqi@0: aoqi@0: // Not a SAM type; not enough abstract methods aoqi@0: interface Foo1 {} aoqi@0: aoqi@0: // SAM type; Foo has no abstract methods aoqi@0: interface Foo2 { boolean equals(Object object); } aoqi@0: aoqi@0: aoqi@0: // Not a SAM type; Foo still has no abstract methods aoqi@0: interface Foo3 extends Foo2 { public abstract String toString(); } aoqi@0: aoqi@0: // SAM type; Bar has one abstract non-Object method aoqi@0: interface Foo4 extends Foo2 { int compare(T o1, T o2); } aoqi@0: aoqi@0: // Not a SAM type; still no valid abstract methods aoqi@0: interface Foo5 { aoqi@0: boolean equals(Object object); aoqi@0: String toString(); aoqi@0: } aoqi@0: aoqi@0: // SAM type; Foo6 has one abstract non-Object method aoqi@0: interface Foo6 { aoqi@0: boolean equals(Object obj); aoqi@0: int compare(T o1, T o2); aoqi@0: } aoqi@0: aoqi@0: // SAM type; Foo6 has one abstract non-Object method aoqi@0: interface Foo7 extends Foo2, Foo6 { } aoqi@0: aoqi@0: void test() { aoqi@0: Foo1 f1 = ()-> { }; aoqi@0: Foo2 f2 = ()-> { }; aoqi@0: Foo3 f3 = x -> true; aoqi@0: Foo4 f4 = (x, y) -> 1; aoqi@0: Foo5 f5 = x -> true; aoqi@0: Foo6 f6 = (x, y) -> 1; aoqi@0: Foo7 f7 = (x, y) -> 1; aoqi@0: } aoqi@0: }