mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Fixed unresolved __qualname__ for instances and functions in Python 3.3 (PY-6745)
This commit is contained in:
@@ -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
|
||||
+11
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user