IDEA-94471 for inspection ('Remove unnecessary parentheses' is not suggested inside array access)

This commit is contained in:
Bas Leijdekkers
2012-11-12 11:10:32 +01:00
parent f3911b8ce8
commit 2694e5b028
2 changed files with 15 additions and 7 deletions
@@ -252,11 +252,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);
@@ -112,7 +112,8 @@ public class UnnecessaryParenthesesInspection extends BaseInspection {
if (child == null) {
return;
}
if (!(parent instanceof PsiExpression) || parent instanceof PsiParenthesizedExpression) {
if (!(parent instanceof PsiExpression) || parent instanceof PsiParenthesizedExpression
|| parent instanceof PsiArrayAccessExpression || parent instanceof PsiArrayInitializerExpression) {
registerError(expression);
return;
}
@@ -121,11 +122,9 @@ public class UnnecessaryParenthesesInspection extends BaseInspection {
if (parentPrecedence > childPrecedence) {
if (ignoreClarifyingParentheses) {
if (child instanceof PsiPolyadicExpression) {
if (parent instanceof PsiPolyadicExpression) {
return;
} else if (parent instanceof PsiConditionalExpression) {
return;
} else if (parent instanceof PsiInstanceOfExpression) {
if (parent instanceof PsiPolyadicExpression ||
parent instanceof PsiConditionalExpression ||
parent instanceof PsiInstanceOfExpression) {
return;
}
}