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() {