PY-25076 Method may be static checks compares only unqualified references with "self"

This commit is contained in:
Mikhail Golubev
2017-07-07 14:49:51 +03:00
parent 12eb2d7cac
commit 44b75503a1
3 changed files with 16 additions and 2 deletions
@@ -113,8 +113,10 @@ public class PyMethodMayBeStaticInspection extends PyInspection {
@Override
public void visitPyReferenceExpression(PyReferenceExpression node) {
super.visitPyReferenceExpression(node);
if (selfName.equals(node.getName())) {
if (node.isQualified()) {
super.visitPyReferenceExpression(node);
}
else if (selfName.equals(node.getName())) {
mayBeStatic[0] = false;
}
}
@@ -0,0 +1,7 @@
x = object()
x.self = 42
class C:
def <weak_warning descr="Method 'method' may be 'static'">method</weak_warning>(self):
print(x.self)
@@ -115,6 +115,11 @@ public class PyMethodMayBeStaticInspectionTest extends PyTestCase {
doTest();
}
// PY-25076
public void testAttributeNamedSelf() {
doTest();
}
private void doTest() {
myFixture.configureByFile(getTestName(true) + ".py");
myFixture.enableInspections(PyMethodMayBeStaticInspection.class);