fixed failed tests. (builtins module in compatibility inspection)

This commit is contained in:
Ekaterina Tuzova
2011-02-28 12:10:06 +03:00
parent 92ef590519
commit 8925932fcf
4 changed files with 35 additions and 4 deletions
@@ -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
@@ -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);
@@ -1,3 +1,3 @@
<warning descr="Python version 2.4, 2.5, 2.6, 2.7 do not have module builtins">import builtins</warning>
<error descr="Python version 2.7 does not have module builtins"><warning descr="Python version 2.4, 2.5, 2.6, 2.7 do not have module builtins">import builtins</warning></error>
<warning descr="Python version 3.0, 3.1 do not have module __builtin__">import __builtin__</warning>
@@ -28,6 +28,7 @@ public class PyCompatibilityInspectionTest extends PyLightFixtureTestCase {
}
public void testImportStatement() {
setLanguageLevel(LanguageLevel.PYTHON27);
doTest();
}