}
}
}
- if (parameter.getOldIndex() < 0 && !parameter.getName().startsWith("*")) {
- if (StringUtil.isEmpty(info.defaultValueCodeFragment.getText()))
+ if (parameter.getOldIndex() < 0) {
+ if (!parameter.getName().startsWith("*")) {
+ if (StringUtil.isEmpty(info.defaultValueCodeFragment.getText())) {
+ return PyBundle.message("refactoring.change.signature.dialog.validation.default.missing");
+ }
+ if (StringUtil.isEmptyOrSpaces(parameter.getName())) {
+ return PyBundle.message("refactoring.change.signature.dialog.validation.parameter.missing");
+ }
+ }
+ }
+ else if (myMethod.getParameters().get(parameter.getOldIndex()).getDefaultInSignature() &&
+ StringUtil.isEmptyOrSpaces(parameter.getDefaultValue())) {
return PyBundle.message("refactoring.change.signature.dialog.validation.default.missing");
- if (StringUtil.isEmptyOrSpaces(parameter.getName()))
- return PyBundle.message("refactoring.change.signature.dialog.validation.parameter.missing");
}
}
-
return null;
}
/**
* User : ktisha
*/
+@SuppressWarnings("ArraysAsListWithZeroOrOneArgument")
@TestDataPath("$CONTENT_ROOT/../testData/")
public class PyChangeSignatureTest extends PyTestCase {
doChangeSignatureTest(null, Arrays.asList(new PyParameterInfo(0, "a", null, false), new PyParameterInfo(1, "b", "2", false)));
}
+ // PY-15143
+ public void testRemoveDefaultFromParamWithoutReplacement() {
+ final PyParameterInfo first = new PyParameterInfo(0, "arg", null, false);
+ final PyParameterInfo second = new PyParameterInfo(-1, "vvv", "xxx", false);
+ doValidationTest(null, Arrays.asList(first, second), PyBundle.message("refactoring.change.signature.dialog.validation.default.missing"));
+ }
+
public void testAddDefaultParam1() {
doChangeSignatureTest(null, Arrays.asList(new PyParameterInfo(0, "a", null, false), new PyParameterInfo(-1, "d", "1", true),
new PyParameterInfo(1, "b", "None", true)));
}
public void testNonDefaultAfterDefault() {
- doValidationTest(null, Arrays.asList(new PyParameterInfo(-1, "a", "2", false), new PyParameterInfo(1, "b", "2", false)), null);
+ doValidationTest(null, Arrays.asList(new PyParameterInfo(-1, "a", "2", false), new PyParameterInfo(0, "b", "2", false)), null);
}
public void testNonDefaultAfterDefault1() {
- doValidationTest(null, Arrays.asList(new PyParameterInfo(1, "b", "1", true), new PyParameterInfo(-1, "a", "2", false)),
+ doValidationTest(null, Arrays.asList(new PyParameterInfo(0, "b", "1", true), new PyParameterInfo(-1, "a", "2", false)),
PyBundle.message("ANN.non.default.param.after.default"));
}