From 75ef7eb0ecb3bbca00fd7a96082121de88e3b941 Mon Sep 17 00:00:00 2001 From: Ekaterina Tuzova Date: Tue, 13 May 2014 14:19:13 +0400 Subject: [PATCH] fixed EA-53387 - CCE: PyElementGeneratorImpl.createParameter --- .../ConvertVariadicParamIntention.java | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/python/src/com/jetbrains/python/codeInsight/intentions/ConvertVariadicParamIntention.java b/python/src/com/jetbrains/python/codeInsight/intentions/ConvertVariadicParamIntention.java index d34fc1f22127..a4d4e9c79adf 100644 --- a/python/src/com/jetbrains/python/codeInsight/intentions/ConvertVariadicParamIntention.java +++ b/python/src/com/jetbrains/python/codeInsight/intentions/ConvertVariadicParamIntention.java @@ -25,6 +25,8 @@ import com.intellij.psi.util.PsiTreeUtil; import com.intellij.util.IncorrectOperationException; import com.intellij.util.containers.Stack; import com.jetbrains.python.PyBundle; +import com.jetbrains.python.PyNames; +import com.jetbrains.python.PythonStringUtil; import com.jetbrains.python.psi.*; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -72,8 +74,20 @@ public class ConvertVariadicParamIntention extends BaseIntentionAction { if (((PyNamedParameter)parameter).isKeywordContainer()) { List subscriptions = fillSubscriptions(function); List callElements = fillCallExpressions(function); - if ((subscriptions.size() + callElements.size()) != 0) - return true; + if ((subscriptions.size() + callElements.size()) != 0) { + for (PyCallExpression element : callElements) { + final PyExpression[] arguments = element.getArguments(); + if (arguments.length < 1) return false; + if (!PyNames.isIdentifierString(PythonStringUtil.getStringValue(arguments[0]))) + return false; + } + for (PySubscriptionExpression subscription : subscriptions) { + final PyExpression expression = subscription.getIndexExpression(); + if (!PyNames.isIdentifierString(PythonStringUtil.getStringValue(expression))) + return false; + } + } + return true; } } } @@ -112,7 +126,7 @@ public class ConvertVariadicParamIntention extends BaseIntentionAction { PyStatementList statementList = function.getStatementList(); Stack stack = new Stack(); PyParameter keywordContainer = getKeywordContainer(function); - if (keywordContainer != null && statementList != null) { + if (keywordContainer != null) { String keywordContainerName = keywordContainer.getName(); for (PyStatement st : statementList.getStatements()) { stack.push(st); @@ -146,7 +160,7 @@ public class ConvertVariadicParamIntention extends BaseIntentionAction { PyStatementList statementList = function.getStatementList(); Stack stack = new Stack(); PyParameter keywordContainer = getKeywordContainer(function); - if (keywordContainer != null && statementList != null) { + if (keywordContainer != null) { String keywordContainerName = keywordContainer.getName(); for (PyStatement st : statementList.getStatements()) { stack.push(st);