diff --git a/python/src/com/jetbrains/python/psi/impl/PyNamedParameterImpl.java b/python/src/com/jetbrains/python/psi/impl/PyNamedParameterImpl.java index 5713741d97d8..cd604cf21500 100644 --- a/python/src/com/jetbrains/python/psi/impl/PyNamedParameterImpl.java +++ b/python/src/com/jetbrains/python/psi/impl/PyNamedParameterImpl.java @@ -219,7 +219,7 @@ public class PyNamedParameterImpl extends PyBaseElementImpl ret) { + public static void collectFunctionArgNames(PyElement element, List ret, final @NotNull TypeEvalContext context) { PyCallExpression callExpr = PsiTreeUtil.getParentOfType(element, PyCallExpression.class); if (callExpr != null) { PyExpression callee = callExpr.getCallee(); if (callee instanceof PyReferenceExpression && element.getParent() == callExpr.getArgumentList()) { - final QualifiedResolveResult result = ((PyReferenceExpression)callee).followAssignmentsChain(PyResolveContext.defaultContext()); + final PyResolveContext resolveContext = PyResolveContext.defaultContext().withTypeEvalContext(context); + final QualifiedResolveResult result = ((PyReferenceExpression)callee).followAssignmentsChain(resolveContext); PsiElement def = result.getElement(); if (def instanceof PyFunction) { addKeywordArgumentVariants((PyFunction)def, callExpr, ret); diff --git a/python/src/com/jetbrains/python/psi/impl/references/PyReferenceImpl.java b/python/src/com/jetbrains/python/psi/impl/references/PyReferenceImpl.java index 68fea31df070..4f86c439cacf 100644 --- a/python/src/com/jetbrains/python/psi/impl/references/PyReferenceImpl.java +++ b/python/src/com/jetbrains/python/psi/impl/references/PyReferenceImpl.java @@ -578,8 +578,9 @@ public class PyReferenceImpl implements PsiReferenceEx, PsiPolyVariantReference PyResolveUtil.scopeCrawlUp(processor, owner, null, null); } + // This method is probably called for completion, so use appropriate context here // in a call, include function's arg names - KeywordArgumentCompletionUtil.collectFunctionArgNames(element, ret); + KeywordArgumentCompletionUtil.collectFunctionArgNames(element, ret, TypeEvalContext.codeCompletion(element.getProject(), element.getContainingFile())); // include builtin names final PyFile builtinsFile = PyBuiltinCache.getInstance(element).getBuiltinsFile();