Don't suggest converting variadic params in Py2 in case of positional args.

This commit is contained in:
Semyon Proshev
2017-11-22 15:01:47 +03:00
parent a7a110247e
commit 77d317ed7c
5 changed files with 18 additions and 0 deletions
@@ -71,6 +71,10 @@ public class ConvertVariadicParamIntention extends PyBaseIntentionAction {
final PyFunction function = PsiTreeUtil.getParentOfType(element, PyFunction.class);
if (function != null) {
if (LanguageLevel.forElement(function).isOlderThan(LanguageLevel.PYTHON30) && function.getParameterList().hasPositionalContainer()) {
return false;
}
final boolean caretInParameterList = PsiTreeUtil.isAncestor(function.getParameterList(), element, true);
for (PyCallExpression call : findKeywordContainerCalls(function)) {
@@ -0,0 +1,2 @@
def foo(*args, **kwargs<caret>):
return kwargs["bar"]
@@ -0,0 +1,2 @@
def foo(*args, **kwargs<caret>):
return kwargs["bar"]
@@ -0,0 +1,2 @@
def foo(*args, bar, **kwargs<caret>):
return bar
@@ -231,6 +231,14 @@ public class PyIntentionTest extends PyTestCase {
doTest(PyBundle.message("INTN.convert.variadic.param"));
}
public void testConvertVariadicParamPositionalContainerInPy2() {
doNegativeTest(PyBundle.message("INTN.convert.variadic.param"));
}
public void testConvertVariadicParamPositionalContainerInPy3() {
runWithLanguageLevel(LanguageLevel.PYTHON30, () -> doTest(PyBundle.message("INTN.convert.variadic.param")));
}
public void testConvertTripleQuotedString() { //PY-2697
doTest(PyBundle.message("INTN.triple.quoted.string"));
}