1/* 2 * @test /nodynamiccopyright/ 3 * @bug 6563143 8008436 8009138 4 * @summary javac should issue a warning for overriding equals without hashCode 5 * @summary javac should not issue a warning for overriding equals without hasCode 6 * @summary javac, equals-hashCode warning tuning 7 * if hashCode has been overriden by a superclass 8 * @compile/ref=EqualsHashCodeWarningTest.out -Xlint:overrides -XDrawDiagnostics EqualsHashCodeWarningTest.java 9 */ 10 11import java.util.Comparator; 12 13public class EqualsHashCodeWarningTest { 14 @Override 15 public boolean equals(Object o) { 16 return o == this; 17 } 18 19 @Override 20 public int hashCode() { 21 return 0; 22 } 23 24 public Comparator m() { 25 return new Comparator() { 26 @Override 27 public boolean equals(Object o) {return true;} 28 29 @Override 30 public int compare(Object o1, Object o2) { 31 return 0; 32 } 33 }; 34 } 35} 36 37class SubClass extends EqualsHashCodeWarningTest { 38 @Override 39 public boolean equals(Object o) { 40 return true; 41 } 42} 43 44@SuppressWarnings("overrides") 45class DontWarnMe { 46 @Override 47 public boolean equals(Object o) { 48 return true; 49 } 50} 51 52class DoWarnMe { 53 @Override 54 public boolean equals(Object o) { 55 return o == this; 56 } 57} 58 59abstract class IamAbstractGetMeOutOfHere { 60 public boolean equals(Object o){return true;} 61} 62 63interface I { 64 public boolean equals(Object o); 65} 66 67enum E { 68 A, B 69} 70 71@interface anno {} 72