From 4759008b7d26d8bb9fb76de47dd99f3c106ebb93 Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Tue, 10 Jul 2018 13:29:16 +0700 Subject: [PATCH] IndexOfReplaceableByContains: support parentheses --- ...ndexOfReplaceableByContainsInspection.java | 20 +++++++----------- ...ndexOfReplaceableByContainsInspection.java | 21 ++++++++----------- .../IndexOfReplaceableByContains.java | 1 + 3 files changed, 18 insertions(+), 24 deletions(-) diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/IndexOfReplaceableByContainsInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/IndexOfReplaceableByContainsInspection.java index 7dbf24b3c453..62a0fe7eace8 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/IndexOfReplaceableByContainsInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/IndexOfReplaceableByContainsInspection.java @@ -53,7 +53,7 @@ public class IndexOfReplaceableByContainsInspection @NotNull public String buildErrorString(Object... infos) { final PsiBinaryExpression expression = (PsiBinaryExpression)infos[0]; - final PsiExpression lhs = expression.getLOperand(); + final PsiExpression lhs = PsiUtil.skipParenthesizedExprDown(expression.getLOperand()); final String text; if (lhs instanceof PsiMethodCallExpression) { final PsiMethodCallExpression callExpression = @@ -63,7 +63,7 @@ public class IndexOfReplaceableByContainsInspection } else { final PsiMethodCallExpression callExpression = - (PsiMethodCallExpression)expression.getROperand(); + (PsiMethodCallExpression)PsiUtil.skipParenthesizedExprDown(expression.getROperand()); assert callExpression != null; text = createContainsExpressionText(callExpression, true, expression.getOperationTokenType(), new CommentTracker()); @@ -88,8 +88,8 @@ public class IndexOfReplaceableByContainsInspection return; } final PsiBinaryExpression expression = (PsiBinaryExpression)element; - final PsiExpression lhs = expression.getLOperand(); - final PsiExpression rhs = expression.getROperand(); + final PsiExpression lhs = PsiUtil.skipParenthesizedExprDown(expression.getLOperand()); + final PsiExpression rhs = PsiUtil.skipParenthesizedExprDown(expression.getROperand()); CommentTracker commentTracker = new CommentTracker(); final String newExpressionText; if (lhs instanceof PsiMethodCallExpression) { @@ -162,14 +162,10 @@ public class IndexOfReplaceableByContainsInspection public void visitBinaryExpression( PsiBinaryExpression expression) { super.visitBinaryExpression(expression); - final PsiExpression rhs = expression.getROperand(); - if (rhs == null) { - return; - } - if (!ComparisonUtils.isComparison(expression)) { - return; - } - final PsiExpression lhs = expression.getLOperand(); + final PsiExpression rhs = PsiUtil.skipParenthesizedExprDown(expression.getROperand()); + final PsiExpression lhs = PsiUtil.skipParenthesizedExprDown(expression.getLOperand()); + if (rhs == null || lhs == null) return; + if (!ComparisonUtils.isComparison(expression)) return; if (lhs instanceof PsiMethodCallExpression) { if (canBeReplacedByContains(lhs, rhs, false, expression.getOperationTokenType())) { diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/ListIndexOfReplaceableByContainsInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/ListIndexOfReplaceableByContainsInspection.java index bf3a7b2a6d59..c6451f03d616 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/ListIndexOfReplaceableByContainsInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/ListIndexOfReplaceableByContainsInspection.java @@ -20,6 +20,7 @@ import com.intellij.openapi.project.Project; import com.intellij.psi.*; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.tree.IElementType; +import com.intellij.psi.util.PsiUtil; import com.siyeh.HardcodedMethodConstants; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; @@ -47,7 +48,7 @@ public class ListIndexOfReplaceableByContainsInspection @NotNull public String buildErrorString(Object... infos) { final PsiBinaryExpression expression = (PsiBinaryExpression)infos[0]; - final PsiExpression lhs = expression.getLOperand(); + final PsiExpression lhs = PsiUtil.skipParenthesizedExprDown(expression.getLOperand()); final String text; CommentTracker tracker = new CommentTracker(); if (lhs instanceof PsiMethodCallExpression) { @@ -58,7 +59,7 @@ public class ListIndexOfReplaceableByContainsInspection } else { final PsiMethodCallExpression callExpression = - (PsiMethodCallExpression)expression.getROperand(); + (PsiMethodCallExpression)PsiUtil.skipParenthesizedExprDown(expression.getROperand()); assert callExpression != null; text = createContainsExpressionText(callExpression, true, expression.getOperationTokenType(), tracker); @@ -80,8 +81,8 @@ public class ListIndexOfReplaceableByContainsInspection protected void doFix(Project project, ProblemDescriptor descriptor) { final PsiBinaryExpression expression = (PsiBinaryExpression)descriptor.getPsiElement(); - final PsiExpression lhs = expression.getLOperand(); - final PsiExpression rhs = expression.getROperand(); + final PsiExpression lhs = PsiUtil.skipParenthesizedExprDown(expression.getLOperand()); + final PsiExpression rhs = PsiUtil.skipParenthesizedExprDown(expression.getROperand()); CommentTracker tracker = new CommentTracker(); final String newExpressionText; if (lhs instanceof PsiMethodCallExpression) { @@ -148,14 +149,10 @@ public class ListIndexOfReplaceableByContainsInspection public void visitBinaryExpression( PsiBinaryExpression expression) { super.visitBinaryExpression(expression); - final PsiExpression rhs = expression.getROperand(); - if (rhs == null) { - return; - } - if (!ComparisonUtils.isComparison(expression)) { - return; - } - final PsiExpression lhs = expression.getLOperand(); + final PsiExpression rhs = PsiUtil.skipParenthesizedExprDown(expression.getROperand()); + final PsiExpression lhs = PsiUtil.skipParenthesizedExprDown(expression.getLOperand()); + if (rhs == null || lhs == null) return; + if (!ComparisonUtils.isComparison(expression)) return; if (lhs instanceof PsiMethodCallExpression) { if (canBeReplacedByContains(lhs, rhs, false, expression.getOperationTokenType())) { diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/migration/index_of_replaceable_by_contains/IndexOfReplaceableByContains.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/migration/index_of_replaceable_by_contains/IndexOfReplaceableByContains.java index 6781c1edba9c..df372249b7c8 100644 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/migration/index_of_replaceable_by_contains/IndexOfReplaceableByContains.java +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/migration/index_of_replaceable_by_contains/IndexOfReplaceableByContains.java @@ -7,5 +7,6 @@ class IndexOfReplaceableByContains { boolean d = haystack.indexOf(needle) > -1; boolean e = haystack.indexOf(needle) >= 0; + boolean f = (haystack.indexOf(needle)) >= (0); } } \ No newline at end of file