diff --git a/python/src/com/jetbrains/python/codeInsight/imports/AddImportHelper.java b/python/src/com/jetbrains/python/codeInsight/imports/AddImportHelper.java
index e76c4ab5f56c..7b4cd06c6d35 100644
--- a/python/src/com/jetbrains/python/codeInsight/imports/AddImportHelper.java
+++ b/python/src/com/jetbrains/python/codeInsight/imports/AddImportHelper.java
@@ -191,6 +191,9 @@ public class AddImportHelper {
if (target != null && existingImport.getTextRange().getStartOffset() > target.getTextRange().getStartOffset()) {
continue;
}
+ if (existingImport.isStarImport()) {
+ continue;
+ }
final PyQualifiedName qName = existingImport.getImportSourceQName();
if (qName != null && qName.toString().equals(path)) {
for (PyImportElement el : existingImport.getImportElements()) {
@@ -220,7 +223,7 @@ public class AddImportHelper {
else if (useQualified) {
addImportStatement(file, path, null, priority);
final PyElementGenerator elementGenerator = PyElementGenerator.getInstance(file.getProject());
- element.replace(elementGenerator.createExpressionFromText(qName + "." + target.getName()));
+ element.replace(elementGenerator.createExpressionFromText(LanguageLevel.forElement(target), qName + "." + target.getName()));
}
else {
addImportFrom(file, null, path, target.getName(), null, priority);
diff --git a/python/testData/inspections/importFromModuleStar/source.py b/python/testData/inspections/importFromModuleStar/source.py
new file mode 100644
index 000000000000..55c27e1fb049
--- /dev/null
+++ b/python/testData/inspections/importFromModuleStar/source.py
@@ -0,0 +1,4 @@
+from target import *
+
+xyzzy
+shazam()
diff --git a/python/testData/inspections/importFromModuleStar/source_after.py b/python/testData/inspections/importFromModuleStar/source_after.py
new file mode 100644
index 000000000000..b118609972b6
--- /dev/null
+++ b/python/testData/inspections/importFromModuleStar/source_after.py
@@ -0,0 +1,5 @@
+from target import *
+from target import xyzzy
+
+xyzzy
+shazam()
diff --git a/python/testData/inspections/importFromModuleStar/target.py b/python/testData/inspections/importFromModuleStar/target.py
new file mode 100644
index 000000000000..2214231d716c
--- /dev/null
+++ b/python/testData/inspections/importFromModuleStar/target.py
@@ -0,0 +1,4 @@
+__all__ = ['shazam']
+
+def shazam(): pass
+def xyzzy(): pass
diff --git a/python/testSrc/com/jetbrains/python/PyQuickFixTest.java b/python/testSrc/com/jetbrains/python/PyQuickFixTest.java
index dd8aac6b309b..c0758fc44ae9 100644
--- a/python/testSrc/com/jetbrains/python/PyQuickFixTest.java
+++ b/python/testSrc/com/jetbrains/python/PyQuickFixTest.java
@@ -36,6 +36,17 @@ public class PyQuickFixTest extends PyTestCase {
PyUnresolvedReferencesInspection.class, PyBundle.message("ACT.NAME.use.import"), true, true);
}
+ public void testImportFromModuleStar() { // PY-6302
+ myFixture.enableInspections(PyUnresolvedReferencesInspection.class);
+ myFixture.copyDirectoryToProject("importFromModuleStar", "");
+ myFixture.configureFromTempProjectFile("source.py");
+ myFixture.checkHighlighting(true, false, false);
+ final IntentionAction intentionAction = myFixture.findSingleIntention(PyBundle.message("ACT.NAME.use.import"));
+ assertNotNull(intentionAction);
+ myFixture.launchAction(intentionAction);
+ myFixture.checkResultByFile("importFromModuleStar/source_after.py");
+ }
+
public void testQualifyByImport() {
final PyCodeInsightSettings settings = PyCodeInsightSettings.getInstance();
boolean oldPreferFrom = settings.PREFER_FROM_IMPORT;