diff --git a/python/src/com/jetbrains/python/inspections/PyMethodMayBeStaticInspection.java b/python/src/com/jetbrains/python/inspections/PyMethodMayBeStaticInspection.java index d5807ef2ce7a..08a70ef5a84d 100644 --- a/python/src/com/jetbrains/python/inspections/PyMethodMayBeStaticInspection.java +++ b/python/src/com/jetbrains/python/inspections/PyMethodMayBeStaticInspection.java @@ -65,12 +65,23 @@ public class PyMethodMayBeStaticInspection extends PyInspection { if (statements.length == 1 && statements[0] instanceof PyPassStatement) return; + final PyParameter[] parameters = node.getParameterList().getParameters(); + + final String selfName; + if (parameters.length > 0) { + final String name = parameters[0].getName(); + selfName = name != null ? name : parameters[0].getText(); + } + else { + selfName = PyNames.CANONICAL_SELF; + } + final boolean[] mayBeStatic = {true}; PyRecursiveElementVisitor visitor = new PyRecursiveElementVisitor() { @Override public void visitPyReferenceExpression(PyReferenceExpression node) { super.visitPyReferenceExpression(node); - if (PyNames.CANONICAL_SELF.equals(node.getName())) { + if (selfName.equals(node.getName())) { mayBeStatic[0] = false; } } diff --git a/python/testData/inspections/PyMethodMayBeStaticInspection/selfName.py b/python/testData/inspections/PyMethodMayBeStaticInspection/selfName.py new file mode 100644 index 000000000000..966548d60562 --- /dev/null +++ b/python/testData/inspections/PyMethodMayBeStaticInspection/selfName.py @@ -0,0 +1,6 @@ +__author__ = 'ktisha' + + +class A(): + def my_method(my_inst): + my_inst.do_smth() \ No newline at end of file diff --git a/python/testSrc/com/jetbrains/python/inspections/PyMethodMayBeStaticInspectionTest.java b/python/testSrc/com/jetbrains/python/inspections/PyMethodMayBeStaticInspectionTest.java index 4c9c16ed8cf9..dcc0892de902 100644 --- a/python/testSrc/com/jetbrains/python/inspections/PyMethodMayBeStaticInspectionTest.java +++ b/python/testSrc/com/jetbrains/python/inspections/PyMethodMayBeStaticInspectionTest.java @@ -39,6 +39,10 @@ public class PyMethodMayBeStaticInspectionTest extends PyTestCase { doTest(); } + public void testSelfName() { + doTest(); + } + private void doTest() { myFixture.configureByFile("inspections/PyMethodMayBeStaticInspection/" + getTestName(true) + ".py"); myFixture.enableInspections(PyMethodMayBeStaticInspection.class);