import com.intellij.openapi.project.Project;
import com.intellij.psi.*;
import com.intellij.psi.tree.IElementType;
+import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.util.PsiUtil;
import com.intellij.psi.util.TypeConversionUtil;
import com.siyeh.InspectionGadgetsBundle;
if (rhsType == null || rhsType instanceof PsiPrimitiveType || TypeConversionUtil.isEnumType(rhsType)) {
return;
}
+ if (lhs instanceof PsiThisExpression || rhs instanceof PsiThisExpression) {
+ final PsiMethod method = PsiTreeUtil.getParentOfType(expression, PsiMethod.class);
+ if (method != null && "equals".equals(method.getName())) {
+ return;
+ }
+ }
final String operationText = expression.getOperationSign().getText();
final String prefix = tokenType.equals(JavaTokenType.NE) ? "!" : "";
registerError(expression, operationText, prefix);
--- /dev/null
+class Demo {
+ private Object field;
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this <caret>== obj) {
+ return true;
+ }
+ else {
+ Demo other = (Demo)obj;
+ return field == other.field;
+ }
+ }
+}
\ No newline at end of file
public void testPrimitiveComparison() { assertQuickfixNotAvailable(); }
public void testSimpleObjectComparison() { doTest(true, false); }
public void testNegatedObjectComparison() { doTest(false, false); }
+ public void testCompareThisInEqualsMethod() { assertQuickfixNotAvailable(); }
+ public void testCompareFieldInEqualsMethod() { doTest(true, false); }
@Override
protected void setUp() throws Exception {