From 20a75c4842f3a1e32c67173d3dc14d8121772b88 Mon Sep 17 00:00:00 2001 From: Andrey Vlasovskikh Date: Thu, 6 Nov 2014 17:07:05 +0300 Subject: [PATCH] Fixed completion for 'from .' (PY-6477) --- .../python/psi/impl/PyReferenceExpressionImpl.java | 7 +++---- .../fromQualifiedNamespacePackageImport/a.after.py | 1 + .../completion/fromQualifiedNamespacePackageImport/a.py | 1 + .../fromQualifiedNamespacePackageImport/nspkg1/bar.py | 0 .../fromQualifiedNamespacePackageImport/nspkg1/foo.py | 0 python/testSrc/com/jetbrains/python/Py3CompletionTest.java | 5 +++++ 6 files changed, 10 insertions(+), 4 deletions(-) create mode 100644 python/testData/completion/fromQualifiedNamespacePackageImport/a.after.py create mode 100644 python/testData/completion/fromQualifiedNamespacePackageImport/a.py create mode 100644 python/testData/completion/fromQualifiedNamespacePackageImport/nspkg1/bar.py create mode 100644 python/testData/completion/fromQualifiedNamespacePackageImport/nspkg1/foo.py diff --git a/python/src/com/jetbrains/python/psi/impl/PyReferenceExpressionImpl.java b/python/src/com/jetbrains/python/psi/impl/PyReferenceExpressionImpl.java index a4ba8f8ead5d..fd1126e64a2f 100644 --- a/python/src/com/jetbrains/python/psi/impl/PyReferenceExpressionImpl.java +++ b/python/src/com/jetbrains/python/psi/impl/PyReferenceExpressionImpl.java @@ -379,12 +379,11 @@ public class PyReferenceExpressionImpl extends PyElementImpl implements PyRefere if (file != null) { return getTypeFromTarget(file, context, anchor); } - if (context.maySwitchToAST(anchor) && PyUtil.isPackage(dir, anchor)) { - final PyImportElement importElement = PsiTreeUtil.getParentOfType(anchor, PyImportElement.class); + if (PyUtil.isPackage(dir, anchor)) { final PsiFile containingFile = anchor.getContainingFile(); - if (importElement != null && containingFile instanceof PyFile) { + if (containingFile instanceof PyFile) { final QualifiedName qualifiedName = QualifiedName.fromComponents(dir.getName()); - final PyImportedModule module = new PyImportedModule(importElement, (PyFile)containingFile, qualifiedName); + final PyImportedModule module = new PyImportedModule(null, (PyFile)containingFile, qualifiedName); return new PyImportedModuleType(module); } } diff --git a/python/testData/completion/fromQualifiedNamespacePackageImport/a.after.py b/python/testData/completion/fromQualifiedNamespacePackageImport/a.after.py new file mode 100644 index 000000000000..08b9946188ab --- /dev/null +++ b/python/testData/completion/fromQualifiedNamespacePackageImport/a.after.py @@ -0,0 +1 @@ +from nspkg1.foo import diff --git a/python/testData/completion/fromQualifiedNamespacePackageImport/a.py b/python/testData/completion/fromQualifiedNamespacePackageImport/a.py new file mode 100644 index 000000000000..dc6e9e115236 --- /dev/null +++ b/python/testData/completion/fromQualifiedNamespacePackageImport/a.py @@ -0,0 +1 @@ +from nspkg1.f diff --git a/python/testData/completion/fromQualifiedNamespacePackageImport/nspkg1/bar.py b/python/testData/completion/fromQualifiedNamespacePackageImport/nspkg1/bar.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/python/testData/completion/fromQualifiedNamespacePackageImport/nspkg1/foo.py b/python/testData/completion/fromQualifiedNamespacePackageImport/nspkg1/foo.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/python/testSrc/com/jetbrains/python/Py3CompletionTest.java b/python/testSrc/com/jetbrains/python/Py3CompletionTest.java index 96ce44eeb467..9c87e473dd56 100644 --- a/python/testSrc/com/jetbrains/python/Py3CompletionTest.java +++ b/python/testSrc/com/jetbrains/python/Py3CompletionTest.java @@ -110,4 +110,9 @@ public class Py3CompletionTest extends PyTestCase { public void testImportQualifiedNamespacePackage() { doMultiFileTest(); } + + // PY-6477 + public void testFromQualifiedNamespacePackageImport() { + doMultiFileTest(); + } }