From 17b8cb133a0e98a4003cc17c7761db4b6d411be5 Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Thu, 7 Mar 2019 12:10:49 +0100 Subject: [PATCH] IG: Use ExpressionUtils.resolveLocalVariable() (IDEA-CR-44335) --- ...ssignmentToForLoopParameterInspection.java | 25 +++++++++---------- .../AssignmentToForLoopParameter.java | 2 +- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/assignment/AssignmentToForLoopParameterInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/assignment/AssignmentToForLoopParameterInspection.java index eb70fcfaf31b..e51e5d88110a 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/assignment/AssignmentToForLoopParameterInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/assignment/AssignmentToForLoopParameterInspection.java @@ -10,6 +10,7 @@ import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; import com.siyeh.ig.InspectionGadgetsFix; import com.siyeh.ig.fixes.ExtractParameterAsLocalVariableFix; +import com.siyeh.ig.psiutils.ExpressionUtils; import com.siyeh.ig.psiutils.ParenthesesUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -89,11 +90,10 @@ public class AssignmentToForLoopParameterInspection extends BaseInspection { } private void checkForForLoopParam(PsiExpression expression) { - final PsiElement element = resolveLocal(expression); - if (!(element instanceof PsiLocalVariable)) { + final PsiLocalVariable variable = ExpressionUtils.resolveLocalVariable(expression); + if (variable == null) { return; } - final PsiLocalVariable variable = (PsiLocalVariable)element; final PsiElement variableParent = variable.getParent(); if (!(variableParent instanceof PsiDeclarationStatement)) { return; @@ -118,22 +118,21 @@ public class AssignmentToForLoopParameterInspection extends BaseInspection { if (!m_checkForeachParameters) { return; } - final PsiElement element = resolveLocal(expression); + expression = ParenthesesUtils.stripParentheses(expression); + if (!(expression instanceof PsiReferenceExpression)) { + return; + } + final PsiReferenceExpression referenceExpression = (PsiReferenceExpression)expression; + if (referenceExpression.getQualifierExpression() != null) { + return; + } + PsiElement element = referenceExpression.resolve(); if (!(element instanceof PsiParameter) || !(element.getParent() instanceof PsiForeachStatement)) { return; } registerError(expression, Boolean.TRUE); } - private PsiElement resolveLocal(PsiExpression expression) { - expression = ParenthesesUtils.stripParentheses(expression); - if (!(expression instanceof PsiReferenceExpression)) { - return null; - } - final PsiReferenceExpression referenceExpression = (PsiReferenceExpression)expression; - return referenceExpression.getQualifierExpression() == null ? referenceExpression.resolve() : null; - } - private boolean isInForStatementBody(PsiExpression expression, PsiForStatement statement) { return PsiTreeUtil.isAncestor(statement.getBody(), expression, true); } diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/assignment/assignment_to_for_loop_parameter/AssignmentToForLoopParameter.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/assignment/assignment_to_for_loop_parameter/AssignmentToForLoopParameter.java index 9051757e9712..1cee2e740cde 100644 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/assignment/assignment_to_for_loop_parameter/AssignmentToForLoopParameter.java +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/assignment/assignment_to_for_loop_parameter/AssignmentToForLoopParameter.java @@ -42,7 +42,7 @@ public class AssignmentToForLoopParameter void list(List strings) { for (String string : strings) { - (string) = ""; + (string) = ""; System.out.println("string = " + string); } }