mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
fixed PY-8096 Change Signature: produces invalid code on adding new parameters for function calls with keyword arguments
This commit is contained in:
+2
-2
@@ -160,11 +160,11 @@ public class PyChangeSignatureDialog extends ChangeSignatureDialogBase<PyParamet
|
||||
return PyBundle.message("ANN.regular.param.after.keyword");
|
||||
}
|
||||
final String defaultValue = parameter.getDefaultValue();
|
||||
if (defaultValue != null && !StringUtil.isEmptyOrSpaces(defaultValue)) {
|
||||
if (defaultValue != null && !StringUtil.isEmptyOrSpaces(defaultValue) && parameter.getDefaultInSignature()) {
|
||||
hadDefaultValue = true;
|
||||
}
|
||||
else {
|
||||
if (hadDefaultValue && parameter.getDefaultInSignature() && !hadSingleStar && (!languageLevel.isPy3K() || !hadPositionalContainer)) {
|
||||
if (hadDefaultValue && !hadSingleStar && (!languageLevel.isPy3K() || !hadPositionalContainer)) {
|
||||
return PyBundle.message("ANN.non.default.param.after.default");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
def foo(b=1):
|
||||
pass
|
||||
+5
@@ -96,6 +96,11 @@ public class PyChangeSignatureTest extends PyTestCase {
|
||||
doValidationTest(null, Arrays.asList(new PyParameterInfo(-1, "a", "2", false), new PyParameterInfo(1, "b", "2", false)), null);
|
||||
}
|
||||
|
||||
public void testNonDefaultAfterDefault1() {
|
||||
doValidationTest(null, Arrays.asList(new PyParameterInfo(1, "b", "1", true), new PyParameterInfo(-1, "a", "2", false)),
|
||||
PyBundle.message("ANN.non.default.param.after.default"));
|
||||
}
|
||||
|
||||
public void doChangeSignatureTest(@Nullable String newName, @Nullable List<PyParameterInfo> parameters) {
|
||||
myFixture.configureByFile("refactoring/changeSignature/" + getTestName(true) + ".before.py");
|
||||
changeSignature(newName, parameters);
|
||||
|
||||
Reference in New Issue
Block a user