/* * @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 {}