8078660: Misleading recommendation from diamond finder.
Summary: javac should recommend diamond usage if that could lead to a change in program behavior.
Reviewed-by: mcimadamore
/*
* @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<>();
}
}