diff --git a/python/src/com/jetbrains/python/inspections/PyCompatibilityInspection.java b/python/src/com/jetbrains/python/inspections/PyCompatibilityInspection.java
index 9110eb405eea..d2976190b2ff 100644
--- a/python/src/com/jetbrains/python/inspections/PyCompatibilityInspection.java
+++ b/python/src/com/jetbrains/python/inspections/PyCompatibilityInspection.java
@@ -10,7 +10,6 @@ import com.intellij.psi.PsiElementVisitor;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiReference;
import com.jetbrains.python.PyBundle;
-import com.jetbrains.python.actions.ReplaceBuiltinsQuickFix;
import com.jetbrains.python.psi.*;
import com.jetbrains.python.psi.impl.PyQualifiedName;
import com.jetbrains.python.validation.CompatibilityVisitor;
@@ -171,14 +170,14 @@ public class PyCompatibilityInspection extends PyInspection {
LanguageLevel languageLevel = myVersionsToProcess.get(i);
for (PyImportElement importElement : importElements) {
final PyQualifiedName qName = importElement.getImportedQName();
- if (qName != null) {
+ if (qName != null && !qName.matches("builtins") && !qName.matches("__builtin__")) {
moduleName = qName.toString();
if (UnsupportedFeaturesUtil.MODULES.get(languageLevel).contains(moduleName))
len = appendLanguageLevel(message, len, languageLevel);
}
}
}
- commonRegisterProblem(message, " not have module " + moduleName, len, node, new ReplaceBuiltinsQuickFix());
+ commonRegisterProblem(message, " not have module " + moduleName, len, node, null);
}
@Override
diff --git a/python/src/com/jetbrains/python/validation/CompatibilityVisitor.java b/python/src/com/jetbrains/python/validation/CompatibilityVisitor.java
index 24918d973fc7..b37e2e7bfbed 100644
--- a/python/src/com/jetbrains/python/validation/CompatibilityVisitor.java
+++ b/python/src/com/jetbrains/python/validation/CompatibilityVisitor.java
@@ -7,6 +7,7 @@ import com.jetbrains.python.PyNames;
import com.jetbrains.python.PyTokenTypes;
import com.jetbrains.python.actions.*;
import com.jetbrains.python.psi.*;
+import com.jetbrains.python.psi.impl.PyQualifiedName;
import java.util.HashSet;
import java.util.List;
@@ -99,6 +100,36 @@ public abstract class CompatibilityVisitor extends PyAnnotator {
}
}
+ @Override
+ public void visitPyImportStatement(PyImportStatement node) {
+ super.visitPyImportStatement(node);
+ PyImportElement[] importElements = node.getImportElements();
+ int len = 0;
+ String moduleName = "";
+ StringBuilder message = new StringBuilder(myCommonMessage);
+ for (int i = 0; i != myVersionsToProcess.size(); ++i) {
+ LanguageLevel languageLevel = myVersionsToProcess.get(i);
+ for (PyImportElement importElement : importElements) {
+ final PyQualifiedName qName = importElement.getImportedQName();
+ if (qName != null) {
+ if (!languageLevel.isPy3K()) {
+ if (qName.matches("builtins")) {
+ len = appendLanguageLevel(message, len, languageLevel);
+ moduleName = "builtins";
+ }
+ }
+ else {
+ if (qName.matches("__builtin__")) {
+ len = appendLanguageLevel(message, len, languageLevel);
+ moduleName = "__builtin__";
+ }
+ }
+ }
+ }
+ }
+ commonRegisterProblem(message, " not have module " + moduleName, len, node, new ReplaceBuiltinsQuickFix());
+ }
+
@Override
public void visitPyStarExpression(PyStarExpression node) {
super.visitPyStarExpression(node);
diff --git a/python/testData/inspections/PyCompatibilityInspection/importStatement.py b/python/testData/inspections/PyCompatibilityInspection/importStatement.py
index 975aa8b43bff..0e20e9214b4c 100644
--- a/python/testData/inspections/PyCompatibilityInspection/importStatement.py
+++ b/python/testData/inspections/PyCompatibilityInspection/importStatement.py
@@ -1,3 +1,3 @@
-import builtins
+import builtins
import __builtin__
\ No newline at end of file
diff --git a/python/testSrc/com/jetbrains/python/inspections/PyCompatibilityInspectionTest.java b/python/testSrc/com/jetbrains/python/inspections/PyCompatibilityInspectionTest.java
index 16dfd45df177..141fbc13e8db 100644
--- a/python/testSrc/com/jetbrains/python/inspections/PyCompatibilityInspectionTest.java
+++ b/python/testSrc/com/jetbrains/python/inspections/PyCompatibilityInspectionTest.java
@@ -28,6 +28,7 @@ public class PyCompatibilityInspectionTest extends PyLightFixtureTestCase {
}
public void testImportStatement() {
+ setLanguageLevel(LanguageLevel.PYTHON27);
doTest();
}