From 4ade2a679dc7adf9d07136e989cb8f28f935bc5f Mon Sep 17 00:00:00 2001 From: Andrey Vlasovskikh Date: Fri, 13 Sep 2013 16:23:45 +0400 Subject: [PATCH] Use parameters provided by function type in override methods list --- .../codeInsight/override/PyMethodMember.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/python/src/com/jetbrains/python/codeInsight/override/PyMethodMember.java b/python/src/com/jetbrains/python/codeInsight/override/PyMethodMember.java index 0691e6ecfaf7..73cc9b81b352 100644 --- a/python/src/com/jetbrains/python/codeInsight/override/PyMethodMember.java +++ b/python/src/com/jetbrains/python/codeInsight/override/PyMethodMember.java @@ -6,12 +6,13 @@ import com.intellij.codeInsight.generation.PsiElementMemberChooserObject; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.ui.SimpleColoredComponent; +import com.intellij.util.Function; import com.jetbrains.python.PyNames; -import com.jetbrains.python.psi.PyClass; -import com.jetbrains.python.psi.PyElement; -import com.jetbrains.python.psi.PyFunction; +import com.jetbrains.python.psi.*; +import com.jetbrains.python.psi.types.TypeEvalContext; import javax.swing.*; +import java.util.List; /** * @author Alexey.Ivanov @@ -20,7 +21,14 @@ public class PyMethodMember extends PsiElementMemberChooserObject implements Cla private final String myFullName; private static String buildNameFor(final PyElement element) { if (element instanceof PyFunction) { - return element.getName() + ((PyFunction)element).getParameterList().getText(); + final TypeEvalContext context = TypeEvalContext.userInitiated(element.getContainingFile()); + final List parameters = PyUtil.getParameters((PyFunction)element, context); + return element.getName() + "(" + StringUtil.join(parameters, new Function() { + @Override + public String fun(PyParameter parameter) { + return PyUtil.getReadableRepr(parameter, false); + } + }, ", ") + ")"; } if (element instanceof PyClass && PyNames.FAKE_OLD_BASE.equals(element.getName())) { return "";