fixed PY-8151 Don't highlight deprecation on symbols imported as fallbacks after ImportError

This commit is contained in:
Ekaterina Tuzova
2013-01-15 16:55:40 +04:00
parent 0bbefa7e77
commit 35ee12fefa
3 changed files with 17 additions and 3 deletions
@@ -6,9 +6,8 @@ import com.intellij.codeInspection.ProblemsHolder;
import com.intellij.lang.ASTNode;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiElementVisitor;
import com.jetbrains.python.psi.PyFile;
import com.jetbrains.python.psi.PyFunction;
import com.jetbrains.python.psi.PyReferenceExpression;
import com.intellij.psi.util.PsiTreeUtil;
import com.jetbrains.python.psi.*;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -39,6 +38,11 @@ public class PyDeprecationInspection extends PyInspection {
@Override
public void visitPyReferenceExpression(PyReferenceExpression node) {
final PyExceptPart exceptPart = PsiTreeUtil.getParentOfType(node, PyExceptPart.class);
if (exceptPart != null) {
final PyExpression exceptClass = exceptPart.getExceptClass();
if (exceptClass != null && "ImportError".equals(exceptClass.getText())) return;
}
PsiElement resolveResult = node.getReference(resolveWithoutImplicits()).resolve();
String deprecationMessage = null;
if (resolveResult instanceof PyFunction) {
@@ -0,0 +1,4 @@
try:
from urlparse import parse_qs, parse_qsl
except ImportError:
from cgi import parse_qs, parse_qsl
@@ -27,6 +27,12 @@ public class PyDeprecationTest extends PyTestCase {
assertNotParsed((PyFile) myFixture.getFile());
}
public void testDeprecatedAsFallback() {
myFixture.enableInspections(PyDeprecationInspection.class);
myFixture.configureByFile("deprecation/deprecatedAsFallback.py");
myFixture.checkHighlighting(true, false, false);
}
public void testDeprecatedProperty() {
myFixture.enableInspections(PyDeprecationInspection.class);
myFixture.configureByFile("deprecation/deprecatedProperty.py");