From 5fc0db49d40388d9db35d1564bc7c1b11a3b769c Mon Sep 17 00:00:00 2001 From: Semyon Proshev Date: Mon, 2 Oct 2017 17:09:10 +0300 Subject: [PATCH] Deprecate PyCallExpression.PyRatedCallee. --- .../python/psi/PyCallExpression.java | 5 +++ .../psi/impl/PyCallExpressionHelper.java | 35 +++++++------------ 2 files changed, 18 insertions(+), 22 deletions(-) diff --git a/python/psi-api/src/com/jetbrains/python/psi/PyCallExpression.java b/python/psi-api/src/com/jetbrains/python/psi/PyCallExpression.java index e1c36651090b..12e4536d9a2b 100644 --- a/python/psi-api/src/com/jetbrains/python/psi/PyCallExpression.java +++ b/python/psi-api/src/com/jetbrains/python/psi/PyCallExpression.java @@ -516,6 +516,11 @@ public interface PyCallExpression extends PyCallSiteExpression { } } + /** + * @deprecated Use {@link PyMarkedCallee} or {@link PyRatedMarkedCallee} instead. + * This class will be removed in 2018.1. + */ + @Deprecated class PyRatedCallee extends RatedResolveResult { @NotNull diff --git a/python/src/com/jetbrains/python/psi/impl/PyCallExpressionHelper.java b/python/src/com/jetbrains/python/psi/impl/PyCallExpressionHelper.java index 698108523d3b..ba89b5b04e5b 100644 --- a/python/src/com/jetbrains/python/psi/impl/PyCallExpressionHelper.java +++ b/python/src/com/jetbrains/python/psi/impl/PyCallExpressionHelper.java @@ -742,46 +742,37 @@ public class PyCallExpressionHelper { public static List mapArguments(@NotNull PyCallSiteExpression callSite, @NotNull PyResolveContext resolveContext) { final List results = new ArrayList<>(); - for (PyCallExpression.PyRatedCallee ratedCallee : multiResolveCallee(callSite, resolveContext)) { - results.add(mapArguments(callSite, ratedCallee.getCallableType(), ratedCallee.getElement(), resolveContext)); + for (Pair callableAndType : multiResolveCalleeFunction(callSite, resolveContext)) { + results.add(mapArguments(callSite, callableAndType.second, callableAndType.first, resolveContext)); } return results; } @NotNull - private static List multiResolveCallee(@NotNull PyCallSiteExpression callSite, - @NotNull PyResolveContext resolveContext) { + private static List> multiResolveCalleeFunction(@NotNull PyCallSiteExpression callSite, + @NotNull PyResolveContext resolveContext) { if (callSite instanceof PyCallExpression) { final List callees = ((PyCallExpression)callSite).multiResolveRatedCallee(resolveContext); - final com.intellij.util.Function toRatedCallee = - markedCallee -> - new PyCallExpression.PyRatedCallee( - markedCallee.getMarkedCallee().getCallableType(), - markedCallee.getElement(), - markedCallee.getRate() - ); - - return PyUtil.filterTopPriorityResults(ContainerUtil.map(callees, toRatedCallee)); + return ContainerUtil.map(PyUtil.filterTopPriorityResults(callees), + callee -> Pair.create(callee.getElement(), callee.getMarkedCallee().getCallableType())); } else if (callSite instanceof PySubscriptionExpression || callSite instanceof PyBinaryExpression) { - final List results = new ArrayList<>(); - boolean resolvedToUnknownResult = false; + final List> results = new ArrayList<>(); + for (PsiElement result : PyUtil.multiResolveTopPriority(callSite, resolveContext)) { if (result instanceof PyTypedElement) { final PyType resultType = resolveContext.getTypeEvalContext().getType((PyTypedElement)result); if (resultType instanceof PyCallableType) { - final PyCallExpression.PyRatedCallee ratedCallee = - new PyCallExpression.PyRatedCallee((PyCallableType)resultType, - PyUtil.as(result, PyCallable.class), - RatedResolveResult.RATE_NORMAL); - results.add(ratedCallee); + final PyCallable callable = PyUtil.as(result, PyCallable.class); + results.add(Pair.create(callable, (PyCallableType)resultType)); continue; } } - resolvedToUnknownResult = true; + return Collections.emptyList(); } - return resolvedToUnknownResult ? Collections.emptyList() : results; + + return results; } else { return Collections.emptyList();