From 8a4f9522bcb49c15a13da3a583702a9e337e40ed Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Fri, 31 Oct 2014 16:54:15 +0100 Subject: [PATCH] introduce parameter object: put extracted param object at place of the first parameter which was merged (IDEA-108186) --- .../usageInfo/MergeMethodArguments.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/java/java-impl/src/com/intellij/refactoring/introduceparameterobject/usageInfo/MergeMethodArguments.java b/java/java-impl/src/com/intellij/refactoring/introduceparameterobject/usageInfo/MergeMethodArguments.java index 3ba23bc1e0fe..f127efd9f450 100644 --- a/java/java-impl/src/com/intellij/refactoring/introduceparameterobject/usageInfo/MergeMethodArguments.java +++ b/java/java-impl/src/com/intellij/refactoring/introduceparameterobject/usageInfo/MergeMethodArguments.java @@ -94,18 +94,26 @@ public class MergeMethodArguments extends FixableUsageInfo { } final List parametersInfo = new ArrayList(); final PsiClassType classType = JavaPsiFacade.getElementFactory(getProject()).createType(psiClass, subst); - parametersInfo.add(new ParameterInfoImpl(-1, parameterName, classType, null) { + + final ParameterInfoImpl mergedParamInfo = new ParameterInfoImpl(-1, parameterName, classType, null) { @Override public PsiExpression getValue(final PsiCallExpression expr) throws IncorrectOperationException { - return (PsiExpression)JavaCodeStyleManager.getInstance(getProject()).shortenClassReferences(psiFacade.getElementFactory().createExpressionFromText(getMergedParam(expr), expr)); + return (PsiExpression)JavaCodeStyleManager.getInstance(getProject()) + .shortenClassReferences(psiFacade.getElementFactory().createExpressionFromText(getMergedParam(expr), expr)); } - }); + }; + + int firstIncludedIdx = -1; final PsiParameter[] parameters = method.getParameterList().getParameters(); for (int i = 0; i < parameters.length; i++) { if (!isParameterToMerge(i)) { parametersInfo.add(new ParameterInfoImpl(i, parameters[i].getName(), parameters[i].getType())); + } else if (firstIncludedIdx == -1) { + firstIncludedIdx = i; } } + + parametersInfo.add(firstIncludedIdx == -1 ? 0 : firstIncludedIdx, mergedParamInfo); final SmartPsiElementPointer meth = SmartPointerManager.getInstance(getProject()).createSmartPsiElementPointer(method); Runnable performChangeSignatureRunnable = new Runnable() {