50 lines
1.2 KiB
Java
50 lines
1.2 KiB
Java
|
/*
|
||
|
* @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<>();
|
||
|
}
|
||
|
}
|