diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/EqualsReplaceableByObjectsCallInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/EqualsReplaceableByObjectsCallInspection.java
index 5d61b6dc09f6..74dbc683ac67 100644
--- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/EqualsReplaceableByObjectsCallInspection.java
+++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/EqualsReplaceableByObjectsCallInspection.java
@@ -123,6 +123,10 @@ public class EqualsReplaceableByObjectsCallInspection extends BaseInspection {
if (!HardcodedMethodConstants.EQUALS.equals(methodName)) {
return;
}
+ final PsiExpression qualifierExpression = getQualifierExpression(expression);
+ if (qualifierExpression instanceof PsiThisExpression || qualifierExpression instanceof PsiSuperExpression) {
+ return;
+ }
final PsiElement maybeBinary = PsiTreeUtil.skipParentsOfType(expression, PsiParenthesizedExpression.class, PsiPrefixExpression.class);
if (maybeBinary instanceof PsiBinaryExpression) {
if (processNotNullCheck((PsiBinaryExpression)maybeBinary)) {
@@ -130,7 +134,6 @@ public class EqualsReplaceableByObjectsCallInspection extends BaseInspection {
}
}
if (!checkNotNull) {
- final PsiExpression qualifierExpression = getQualifierExpression(expression);
if (qualifierExpression == null) {
return;
}
diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/migration/equals_replaceable_by_objects_call/EqualsReplaceableByObjectsCall.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/migration/equals_replaceable_by_objects_call/EqualsReplaceableByObjectsCall.java
index b02a5a72e455..91f4f15b5320 100644
--- a/plugins/InspectionGadgets/test/com/siyeh/igtest/migration/equals_replaceable_by_objects_call/EqualsReplaceableByObjectsCall.java
+++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/migration/equals_replaceable_by_objects_call/EqualsReplaceableByObjectsCall.java
@@ -35,4 +35,18 @@ class EqualsReplaceableByObjectsCall {
String s;
T copy() { T t = new T(); t.s = s; return t; }
}
+
+ static class X extends T {
+ public boolean equals(Object o) {
+ return super.equals(o);
+ }
+
+ boolean same(T t) {
+ return this == t || this != null && this.equals(t);
+ }
+
+ boolean different(T t) {
+ return t != this && (t == null || !t.equals(this));
+ }
+ }
}
\ No newline at end of file
diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/migration/equals_replaceable_by_objects_call/EqualsReplaceableByObjectsCallCheckNull.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/migration/equals_replaceable_by_objects_call/EqualsReplaceableByObjectsCallCheckNull.java
index 2336a461c554..294169a942a3 100644
--- a/plugins/InspectionGadgets/test/com/siyeh/igtest/migration/equals_replaceable_by_objects_call/EqualsReplaceableByObjectsCallCheckNull.java
+++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/migration/equals_replaceable_by_objects_call/EqualsReplaceableByObjectsCallCheckNull.java
@@ -35,4 +35,18 @@ class EqualsReplaceableByObjectsCall {
String s;
T copy() { T t = new T(); t.s = s; return t; }
}
+
+ static class X extends T {
+ public boolean equals(Object o) {
+ return super.equals(o);
+ }
+
+ boolean same(T t) {
+ return this == t || this != null && this.equals(t);
+ }
+
+ boolean different(T t) {
+ return t != this && (t == null || !t.equals(this));
+ }
+ }
}
\ No newline at end of file