java-topology/test/langtools/tools/javac/6563143/EqualsHashCodeWarningTest.java
russell@unturf.com 0a580b313d undefect. CWE-407 — 63 sites patched across 27 ecosystems
Authors: russell@unturf.com · brackishbert@gmail.com · foxhop.net · TimeHexOn.com

Patches, unit tests, benchmarks, whitepaper, and outreach briefs.
Public domain — no copyright claimed. Use freely.
2026-03-26 17:11:57 -04:00

71 lines
1.5 KiB
Java

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