From fe2852a7bb052d176d3ea26fa927f205ac33fe7e Mon Sep 17 00:00:00 2001 From: Ekaterina Tuzova Date: Fri, 11 Oct 2013 14:20:41 +0400 Subject: [PATCH] PY-11075 Class must implement all abstract methods: false negative for abstract decorators defined with fqn moved test data to the proper place --- .../python/inspections/PyAbstractClassInspection.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/python/src/com/jetbrains/python/inspections/PyAbstractClassInspection.java b/python/src/com/jetbrains/python/inspections/PyAbstractClassInspection.java index eabe00f7882c..34c09a02b4bd 100644 --- a/python/src/com/jetbrains/python/inspections/PyAbstractClassInspection.java +++ b/python/src/com/jetbrains/python/inspections/PyAbstractClassInspection.java @@ -10,8 +10,10 @@ import com.jetbrains.python.PyNames; import com.jetbrains.python.codeInsight.override.PyOverrideImplementUtil; import com.jetbrains.python.inspections.quickfix.PyImplementMethodsQuickFix; import com.jetbrains.python.psi.PyClass; +import com.jetbrains.python.psi.PyDecorator; import com.jetbrains.python.psi.PyDecoratorList; import com.jetbrains.python.psi.PyFunction; +import com.jetbrains.python.psi.impl.PyQualifiedName; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -51,8 +53,12 @@ public class PyAbstractClassInspection extends PyInspection { for (PyFunction method : functions) { final PyDecoratorList list = method.getDecoratorList(); if (list != null && node.findMethodByName(method.getName(), false) == null) { - if (list.findDecorator(PyNames.ABSTRACTMETHOD) != null || list.findDecorator(PyNames.ABSTRACTPROPERTY) != null) { - toBeImplemented.add(method); + for (PyDecorator decorator : list.getDecorators()) { + final PyQualifiedName qualifiedName = decorator.getQualifiedName(); + if (qualifiedName != null && (PyNames.ABSTRACTMETHOD.equals(qualifiedName.getLastComponent()) || PyNames.ABSTRACTPROPERTY.equals( + qualifiedName.getLastComponent()))) { + toBeImplemented.add(method); + } } } }