From 5ce1ab82c539cc1b5c6df3a6293fa6e4151e5d6e Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Thu, 20 Jul 2017 11:56:46 +0200 Subject: [PATCH] IPP: keep type parameter list if present (IDEA-175282) --- .../ReplaceWithArraysAsListIntention.java | 6 ++++++ .../ReplaceWithArraysAsListIntentionTest.java | 20 +++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/plugins/IntentionPowerPak/src/com/siyeh/ipp/collections/ReplaceWithArraysAsListIntention.java b/plugins/IntentionPowerPak/src/com/siyeh/ipp/collections/ReplaceWithArraysAsListIntention.java index e517ac7aceb5..08ca45703a01 100644 --- a/plugins/IntentionPowerPak/src/com/siyeh/ipp/collections/ReplaceWithArraysAsListIntention.java +++ b/plugins/IntentionPowerPak/src/com/siyeh/ipp/collections/ReplaceWithArraysAsListIntention.java @@ -72,6 +72,12 @@ public class ReplaceWithArraysAsListIntention extends Intention implements HighP protected void processIntention(@NotNull PsiElement element) { final PsiMethodCallExpression methodCallExpression = (PsiMethodCallExpression)element; final PsiExpressionList argumentList = methodCallExpression.getArgumentList(); + final PsiReferenceExpression methodExpression = methodCallExpression.getMethodExpression(); + final PsiReferenceParameterList parameterList = methodExpression.getParameterList(); + if (parameterList != null) { + final int dotIndex = replacementText.lastIndexOf('.') + 1; + replacementText = replacementText.substring(0, dotIndex) + parameterList.getText() + replacementText.substring(dotIndex); + } PsiReplacementUtil.replaceExpressionAndShorten(methodCallExpression, replacementText + argumentList.getText()); } diff --git a/plugins/IntentionPowerPak/testSrc/com/siyeh/ipp/collections/ReplaceWithArraysAsListIntentionTest.java b/plugins/IntentionPowerPak/testSrc/com/siyeh/ipp/collections/ReplaceWithArraysAsListIntentionTest.java index 86ee3058ba8c..1fdc730f1ac6 100644 --- a/plugins/IntentionPowerPak/testSrc/com/siyeh/ipp/collections/ReplaceWithArraysAsListIntentionTest.java +++ b/plugins/IntentionPowerPak/testSrc/com/siyeh/ipp/collections/ReplaceWithArraysAsListIntentionTest.java @@ -60,6 +60,26 @@ public class ReplaceWithArraysAsListIntentionTest extends IPPTestCase { ); } + public void testTypeParameters() { + doTest( + "import java.util.*;" + + "class X {" + + " private List rows;" + + " List getRows() {" + + " return rows == null ? /*_Replace with 'java.util.Arrays.asList()'*/Collections.emptyList() : rows;" + + " }" + + "}", + + "import java.util.*;" + + "class X {" + + " private List rows;" + + " List getRows() {" + + " return rows == null ? Arrays.asList() : rows;" + + " }" + + "}" + ); + } + @NotNull @Override protected LightProjectDescriptor getProjectDescriptor() {