From b7b4e1d8bcda706201e9a90ac759c21d007b4902 Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Fri, 22 Sep 2017 16:17:59 +0200 Subject: [PATCH] fix "'equals()' call can be replaced with '=='" inspection false positive --- .../src/com/siyeh/ig/psiutils/ClassUtils.java | 24 ++++++++++--------- ...jectEqualsCanBeEqualityInspectionTest.java | 8 +++++++ 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ClassUtils.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ClassUtils.java index 09ba8d08d478..3cbac2d5f6b2 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ClassUtils.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ClassUtils.java @@ -233,17 +233,19 @@ public class ClassUtils { @Nullable public static PsiClassInitializer getDoubleBraceInitializer(PsiAnonymousClass aClass) { final PsiClassInitializer[] initializers = aClass.getInitializers(); - if (initializers.length != 1) return null; + if (initializers.length != 1) { + return null; + } final PsiClassInitializer initializer = initializers[0]; - if (initializer.hasModifierProperty(PsiModifier.STATIC)) return null; - final PsiField[] fields = aClass.getFields(); - if (fields.length != 0) return null; - final PsiMethod[] methods = aClass.getMethods(); - if (methods.length != 0) return null; - final PsiClass[] innerClasses = aClass.getInnerClasses(); - if (innerClasses.length != 0) return null; - final PsiJavaCodeReferenceElement reference = aClass.getBaseClassReference(); - if (reference.resolve() == null) return null; + if (initializer.hasModifierProperty(PsiModifier.STATIC)) { + return null; + } + if (aClass.getFields().length != 0 || aClass.getMethods().length != 0 || aClass.getInnerClasses().length != 0) { + return null; + } + if (aClass.getBaseClassReference().resolve() == null) { + return null; + } return initializer; } @@ -251,7 +253,7 @@ public class ClassUtils { if (aClass == null) { return false; } - if (!aClass.hasModifierProperty(PsiModifier.FINAL) && !hasOnlyPrivateConstructors(aClass)) { + if (!aClass.hasModifierProperty(PsiModifier.FINAL) || !hasOnlyPrivateConstructors(aClass)) { return false; } final PsiMethod[] methods = aClass.findMethodsByName("equals", true); diff --git a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/performance/ObjectEqualsCanBeEqualityInspectionTest.java b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/performance/ObjectEqualsCanBeEqualityInspectionTest.java index 49b444bbe2cf..f8102a08df1d 100644 --- a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/performance/ObjectEqualsCanBeEqualityInspectionTest.java +++ b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/performance/ObjectEqualsCanBeEqualityInspectionTest.java @@ -52,6 +52,14 @@ public class ObjectEqualsCanBeEqualityInspectionTest extends LightInspectionTest "}"); } + public void testString() { + doTest("class X {" + + " boolean isRighteous(String a) {" + + " return a.equals(\"righteous\");" + + " }" + + "}"); + } + @Nullable @Override protected InspectionProfileEntry getInspection() {