From 2650bf2d417860f45d4befce3907a332b82ee175 Mon Sep 17 00:00:00 2001 From: Semyon Proshev Date: Wed, 29 Nov 2017 20:51:16 +0300 Subject: [PATCH] Support `pop` on keyword container (PY-26284) --- .../intentions/ConvertVariadicParamIntention.java | 2 +- .../intentions/convertVariadicParamKeywordContainerPop.py | 4 ++++ .../convertVariadicParamKeywordContainerPop_after.py | 4 ++++ .../com/jetbrains/python/intentions/PyIntentionTest.java | 5 +++++ 4 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 python/testData/intentions/convertVariadicParamKeywordContainerPop.py create mode 100644 python/testData/intentions/convertVariadicParamKeywordContainerPop_after.py diff --git a/python/src/com/jetbrains/python/codeInsight/intentions/ConvertVariadicParamIntention.java b/python/src/com/jetbrains/python/codeInsight/intentions/ConvertVariadicParamIntention.java index 29874629b427..bce13851d710 100644 --- a/python/src/com/jetbrains/python/codeInsight/intentions/ConvertVariadicParamIntention.java +++ b/python/src/com/jetbrains/python/codeInsight/intentions/ConvertVariadicParamIntention.java @@ -227,7 +227,7 @@ public class ConvertVariadicParamIntention extends PyBaseIntentionAction { final PyExpression qualifier = callee.getQualifier(); return qualifier != null && qualifier.getText().equals(keywordContainerName) && - ArrayUtil.contains(callee.getReferencedName(), "get", PyNames.GETITEM); + ArrayUtil.contains(callee.getReferencedName(), "get", "pop", PyNames.GETITEM); } ) .isPresent(); diff --git a/python/testData/intentions/convertVariadicParamKeywordContainerPop.py b/python/testData/intentions/convertVariadicParamKeywordContainerPop.py new file mode 100644 index 000000000000..84ba257a842e --- /dev/null +++ b/python/testData/intentions/convertVariadicParamKeywordContainerPop.py @@ -0,0 +1,4 @@ +def foo(w, q = 2, **kwargs): + a = kwargs.pop('tmp') + doSomething(kwargs.pop('foo', 22)) + doSomething(kwargs.pop('bar', default=23)) \ No newline at end of file diff --git a/python/testData/intentions/convertVariadicParamKeywordContainerPop_after.py b/python/testData/intentions/convertVariadicParamKeywordContainerPop_after.py new file mode 100644 index 000000000000..f2b151815d81 --- /dev/null +++ b/python/testData/intentions/convertVariadicParamKeywordContainerPop_after.py @@ -0,0 +1,4 @@ +def foo(w, tmp, q = 2, foo=22, bar=23, **kwargs): + a = tmp + doSomething(foo) + doSomething(bar) \ No newline at end of file diff --git a/python/testSrc/com/jetbrains/python/intentions/PyIntentionTest.java b/python/testSrc/com/jetbrains/python/intentions/PyIntentionTest.java index 9168ad318c41..fbf0cb504952 100644 --- a/python/testSrc/com/jetbrains/python/intentions/PyIntentionTest.java +++ b/python/testSrc/com/jetbrains/python/intentions/PyIntentionTest.java @@ -239,6 +239,11 @@ public class PyIntentionTest extends PyTestCase { runWithLanguageLevel(LanguageLevel.PYTHON30, () -> doTest(PyBundle.message("INTN.convert.variadic.param"))); } + // PY-26284 + public void testConvertVariadicParamKeywordContainerPop() { + doTest(PyBundle.message("INTN.convert.variadic.param")); + } + public void testConvertTripleQuotedString() { //PY-2697 doTest(PyBundle.message("INTN.triple.quoted.string")); }