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