test/tools/javac/6563143/OverridesEqualsButNotHashCodeTest.java

changeset 1607
bd49e0304281
parent 1588
2620c953e9fe
equal deleted inserted replaced
1606:ccbe7ffdd867 1607:bd49e0304281
1 /* 1 /*
2 * @test /nodynamiccopyright/ 2 * @test /nodynamiccopyright/
3 * @bug 6563143 3 * @bug 6563143 8008436
4 * @summary javac should issue a warning for overriding equals without hashCode 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 * if hashCode has been overriden by a superclass
5 * @compile/ref=OverridesEqualsButNotHashCodeTest.out -Xlint:overrides -XDrawDiagnostics OverridesEqualsButNotHashCodeTest.java 7 * @compile/ref=OverridesEqualsButNotHashCodeTest.out -Xlint:overrides -XDrawDiagnostics OverridesEqualsButNotHashCodeTest.java
6 */ 8 */
7 9
8 @SuppressWarnings("overrides")
9 public class OverridesEqualsButNotHashCodeTest { 10 public class OverridesEqualsButNotHashCodeTest {
11 @Override
12 public boolean equals(Object o) {
13 return o == this;
14 }
15
16 @Override
17 public int hashCode() {
18 return 0;
19 }
20 }
21
22 class SubClass extends OverridesEqualsButNotHashCodeTest {
10 @Override 23 @Override
11 public boolean equals(Object o) { 24 public boolean equals(Object o) {
12 return o == this; 25 return o == this;
13 } 26 }
14 } 27 }
15 28
16 class Other { 29 @SuppressWarnings("overrides")
30 class NoWarning {
17 @Override 31 @Override
18 public boolean equals(Object o) { 32 public boolean equals(Object o) {
19 return o == this; 33 return o == this;
20 } 34 }
21 } 35 }
22 36
37 class DoWarnMe {
38 @Override
39 public boolean equals(Object o) {
40 return o == this;
41 }
42 }

mercurial