/*
* @test /nodynamiccopyright/
* @bug 6563143 8008436 8009138
* @summary javac should issue a warning for overriding equals without hashCode
* @summary javac should not issue a warning for overriding equals without hasCode
* @summary javac, equals-hashCode warning tuning
* if hashCode has been overriden by a superclass
* @compile/ref=EqualsHashCodeWarningTest.out -Xlint:overrides -XDrawDiagnostics EqualsHashCodeWarningTest.java
*/
import java.util.Comparator;
public class EqualsHashCodeWarningTest {
@Override
public boolean equals(Object o) {
return o == this;
}
@Override
public int hashCode() {
return 0;
}
public Comparator m() {
return new Comparator() {
@Override
public boolean equals(Object o) {return true;}
@Override
public int compare(Object o1, Object o2) {
return 0;
}
};
}
}
class SubClass extends EqualsHashCodeWarningTest {
@Override
public boolean equals(Object o) {
return true;
}
}
@SuppressWarnings("overrides")
class DontWarnMe {
@Override
public boolean equals(Object o) {
return true;
}
}
class DoWarnMe {
@Override
public boolean equals(Object o) {
return o == this;
}
}
abstract class IamAbstractGetMeOutOfHere {
public boolean equals(Object o){return true;}
}
interface I {
public boolean equals(Object o);
}
enum E {
A, B
}
@interface anno {}