From c5fc462c9acff20ccbb4d43779b1d71d70fa05dc Mon Sep 17 00:00:00 2001 From: Ekaterina Tuzova Date: Wed, 25 Sep 2013 17:30:00 +0400 Subject: [PATCH] fixed PY-10881 Method may be static false positive on abc.abstractproperty --- .../python/inspections/PyMethodMayBeStaticInspection.java | 7 +++++-- .../PyMethodMayBeStaticInspection/abstractProperty.py | 8 ++++++++ .../inspections/PyMethodMayBeStaticInspectionTest.java | 4 ++++ 3 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 python/testData/inspections/PyMethodMayBeStaticInspection/abstractProperty.py diff --git a/python/src/com/jetbrains/python/inspections/PyMethodMayBeStaticInspection.java b/python/src/com/jetbrains/python/inspections/PyMethodMayBeStaticInspection.java index f1a044acfd56..b179c3e9a9b1 100644 --- a/python/src/com/jetbrains/python/inspections/PyMethodMayBeStaticInspection.java +++ b/python/src/com/jetbrains/python/inspections/PyMethodMayBeStaticInspection.java @@ -57,8 +57,7 @@ public class PyMethodMayBeStaticInspection extends PyInspection { if (decoratorList != null) { for (PyDecorator decorator : decoratorList.getDecorators()) { final String decoratorName = decorator.getName(); - if (PyNames.STATICMETHOD.equals(decoratorName) || PyNames.CLASSMETHOD.equals(decoratorName) || - PyNames.ABSTRACTMETHOD.equals(decoratorName)) { + if (hasSpecificDecorator(decoratorName)) { return; } final Property property = containingClass.findPropertyByCallable(node); @@ -121,5 +120,9 @@ public class PyMethodMayBeStaticInspection extends PyInspection { } } + private static boolean hasSpecificDecorator(String decoratorName) { + return PyNames.STATICMETHOD.equals(decoratorName) || PyNames.CLASSMETHOD.equals(decoratorName) || + PyNames.ABSTRACTMETHOD.equals(decoratorName) || PyNames.ABSTRACTPROPERTY.equals(decoratorName); + } } } diff --git a/python/testData/inspections/PyMethodMayBeStaticInspection/abstractProperty.py b/python/testData/inspections/PyMethodMayBeStaticInspection/abstractProperty.py new file mode 100644 index 000000000000..437a67c3dd8b --- /dev/null +++ b/python/testData/inspections/PyMethodMayBeStaticInspection/abstractProperty.py @@ -0,0 +1,8 @@ +__author__ = 'ktisha' +import abc + + +class A(object): + @abc.abstractproperty + def foo(self): + print "" \ 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 a3e39dd9dddb..931cf9ef78ff 100644 --- a/python/testSrc/com/jetbrains/python/inspections/PyMethodMayBeStaticInspectionTest.java +++ b/python/testSrc/com/jetbrains/python/inspections/PyMethodMayBeStaticInspectionTest.java @@ -55,6 +55,10 @@ public class PyMethodMayBeStaticInspectionTest extends PyTestCase { doTest(); } + public void testAbstractProperty() { + doTest(); + } + private void doTest() { myFixture.configureByFile("inspections/PyMethodMayBeStaticInspection/" + getTestName(true) + ".py"); myFixture.enableInspections(PyMethodMayBeStaticInspection.class);