mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
ExpressionUtils#isConstantArray: allow usage in for-each
This commit is contained in:
+6
-4
@@ -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);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user