Fixed completion for 'import <namespace-package>' (PY-7375)

This commit is contained in:
Andrey Vlasovskikh
2014-11-06 15:37:58 +03:00
parent 7d80339503
commit 017bf71da6
4 changed files with 19 additions and 3 deletions
@@ -245,7 +245,7 @@ public class PyModuleType implements PyType { // Modules don't descend from obje
* not suitable for import.
*/
@NotNull
private static List<PsiFileSystemItem> getSubmodulesList(final PsiDirectory directory) {
private static List<PsiFileSystemItem> getSubmodulesList(final PsiDirectory directory, @Nullable PsiElement anchor) {
List<PsiFileSystemItem> result = new ArrayList<PsiFileSystemItem>();
if (directory != null) { // just in case
@@ -259,7 +259,9 @@ public class PyModuleType implements PyType { // Modules don't descend from obje
}
// dir modules
for (PsiDirectory dir : directory.getSubdirectories()) {
if (dir.findFile(PyNames.INIT_DOT_PY) instanceof PyFile) result.add(dir);
if (PyUtil.isPackage(dir, anchor)) {
result.add(dir);
}
}
}
return result;
@@ -365,7 +367,7 @@ public class PyModuleType implements PyType { // Modules don't descend from obje
PsiElement location,
Set<String> namesAlready) {
List<LookupElement> result = new ArrayList<LookupElement>();
for (PsiFileSystemItem item : getSubmodulesList(directory)) {
for (PsiFileSystemItem item : getSubmodulesList(directory, location)) {
if (item != location.getContainingFile().getOriginalFile()) {
LookupElement lookupElement = buildFileLookupElement(item, namesAlready);
if (lookupElement != null) {
@@ -0,0 +1 @@
import nspkg1
@@ -0,0 +1 @@
import nspk<caret>
@@ -69,6 +69,13 @@ public class Py3CompletionTest extends PyTestCase {
myFixture.checkResultByFile(testName + ".after.py");
}
private void doMultiFileTest() {
myFixture.copyDirectoryToProject("completion/" + getTestName(true), "");
myFixture.configureByFile("a.py");
myFixture.completeBasic();
myFixture.checkResultByFile("completion/" + getTestName(true) + "/a.after.py");
}
private List<String> doTestByText(String text) {
myFixture.configureByText(PythonFileType.INSTANCE, text);
myFixture.completeBasic();
@@ -93,4 +100,9 @@ public class Py3CompletionTest extends PyTestCase {
setLanguageLevel(null);
}
}
// PY-7375
public void testImportNamespacePackage() {
doMultiFileTest();
}
}