fix PY-8909 change method signature doesn't change argument names in function body

This commit is contained in:
Ekaterina Tuzova
2013-02-15 20:48:40 +04:00
parent 08217aea06
commit 7012d62c3e
5 changed files with 15 additions and 3 deletions
@@ -37,6 +37,7 @@ public class PyChangeInfo implements ChangeInfo {
if (oldParameters.length != newParameterInfo.length) {
myIsParameterSetOrOrderChanged = true;
myIsParametersNameChanged = true;
}
else {
myIsParameterSetOrOrderChanged = false;
@@ -285,9 +285,11 @@ public class PyChangeSignatureUsageProcessor implements ChangeSignatureUsageProc
for (int i = 0; i != parameters.length; ++i) {
PyParameterInfo paramInfo = parameters[i];
final PyParameter[] oldParameters = function.getParameterList().getParameters();
final UsageInfo[] usages = RenameUtil.findUsages(oldParameters[paramInfo.getOldIndex()], paramInfo.getName(), true, false, null);
for (UsageInfo info : usages) {
RenameUtil.rename(info, paramInfo.getName());
if (paramInfo.getOldIndex() >= 0) {
final UsageInfo[] usages = RenameUtil.findUsages(oldParameters[paramInfo.getOldIndex()], paramInfo.getName(), true, false, null);
for (UsageInfo info : usages) {
RenameUtil.rename(info, paramInfo.getName());
}
}
}
}
@@ -0,0 +1,2 @@
def foo(b, a2=2):
a2 += 1
@@ -0,0 +1,2 @@
def bar(a=2):
a += 1
@@ -122,6 +122,11 @@ public class PyChangeSignatureTest extends PyTestCase {
new PyParameterInfo(3, "**extra_info", null, false)));
}
public void testMoveRenameParam() {
doChangeSignatureTest("foo", Arrays.asList(new PyParameterInfo(-1, "b", "1", false),
new PyParameterInfo(0, "a2", "2", true)));
}
public void testKeywordOnlyMove() {
doChangeSignatureTest("f", Arrays.asList(new PyParameterInfo(2, "param2", null, false),
new PyParameterInfo(0, "*", null, false),