change method signature from usage: fix reverse order presentation text (IDEA-97218)

This commit is contained in:
anna
2012-12-11 17:44:21 +01:00
parent 7a870adca7
commit fabb9c6f92
3 changed files with 33 additions and 6 deletions
@@ -17,6 +17,7 @@ package com.intellij.codeInsight.daemon.impl.quickfix;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
import com.intellij.psi.util.TypeConversionUtil;
@@ -24,7 +25,10 @@ import com.intellij.refactoring.changeSignature.ParameterInfoImpl;
import com.intellij.refactoring.util.RefactoringUtil;
import org.jetbrains.annotations.NotNull;
import java.util.*;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* User: anna
@@ -74,9 +78,9 @@ public class ChangeMethodSignatureFromUsageReverseOrderFix extends ChangeMethodS
}
int ei = expressions.length - 1;
int pi = parameters.length - 1;
PsiParameter varargParam = targetMethod.isVarArgs() ? parameters[parameters.length - 1] : null;
final PsiParameter varargParam = targetMethod.isVarArgs() ? parameters[parameters.length - 1] : null;
final List<String> params = new ArrayList<String>();
while (ei >= 0 || pi >= 0) {
if (buf.length() > 0) buf.append(", ");
PsiExpression expression = ei >=0 ? expressions[ei] : null;
PsiParameter parameter = pi >= 0 ? parameters[pi] : null;
PsiType paramType = parameter == null ? null : substitutor.substitute(parameter.getType());
@@ -85,7 +89,7 @@ public class ChangeMethodSignatureFromUsageReverseOrderFix extends ChangeMethodS
if (parameterAssignable) {
final PsiType type = parameter.getType();
result.add(0, new ParameterInfoImpl(pi, parameter.getName(), type));
buf.append(escapePresentableType(type));
params.add(0, escapePresentableType(type));
pi--;
ei--;
}
@@ -94,7 +98,7 @@ public class ChangeMethodSignatureFromUsageReverseOrderFix extends ChangeMethodS
assert varargParam != null;
final PsiType type = varargParam.getType();
result.add(0, new ParameterInfoImpl(pi, varargParam.getName(), type));
buf.append(escapePresentableType(type));
params.add(0, escapePresentableType(type));
}
pi--;
ei--;
@@ -108,11 +112,12 @@ public class ChangeMethodSignatureFromUsageReverseOrderFix extends ChangeMethodS
final ParameterInfoImpl newParameterInfo = new ParameterInfoImpl(-1, name, exprType, expression.getText().replace('\n', ' '));
result.add(0, newParameterInfo);
newParams.add(newParameterInfo);
buf.append("<b>").append(escapePresentableType(exprType)).append("</b>");
params.add(0, "<b>" + escapePresentableType(exprType) + "</b>");
ei--;
}
}
if (result.size() != expressions.length && varargParam == null) return false;
buf.append(StringUtil.join(params, ", "));
return true;
}
}
@@ -0,0 +1,11 @@
// "<html> Change signature of foo(<b>ArrayList&lt;Integer&gt;</b>, <b>ArrayList&lt;Integer&gt;</b>, ArrayList&lt;Integer&gt;, ArrayList&lt;Integer&gt;)</html>" "true"
import java.util.*;
class Test {
public void foo(ArrayList<Integer> integerArrayList, ArrayList<Integer> integers, ArrayList<Integer> l, ArrayList<Integer> l1) {}
{
foo(new ArrayList<Integer>(), new ArrayList<Integer>(), new ArrayList<Integer>(), new ArrayList<Integer>());
}
}
@@ -0,0 +1,11 @@
// "<html> Change signature of foo(<b>ArrayList&lt;Integer&gt;</b>, <b>ArrayList&lt;Integer&gt;</b>, ArrayList&lt;Integer&gt;, ArrayList&lt;Integer&gt;)</html>" "true"
import java.util.*;
class Test {
public void foo(ArrayList<Integer> l, ArrayList<Integer> l1) {}
{
foo(new <caret>ArrayList<Integer>(), new ArrayList<Integer>(), new ArrayList<Integer>(), new ArrayList<Integer>());
}
}