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); }); }