mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-94471 for intention ('Remove unnecessary parentheses' is not suggested inside array access)
This commit is contained in:
@@ -218,11 +218,20 @@ public class ParenthesesUtils {
|
||||
return;
|
||||
}
|
||||
final PsiElement parent = parenthesizedExpression.getParent();
|
||||
if (!(parent instanceof PsiExpression) || parent instanceof PsiParenthesizedExpression) {
|
||||
if (!(parent instanceof PsiExpression) || parent instanceof PsiParenthesizedExpression ||
|
||||
parent instanceof PsiArrayInitializerExpression) {
|
||||
final PsiExpression newExpression = (PsiExpression)parenthesizedExpression.replace(body);
|
||||
removeParentheses(newExpression, ignoreClarifyingParentheses);
|
||||
return;
|
||||
}
|
||||
else if (parent instanceof PsiArrayAccessExpression) {
|
||||
// use addAfter() + delete() instead of replace() to
|
||||
// workaround automatic insertion of parentheses by psi
|
||||
final PsiExpression newExpression = (PsiExpression)parent.addAfter(body, parenthesizedExpression);
|
||||
parenthesizedExpression.delete();
|
||||
removeParentheses(newExpression, ignoreClarifyingParentheses);
|
||||
return;
|
||||
}
|
||||
final PsiExpression parentExpression = (PsiExpression)parent;
|
||||
final int parentPrecedence = getPrecedence(parentExpression);
|
||||
final int childPrecedence = getPrecedence(body);
|
||||
@@ -402,7 +411,8 @@ public class ParenthesesUtils {
|
||||
}
|
||||
|
||||
public static boolean areParenthesesNeeded(PsiExpression expression, PsiExpression parentExpression) {
|
||||
if (parentExpression instanceof PsiParenthesizedExpression) {
|
||||
if (parentExpression instanceof PsiParenthesizedExpression || parentExpression instanceof PsiArrayAccessExpression ||
|
||||
parentExpression instanceof PsiArrayInitializerExpression) {
|
||||
return false;
|
||||
}
|
||||
final int parentPrecedence = getPrecedence(parentExpression);
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.siyeh.ipp.parentheses;
|
||||
|
||||
class ArrayAccessExpression {
|
||||
private static boolean placeEqualsLastArg(Object place, Object[] args) {
|
||||
return args.length > 0 && place.equals(args[(ar<caret>gs.length - 1)]);// here are unnecessary parentheses inside args[...]
|
||||
}
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
package com.siyeh.ipp.parentheses;
|
||||
|
||||
class ArrayAccessExpression {
|
||||
private static boolean placeEqualsLastArg(Object place, Object[] args) {
|
||||
return args.length > 0 && place.equals(args[args.length - 1]);// here are unnecessary parentheses inside args[...]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.siyeh.ipp.parentheses;
|
||||
|
||||
class ArrayInitializer {{
|
||||
final Object[] objects = {(<caret>2 + 2), 1};
|
||||
}}
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.siyeh.ipp.parentheses;
|
||||
|
||||
class ArrayInitializer {{
|
||||
final Object[] objects = {2 + 2, 1};
|
||||
}}
|
||||
+2
@@ -15,6 +15,8 @@ public class UnnecessaryParenthesesIntentionTest extends IPPTestCase {
|
||||
public void testStringParentheses() { assertIntentionNotAvailable(); }
|
||||
public void testComparisonParentheses() { assertIntentionNotAvailable(); }
|
||||
public void testNotCommutative2() { doTest(); }
|
||||
public void testArrayInitializer() { doTest(); }
|
||||
public void testArrayAccessExpression() { doTest(); }
|
||||
|
||||
@Override
|
||||
protected String getRelativePath() {
|
||||
|
||||
Reference in New Issue
Block a user