From 07ade0780a1d99cb5ba5e2c5fce24c06e14189ad Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Tue, 17 Apr 2018 12:41:17 +0700 Subject: [PATCH] ExpressionUtils#isConstantArray: allow usage in for-each --- .../src/com/siyeh/ig/psiutils/ExpressionUtils.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ExpressionUtils.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ExpressionUtils.java index f8983571922d..e9e5963e5b37 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ExpressionUtils.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ExpressionUtils.java @@ -1203,17 +1203,19 @@ public class ExpressionUtils { if (!(e instanceof PsiReferenceExpression)) return true; PsiReferenceExpression ref = (PsiReferenceExpression)e; if (!ref.isReferenceTo(array)) return true; - PsiExpression parent = tryCast(PsiUtil.skipParenthesizedExprUp(ref.getParent()), PsiExpression.class); - if (parent == null) return false; + PsiElement parent = PsiUtil.skipParenthesizedExprUp(ref.getParent()); + if (parent instanceof PsiForeachStatement && PsiTreeUtil.isAncestor(((PsiForeachStatement)parent).getIteratedValue(), ref, false)) { + return true; + } if (parent instanceof PsiReferenceExpression) { - if (isReferenceTo(getArrayFromLengthExpression(parent), array)) return true; + if (isReferenceTo(getArrayFromLengthExpression((PsiExpression)parent), array)) return true; if (parent.getParent() instanceof PsiMethodCallExpression && MethodCallUtils.isCallToMethod((PsiMethodCallExpression)parent.getParent(), CommonClassNames.JAVA_LANG_OBJECT, null, "clone", PsiType.EMPTY_ARRAY)) { return true; } } - return parent instanceof PsiArrayAccessExpression && !PsiUtil.isAccessedForWriting(parent); + return parent instanceof PsiArrayAccessExpression && !PsiUtil.isAccessedForWriting((PsiExpression)parent); }); }