mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Fixed completion for 'import <namespace-package>' (PY-7375)
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user