From 5fea23d3c78b9f9b4f9f3a46ec2bd618fbae572f Mon Sep 17 00:00:00 2001 From: Semyon Proshev Date: Thu, 27 Oct 2016 19:33:05 +0300 Subject: [PATCH] Pass TypeEvalContext to PyReferenceResolveProvider --- .../python/psi/resolve/PyReferenceResolveProvider.java | 5 +++-- .../python/psi/impl/references/PyReferenceImpl.java | 3 ++- .../psi/resolve/PythonBuiltinReferenceResolveProvider.java | 7 +++---- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/python/psi-api/src/com/jetbrains/python/psi/resolve/PyReferenceResolveProvider.java b/python/psi-api/src/com/jetbrains/python/psi/resolve/PyReferenceResolveProvider.java index 9a917f48cec6..81faf04eda70 100644 --- a/python/psi-api/src/com/jetbrains/python/psi/resolve/PyReferenceResolveProvider.java +++ b/python/psi-api/src/com/jetbrains/python/psi/resolve/PyReferenceResolveProvider.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2016 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,6 +17,7 @@ package com.jetbrains.python.psi.resolve; import com.intellij.openapi.extensions.ExtensionPointName; import com.jetbrains.python.psi.PyQualifiedExpression; +import com.jetbrains.python.psi.types.TypeEvalContext; import org.jetbrains.annotations.NotNull; import java.util.List; @@ -32,5 +33,5 @@ public interface PyReferenceResolveProvider { * Allows to provide a custom resolve result for qualified expression */ @NotNull - List resolveName(@NotNull final PyQualifiedExpression element); + List resolveName(@NotNull PyQualifiedExpression element, @NotNull TypeEvalContext context); } 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 73f4ce47bccb..d56fcd837910 100644 --- a/python/src/com/jetbrains/python/psi/impl/references/PyReferenceImpl.java +++ b/python/src/com/jetbrains/python/psi/impl/references/PyReferenceImpl.java @@ -362,8 +362,9 @@ public class PyReferenceImpl implements PsiReferenceEx, PsiPolyVariantReference @NotNull private ResolveResultList resolveByReferenceResolveProviders() { final ResolveResultList results = new ResolveResultList(); + final TypeEvalContext context = myContext.getTypeEvalContext(); for (PyReferenceResolveProvider provider : Extensions.getExtensions(PyReferenceResolveProvider.EP_NAME)) { - results.addAll(provider.resolveName(myElement)); + results.addAll(provider.resolveName(myElement, context)); } return results; } diff --git a/python/src/com/jetbrains/python/psi/resolve/PythonBuiltinReferenceResolveProvider.java b/python/src/com/jetbrains/python/psi/resolve/PythonBuiltinReferenceResolveProvider.java index 33aa8f221669..2c88d538dac4 100644 --- a/python/src/com/jetbrains/python/psi/resolve/PythonBuiltinReferenceResolveProvider.java +++ b/python/src/com/jetbrains/python/psi/resolve/PythonBuiltinReferenceResolveProvider.java @@ -38,12 +38,11 @@ import java.util.Optional; public class PythonBuiltinReferenceResolveProvider implements PyReferenceResolveProvider { @NotNull @Override - public List resolveName(@NotNull PyQualifiedExpression element) { + public List resolveName(@NotNull PyQualifiedExpression element, @NotNull TypeEvalContext context) { final List result = new ArrayList<>(); final PsiElement realContext = PyPsiUtils.getRealContext(element); final String referencedName = element.getReferencedName(); final PyBuiltinCache builtinCache = PyBuiltinCache.getInstance(realContext); - final TypeEvalContext typeEvalContext = TypeEvalContext.codeInsightFallback(element.getProject()); // resolve to module __doc__ if (PyNames.DOC.equals(referencedName)) { @@ -51,7 +50,7 @@ public class PythonBuiltinReferenceResolveProvider implements PyReferenceResolve Optional .ofNullable(builtinCache.getObjectType()) .map(type -> type.resolveMember(referencedName, element, AccessDirection.of(element), - PyResolveContext.noImplicits().withTypeEvalContext(typeEvalContext))) + PyResolveContext.noImplicits().withTypeEvalContext(context))) .orElse(Collections.emptyList()) ); } @@ -64,7 +63,7 @@ public class PythonBuiltinReferenceResolveProvider implements PyReferenceResolve resultElement = bfile; // resolve __builtins__ reference } if (resultElement != null) { - result.add(new ImportedResolveResult(resultElement, PyReferenceImpl.getRate(resultElement, typeEvalContext), null)); + result.add(new ImportedResolveResult(resultElement, PyReferenceImpl.getRate(resultElement, context), null)); } } return result;