diff --git a/python/src/com/jetbrains/python/codeInsight/imports/ImportFromExistingAction.java b/python/src/com/jetbrains/python/codeInsight/imports/ImportFromExistingAction.java index 730e5a50eba4..ee07f7679a62 100644 --- a/python/src/com/jetbrains/python/codeInsight/imports/ImportFromExistingAction.java +++ b/python/src/com/jetbrains/python/codeInsight/imports/ImportFromExistingAction.java @@ -39,6 +39,7 @@ import com.intellij.ui.SimpleColoredComponent; import com.intellij.ui.SimpleTextAttributes; import com.intellij.ui.components.JBList; import com.intellij.util.Consumer; +import com.intellij.util.ObjectUtils; import com.jetbrains.python.PyBundle; import com.jetbrains.python.psi.*; import com.jetbrains.python.psi.impl.PyPsiUtils; @@ -48,6 +49,8 @@ import javax.swing.*; import java.awt.*; import java.util.List; +import static com.jetbrains.python.psi.PyUtil.as; + /** * Turns an unqualified unresolved identifier into qualified and resolvable. * @@ -148,7 +151,9 @@ public class ImportFromExistingAction implements QuestionAction { private void addImportStatement(ImportCandidateHolder item) { final Project project = myTarget.getProject(); final PyElementGenerator gen = PyElementGenerator.getInstance(project); - AddImportHelper.ImportPriority priority = AddImportHelper.getImportPriority(myTarget, item.getFile()); + + final PsiFileSystemItem filesystemAnchor = ObjectUtils.chooseNotNull(as(item.getImportable(), PsiFileSystemItem.class), item.getFile()); + AddImportHelper.ImportPriority priority = AddImportHelper.getImportPriority(myTarget, filesystemAnchor); PsiFile file = myTarget.getContainingFile(); InjectedLanguageManager manager = InjectedLanguageManager.getInstance(project); if (manager.isInjectedFragment(file)) { diff --git a/python/testData/quickFixes/PyAddImportQuickFixTest/skeletonStdlibModule/__init__.py b/python/testData/quickFixes/PyAddImportQuickFixTest/skeletonStdlibModule/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/python/testData/quickFixes/PyAddImportQuickFixTest/skeletonStdlibModule/main.py b/python/testData/quickFixes/PyAddImportQuickFixTest/skeletonStdlibModule/main.py new file mode 100644 index 000000000000..94782c4baceb --- /dev/null +++ b/python/testData/quickFixes/PyAddImportQuickFixTest/skeletonStdlibModule/main.py @@ -0,0 +1,5 @@ +import re + +import mod + +print(re, sys, mod) \ No newline at end of file diff --git a/python/testData/quickFixes/PyAddImportQuickFixTest/skeletonStdlibModule/main_after.py b/python/testData/quickFixes/PyAddImportQuickFixTest/skeletonStdlibModule/main_after.py new file mode 100644 index 000000000000..11f9815efc90 --- /dev/null +++ b/python/testData/quickFixes/PyAddImportQuickFixTest/skeletonStdlibModule/main_after.py @@ -0,0 +1,6 @@ +import re +import sys + +import mod + +print(re, sys, mod) \ No newline at end of file diff --git a/python/testData/quickFixes/PyAddImportQuickFixTest/skeletonStdlibModule/mod.py b/python/testData/quickFixes/PyAddImportQuickFixTest/skeletonStdlibModule/mod.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/python/testSrc/com/jetbrains/python/quickFixes/PyAddImportQuickFixTest.java b/python/testSrc/com/jetbrains/python/quickFixes/PyAddImportQuickFixTest.java index 3a8ea694fdef..11db4bf0e8a4 100644 --- a/python/testSrc/com/jetbrains/python/quickFixes/PyAddImportQuickFixTest.java +++ b/python/testSrc/com/jetbrains/python/quickFixes/PyAddImportQuickFixTest.java @@ -55,15 +55,18 @@ public class PyAddImportQuickFixTest extends PyQuickFixTestCase { doMultiFileAutoImportTest("Import this name"); } + public void testSkeletonStdlibModule() { + doMultiFileAutoImportTest("Import 'sys'"); + } + private void doMultiFileAutoImportTest(@NotNull String hintPrefix) { myFixture.copyDirectoryToProject(getTestName(true), ""); myFixture.enableInspections(PyUnresolvedReferencesInspection.class); - final String entryPoint = "main"; - myFixture.configureByFile(entryPoint + ".py"); + myFixture.configureByFile("main.py"); myFixture.checkHighlighting(true, false, false); - IntentionAction intention = myFixture.findSingleIntention(hintPrefix); + final IntentionAction intention = myFixture.findSingleIntention(hintPrefix); myFixture.launchAction(intention); - myFixture.checkResultByFile(getTestName(true) + "/" + entryPoint + "_after.py", true); + myFixture.checkResultByFile(getTestName(true) + "/main_after.py", true); } }