| /* |
| * @test /nodynamiccopyright/ |
| * @bug 8062373 |
| * |
| * @summary Test diamond + anonymous classes with abstract super type |
| * @author sadayapalam |
| * @compile/fail/ref=Neg13.out Neg13.java -XDrawDiagnostics |
| * |
| */ |
| class Neg13 { |
| |
| static abstract class A<T> { |
| abstract void foo(); |
| } |
| |
| static void foo(A<String> as) {} |
| |
| public static void main(String[] args) { |
| |
| // Method invocation context - good <>(){} |
| foo(new A<>() { |
| public void foo() {} |
| }); |
| |
| // Assignment context - good <>(){} |
| A<?> aq = new A<>() { |
| public void foo() {} |
| }; |
| |
| // When the anonymous type subtypes an abstract class but is missing definitions for |
| // abstract methods, expect no overload resolution error, but an attribution error |
| // while attributing anonymous class body. |
| |
| |
| // Method invocation context - bad <>(){} |
| foo(new A<>() { |
| }); |
| |
| // Assignment invocation context - bad <>(){} |
| aq = new A<>() { |
| }; |
| |
| // Method invocation context - bad <>() |
| foo(new A<>()); |
| |
| // Assignment invocation context - bad <>() |
| aq = new A<>(); |
| } |
| } |