IG: Use ExpressionUtils.resolveLocalVariable() (IDEA-CR-44335)

This commit is contained in:
Bas Leijdekkers
2019-03-08 11:32:42 +01:00
parent 5abf8a14a2
commit 17b8cb133a
2 changed files with 13 additions and 14 deletions
@@ -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);
}
@@ -42,7 +42,7 @@ public class AssignmentToForLoopParameter
void list(List<String> strings) {
for (String string : strings) {
<warning descr="Assignment to for-loop parameter '(string)'">(string)</warning> = "";
(<warning descr="Assignment to for-loop parameter 'string'">string</warning>) = "";
System.out.println("string = " + string);
}
}