From 011c1e4a517577fde62ca0b0dcbae2386d4354f2 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Thu, 23 Sep 2010 12:58:59 +0400 Subject: [PATCH] use correct name when completing imported module (PY-1955); add icon --- .../jetbrains/python/psi/resolve/VariantsProcessor.java | 6 +++--- python/testData/completion/importedFile.after.py | 3 +++ python/testData/completion/importedFile.py | 3 +++ .../com/jetbrains/python/PythonCompletionTest.java | 8 ++++++++ 4 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 python/testData/completion/importedFile.after.py create mode 100644 python/testData/completion/importedFile.py diff --git a/python/src/com/jetbrains/python/psi/resolve/VariantsProcessor.java b/python/src/com/jetbrains/python/psi/resolve/VariantsProcessor.java index 1786f9140774..307f50c1c903 100644 --- a/python/src/com/jetbrains/python/psi/resolve/VariantsProcessor.java +++ b/python/src/com/jetbrains/python/psi/resolve/VariantsProcessor.java @@ -104,12 +104,12 @@ public class VariantsProcessor implements PsiScopeProcessor { if (element instanceof PyImportElement) { PyReferenceExpression ref = ((PyImportElement)element).getImportReference(); if (ref != null) { - final String name = ref.getName(); - if (nameIsAcceptable(name)) { + String name = ref.getName(); + if (name != null && nameIsAcceptable(name)) { PsiElement resolved = ref.getReference().resolve(); if (resolved instanceof PsiNamedElement) { handled_as_imported = true; - myVariants.put(name, setupItem(LookupElementBuilder.create((PsiNamedElement)resolved))); + myVariants.put(name, setupItem(LookupElementBuilder.create(resolved, name).setIcon(resolved.getIcon(0)))); } } } diff --git a/python/testData/completion/importedFile.after.py b/python/testData/completion/importedFile.after.py new file mode 100644 index 000000000000..1d29a58d3a07 --- /dev/null +++ b/python/testData/completion/importedFile.after.py @@ -0,0 +1,3 @@ +from root import nested_mod + +n = nested_mod \ No newline at end of file diff --git a/python/testData/completion/importedFile.py b/python/testData/completion/importedFile.py new file mode 100644 index 000000000000..1844ab32919f --- /dev/null +++ b/python/testData/completion/importedFile.py @@ -0,0 +1,3 @@ +from root import nested_mod + +n = nested_m \ No newline at end of file diff --git a/python/testSrc/com/jetbrains/python/PythonCompletionTest.java b/python/testSrc/com/jetbrains/python/PythonCompletionTest.java index 589324b50757..8e5dbf61ac13 100644 --- a/python/testSrc/com/jetbrains/python/PythonCompletionTest.java +++ b/python/testSrc/com/jetbrains/python/PythonCompletionTest.java @@ -213,4 +213,12 @@ public class PythonCompletionTest extends PyLightFixtureTestCase { myFixture.completeBasic(); myFixture.checkResultByFile("completion/importItself.after.py"); } + + public void testImportedFile() { // PY-1955 + final String dirname = "completion/"; + myFixture.copyDirectoryToProject(dirname + "root", dirname + "root"); + myFixture.configureByFile(dirname + "importedFile.py"); + myFixture.completeBasic(); + myFixture.checkResultByFile(dirname + "importedFile.after.py"); + } } \ No newline at end of file