From 5f3842bf9961ef666ee60fd109cde5e9bbed628d Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Fri, 6 Jul 2018 10:01:04 +0700 Subject: [PATCH] RedundantArrayForVarargsCallInspection: support parenthesized array --- .../RedundantArrayForVarargsCallInspection.java | 3 ++- .../src/com/intellij/refactoring/util/InlineUtil.java | 3 ++- .../redundantArrayForVarargs/quickFix/Parentheses.java | 10 ++++++++++ .../quickFix/Parentheses_after.java | 8 ++++++++ .../RedundantArray4VarargsCallInspectionTest.java | 1 + 5 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 java/java-tests/testData/inspection/redundantArrayForVarargs/quickFix/Parentheses.java create mode 100644 java/java-tests/testData/inspection/redundantArrayForVarargs/quickFix/Parentheses_after.java diff --git a/java/java-impl/src/com/intellij/codeInspection/miscGenerics/RedundantArrayForVarargsCallInspection.java b/java/java-impl/src/com/intellij/codeInspection/miscGenerics/RedundantArrayForVarargsCallInspection.java index 7f9f5bc79776..c97c26194c4f 100644 --- a/java/java-impl/src/com/intellij/codeInspection/miscGenerics/RedundantArrayForVarargsCallInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/miscGenerics/RedundantArrayForVarargsCallInspection.java @@ -9,6 +9,7 @@ import com.intellij.codeInspection.*; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; import com.intellij.psi.*; +import com.intellij.psi.util.PsiUtil; import com.intellij.psi.util.TypeConversionUtil; import com.intellij.refactoring.util.InlineUtil; import com.intellij.util.IncorrectOperationException; @@ -86,7 +87,7 @@ public class RedundantArrayForVarargsCallInspection extends GenericsInspectionTo if (parameters.length != args.length) { return; } - PsiExpression lastArg = args[args.length - 1]; + PsiExpression lastArg = PsiUtil.skipParenthesizedExprDown(args[args.length - 1]); PsiParameter lastParameter = parameters[args.length - 1]; if (!lastParameter.isVarArgs()) { return; diff --git a/java/java-impl/src/com/intellij/refactoring/util/InlineUtil.java b/java/java-impl/src/com/intellij/refactoring/util/InlineUtil.java index f10ceadb3c3a..6dadaff41e1d 100644 --- a/java/java-impl/src/com/intellij/refactoring/util/InlineUtil.java +++ b/java/java-impl/src/com/intellij/refactoring/util/InlineUtil.java @@ -27,6 +27,7 @@ import com.intellij.psi.search.LocalSearchScope; import com.intellij.psi.search.searches.ReferencesSearch; import com.intellij.psi.tree.IElementType; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.psi.util.PsiUtil; import com.intellij.psi.util.RedundantCastUtil; import com.intellij.refactoring.RefactoringBundle; import com.intellij.util.IncorrectOperationException; @@ -208,7 +209,7 @@ public class InlineUtil { } public static void inlineArrayCreationForVarargs(final PsiNewExpression arrayCreation) { - PsiExpressionList argumentList = (PsiExpressionList)arrayCreation.getParent(); + PsiExpressionList argumentList = (PsiExpressionList)PsiUtil.skipParenthesizedExprUp(arrayCreation.getParent()); if (argumentList == null) return; PsiExpression[] args = argumentList.getExpressions(); PsiArrayInitializerExpression arrayInitializer = arrayCreation.getArrayInitializer(); diff --git a/java/java-tests/testData/inspection/redundantArrayForVarargs/quickFix/Parentheses.java b/java/java-tests/testData/inspection/redundantArrayForVarargs/quickFix/Parentheses.java new file mode 100644 index 000000000000..5e9b68108d68 --- /dev/null +++ b/java/java-tests/testData/inspection/redundantArrayForVarargs/quickFix/Parentheses.java @@ -0,0 +1,10 @@ +public class Main { + public static void main(String[] args) { + display((new //c1 + String[]{ + "hi" + })); + } + + private static void display(String... messages) { } +} \ No newline at end of file diff --git a/java/java-tests/testData/inspection/redundantArrayForVarargs/quickFix/Parentheses_after.java b/java/java-tests/testData/inspection/redundantArrayForVarargs/quickFix/Parentheses_after.java new file mode 100644 index 000000000000..c5adc0891fd0 --- /dev/null +++ b/java/java-tests/testData/inspection/redundantArrayForVarargs/quickFix/Parentheses_after.java @@ -0,0 +1,8 @@ +public class Main { + public static void main(String[] args) { + display(//c1 + "hi"); + } + + private static void display(String... messages) { } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/codeInspection/RedundantArray4VarargsCallInspectionTest.java b/java/java-tests/testSrc/com/intellij/java/codeInspection/RedundantArray4VarargsCallInspectionTest.java index cd98ace9c144..417ddba63d60 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInspection/RedundantArray4VarargsCallInspectionTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInspection/RedundantArray4VarargsCallInspectionTest.java @@ -38,6 +38,7 @@ public class RedundantArray4VarargsCallInspectionTest extends LightCodeInsightFi public void testPreserveComments() { doTest(); } public void testRemoveTailingCommas() { doTest(); } + public void testParentheses() { doTest(); } private void doTest() { String name = getTestName(false);