Fixed unresolved __qualname__ for instances and functions in Python 3.3 (PY-6745)

This commit is contained in:
Andrey Vlasovskikh
2012-08-30 16:58:53 +04:00
parent 5e314dbb48
commit 81672ebe20
3 changed files with 26 additions and 0 deletions
@@ -449,6 +449,11 @@ public class PyUnresolvedReferencesInspection extends PyInspection {
if (description == null) {
boolean marked_qualified = false;
if (element instanceof PyQualifiedExpression) {
// TODO: Add __qualname__ for Python 3.3 to the skeleton of <class 'object'>, introduce a pseudo-class skeleton for
// <class 'function'>
if ("__qualname__".equals(ref_text) && LanguageLevel.forElement(element).isAtLeast(LanguageLevel.PYTHON33)) {
return;
}
final PyQualifiedExpression qexpr = (PyQualifiedExpression)element;
if (PyNames.COMPARISON_OPERATORS.contains(qexpr.getReferencedName()) || refname == null) {
return;
@@ -0,0 +1,10 @@
class C:
pass
def f(x):
x.__qualname__ #pass
C.__qualname__ #pass
c = C()
c.__qualname__ #pass
f.__qualname__ #pass
@@ -1,6 +1,7 @@
package com.jetbrains.python.inspections;
import com.jetbrains.python.fixtures.PyTestCase;
import com.jetbrains.python.psi.LanguageLevel;
import org.jetbrains.annotations.NotNull;
/**
@@ -190,6 +191,16 @@ public class PyUnresolvedReferencesInspectionTest extends PyTestCase {
doTest();
}
// PY-6745
public void testQualNameAttribute() {
runWithLanguageLevel(LanguageLevel.PYTHON33, new Runnable() {
@Override
public void run() {
doTest();
}
});
}
private void doTest() {
myFixture.configureByFile(TEST_DIRECTORY + getTestName(true) + ".py");
myFixture.enableInspections(PyUnresolvedReferencesInspection.class);