diff --git a/python/src/com/jetbrains/python/inspections/PyMethodMayBeStaticInspection.java b/python/src/com/jetbrains/python/inspections/PyMethodMayBeStaticInspection.java index 7e467a5394a8..d488216235d2 100644 --- a/python/src/com/jetbrains/python/inspections/PyMethodMayBeStaticInspection.java +++ b/python/src/com/jetbrains/python/inspections/PyMethodMayBeStaticInspection.java @@ -10,6 +10,7 @@ import com.jetbrains.python.PyNames; import com.jetbrains.python.inspections.quickfix.PyMakeFunctionFromMethodQuickFix; import com.jetbrains.python.inspections.quickfix.PyMakeMethodStaticQuickFix; import com.jetbrains.python.psi.*; +import com.jetbrains.python.psi.search.PyOverridingMethodsSearch; import com.jetbrains.python.psi.search.PySuperMethodsSearch; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; @@ -50,6 +51,8 @@ public class PyMethodMayBeStaticInspection extends PyInspection { if (containingClass == null) return; final Collection supers = PySuperMethodsSearch.search(node).findAll(); if (!supers.isEmpty()) return; + final Collection overrides = PyOverridingMethodsSearch.search(node, true).findAll(); + if (!overrides.isEmpty()) return; final PyDecoratorList decoratorList = node.getDecoratorList(); if (decoratorList != null) { for (PyDecorator decorator : decoratorList.getDecorators()) { diff --git a/python/testData/inspections/PyMethodMayBeStaticInspection/overwrittenMethod.py b/python/testData/inspections/PyMethodMayBeStaticInspection/overwrittenMethod.py index 4a7badf376e7..534de6ffb0be 100644 --- a/python/testData/inspections/PyMethodMayBeStaticInspection/overwrittenMethod.py +++ b/python/testData/inspections/PyMethodMayBeStaticInspection/overwrittenMethod.py @@ -1,5 +1,5 @@ class A: - def f(self, a): + def f(self, a): print "A" class B(A): diff --git a/python/testData/inspections/PyMethodMayBeStaticInspection/superMethod.py b/python/testData/inspections/PyMethodMayBeStaticInspection/superMethod.py new file mode 100644 index 000000000000..6df1a27e05d2 --- /dev/null +++ b/python/testData/inspections/PyMethodMayBeStaticInspection/superMethod.py @@ -0,0 +1,7 @@ +class A: + def f(self, a): + print "A" + +class B(A): + def f(self, a): + print self.b \ 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 ede506a18cc9..a3e39dd9dddb 100644 --- a/python/testSrc/com/jetbrains/python/inspections/PyMethodMayBeStaticInspectionTest.java +++ b/python/testSrc/com/jetbrains/python/inspections/PyMethodMayBeStaticInspectionTest.java @@ -46,10 +46,15 @@ public class PyMethodMayBeStaticInspectionTest extends PyTestCase { public void testNotImplemented() { doTest(); } + public void testOverwrittenMethod() { doTest(); } + public void testSuperMethod() { + doTest(); + } + private void doTest() { myFixture.configureByFile("inspections/PyMethodMayBeStaticInspection/" + getTestName(true) + ".py"); myFixture.enableInspections(PyMethodMayBeStaticInspection.class);