test/tools/javac/6563143/EqualsHashCodeWarningTest.java

Thu, 31 Aug 2017 15:17:03 +0800

author
aoqi
date
Thu, 31 Aug 2017 15:17:03 +0800
changeset 2525
2eb010b6cb22
parent 1620
3806171b52d8
parent 0
959103a6100f
permissions
-rw-r--r--

merge

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

mercurial