PY-13484 Allow to extract constant from parameter default value

This commit is contained in:
Mikhail Golubev
2014-08-09 01:54:05 +04:00
parent 7a52f867d4
commit e13da9d5dd
4 changed files with 19 additions and 1 deletions
@@ -24,6 +24,7 @@ import com.jetbrains.python.codeInsight.controlflow.ScopeOwner;
import com.jetbrains.python.codeInsight.imports.AddImportHelper;
import com.jetbrains.python.psi.PyExpression;
import com.jetbrains.python.psi.PyFile;
import com.jetbrains.python.psi.PyParameterList;
import com.jetbrains.python.refactoring.PyReplaceExpressionUtil;
import com.jetbrains.python.refactoring.introduce.IntroduceHandler;
import com.jetbrains.python.refactoring.introduce.IntroduceOperation;
@@ -65,6 +66,11 @@ public class PyIntroduceConstantHandler extends IntroduceHandler {
return names;
}
@Override
protected boolean isValidIntroduceContext(PsiElement element) {
return super.isValidIntroduceContext(element) || PsiTreeUtil.getParentOfType(element, PyParameterList.class) != null;
}
@Override
protected String getHelpId() {
return "python.reference.introduceConstant";
@@ -0,0 +1,5 @@
a = 1 + 2
def func(x=a + 3):
pass
@@ -0,0 +1,2 @@
def func(x=<selection>1 + 2</selection> + 3):
pass
@@ -51,7 +51,7 @@ public class PyIntroduceConstantTest extends PyIntroduceTestCase {
public void testSuggestUniqueNames() { // PY-4409
doTestSuggestions(PyExpression.class, "S1");
}
public void testSuggestUniqueNamesGlobalScope() { // PY-4409
doTestSuggestions(PyExpression.class, "S1");
}
@@ -60,6 +60,11 @@ public class PyIntroduceConstantTest extends PyIntroduceTestCase {
doTestInplace(null);
}
// PY-13484
public void testFromParameterDefaultValue() {
doTest();
}
@Override
protected String getTestDataPath() {
return super.getTestDataPath() + "/refactoring/introduceConstant";