From e0f7bb46ccf90419547f3a248a01d2d1436b4455 Mon Sep 17 00:00:00 2001 From: Semyon Proshev Date: Tue, 31 Dec 2019 16:54:41 +0300 Subject: [PATCH] Drop PyiModuleMembersProvider since, if a module has a python stub, this stub is presented in resolve results (PY-39956) GitOrigin-RevId: 86553aa62f7c02a329441a7cdfb3781947e68a88 --- .../resources/META-INF/PythonPsiImpl.xml | 1 - .../python/pyi/PyiModuleMembersProvider.java | 87 ------------------- 2 files changed, 88 deletions(-) delete mode 100644 python/python-psi-impl/src/com/jetbrains/python/pyi/PyiModuleMembersProvider.java diff --git a/python/python-psi-impl/resources/META-INF/PythonPsiImpl.xml b/python/python-psi-impl/resources/META-INF/PythonPsiImpl.xml index 32a7b9a0b06a..4d2f2a1d4e13 100644 --- a/python/python-psi-impl/resources/META-INF/PythonPsiImpl.xml +++ b/python/python-psi-impl/resources/META-INF/PythonPsiImpl.xml @@ -148,7 +148,6 @@ - diff --git a/python/python-psi-impl/src/com/jetbrains/python/pyi/PyiModuleMembersProvider.java b/python/python-psi-impl/src/com/jetbrains/python/pyi/PyiModuleMembersProvider.java deleted file mode 100644 index a85bcd16fb26..000000000000 --- a/python/python-psi-impl/src/com/jetbrains/python/pyi/PyiModuleMembersProvider.java +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. -package com.jetbrains.python.pyi; - -import com.intellij.psi.PsiElement; -import com.jetbrains.python.codeInsight.PyCustomMember; -import com.jetbrains.python.psi.PyElement; -import com.jetbrains.python.psi.PyFile; -import com.jetbrains.python.psi.PyFromImportStatement; -import com.jetbrains.python.psi.PyImportElement; -import com.jetbrains.python.psi.resolve.PointInImport; -import com.jetbrains.python.psi.resolve.PyResolveContext; -import com.jetbrains.python.psi.types.PyModuleMembersProvider; -import com.jetbrains.python.psi.types.TypeEvalContext; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.*; - -/** - * @author vlan - */ -public class PyiModuleMembersProvider extends PyModuleMembersProvider { - @Nullable - @Override - public PsiElement resolveMember(@NotNull PyFile module, @NotNull String name, @NotNull PyResolveContext resolveContext) { - final PsiElement pythonStub = PyiUtil.getPythonStub(module); - if (pythonStub instanceof PyFile) { - final PyFile stubFile = (PyFile)pythonStub; - final PsiElement member = stubFile.getElementNamed(name); - if (member != null && isExportedName(stubFile, name)) { - return member; - } - } - return null; - } - - @Override - @NotNull - public Collection getMembers(@NotNull PyFile module, @NotNull PointInImport point, @NotNull TypeEvalContext context) { - final PsiElement pythonStub = PyiUtil.getPythonStub(module); - if (pythonStub instanceof PyFile) { - final PyFile stubFile = (PyFile)pythonStub; - final List results = new ArrayList<>(); - for (PyElement element : stubFile.iterateNames()) { - final String name = element.getName(); - if (name != null && isExportedName(stubFile, name)) { - results.add(new PyCustomMember(name, element)); - } - } - return results; - } - return Collections.emptyList(); - } - - @Override - @NotNull - protected Collection getMembersByQName(@NotNull PyFile module, @NotNull String qName, @NotNull TypeEvalContext context) { - return Collections.emptyList(); - } - - private static boolean isExportedName(@NotNull PyFile file, @NotNull String name) { - final PyImportElement importElement = findImportElementByName(file, name); - return importElement == null || isExportedImportElement(importElement); - } - - private static boolean isExportedImportElement(@NotNull PyImportElement element) { - return element.getAsNameElement() != null; - } - - @Nullable - private static PyImportElement findImportElementByName(@NotNull PyFile file, @NotNull String name) { - for (PyImportElement element : getImportElements(file)) { - if (name.equals(element.getVisibleName())) { - return element; - } - } - return null; - } - - private static List getImportElements(@NotNull PyFile file) { - final List result = new ArrayList<>(file.getImportTargets()); - for (PyFromImportStatement statement : file.getFromImports()) { - result.addAll(Arrays.asList(statement.getImportElements())); - } - return result; - } -}