From ecec49d524593617c03f3db21220bc311786f2ee Mon Sep 17 00:00:00 2001 From: Ekaterina Tuzova Date: Tue, 8 Oct 2013 15:59:41 +0400 Subject: [PATCH] simplified attr outside init search --- .../PyAttributeOutsideInitInspection.java | 41 ++++--------------- 1 file changed, 8 insertions(+), 33 deletions(-) diff --git a/python/src/com/jetbrains/python/inspections/PyAttributeOutsideInitInspection.java b/python/src/com/jetbrains/python/inspections/PyAttributeOutsideInitInspection.java index 8dea3493490f..1fe5e3923aa6 100644 --- a/python/src/com/jetbrains/python/inspections/PyAttributeOutsideInitInspection.java +++ b/python/src/com/jetbrains/python/inspections/PyAttributeOutsideInitInspection.java @@ -6,11 +6,11 @@ import com.intellij.psi.PsiElementVisitor; import com.jetbrains.python.PyBundle; import com.jetbrains.python.PyNames; import com.jetbrains.python.inspections.quickfix.PyMoveAttributeToInitQuickFix; -import com.jetbrains.python.psi.*; -import com.jetbrains.python.psi.impl.PyCallExpressionHelper; +import com.jetbrains.python.psi.Property; +import com.jetbrains.python.psi.PyClass; +import com.jetbrains.python.psi.PyFunction; +import com.jetbrains.python.psi.PyTargetExpression; import com.jetbrains.python.psi.impl.PyClassImpl; -import com.jetbrains.python.psi.types.PyClassType; -import com.jetbrains.python.psi.types.PyType; import com.jetbrains.python.testing.PythonUnitTestUtil; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; @@ -65,14 +65,11 @@ public class PyAttributeOutsideInitInspection extends PyInspection { final PyFunction initMethod = containingClass.findMethodByName(PyNames.INIT, false); if (initMethod != null) { PyClassImpl.collectInstanceAttributes(initMethod, attributesInInit); - collectAttributesFromSuper(attributesInInit, initMethod); } - else { - for (PyClass superClass : containingClass.getAncestorClasses(myTypeEvalContext)) { - final PyFunction superInit = superClass.findMethodByName(PyNames.INIT, false); - if (superInit != null) - PyClassImpl.collectInstanceAttributes(superInit, attributesInInit); - } + for (PyClass superClass : containingClass.getAncestorClasses(myTypeEvalContext)) { + final PyFunction superInit = superClass.findMethodByName(PyNames.INIT, false); + if (superInit != null) + PyClassImpl.collectInstanceAttributes(superInit, attributesInInit); } Map attributes = new HashMap(); @@ -86,28 +83,6 @@ public class PyAttributeOutsideInitInspection extends PyInspection { } } } - - private void collectAttributesFromSuper(Map attributesInInit, PyFunction initMethod) { - final PyStatementList statementList = initMethod.getStatementList(); - if (statementList != null) { - for (PyStatement statement : statementList.getStatements()) { - if (statement instanceof PyExpressionStatement) { - final PyExpression expression = ((PyExpressionStatement)statement).getExpression(); - if (expression instanceof PyCallExpression) { - final PyType callType = PyCallExpressionHelper.getCallType((PyCallExpression)expression, myTypeEvalContext); - if (callType instanceof PyClassType) { - final PyClass superClass = ((PyClassType)callType).getPyClass(); - final PyFunction superInit = superClass.findMethodByName(PyNames.INIT, false); - if (superInit != null) { - PyClassImpl.collectInstanceAttributes(superInit, attributesInInit); - collectAttributesFromSuper(attributesInInit, superInit); - } - } - } - } - } - } - } } private static boolean isApplicable(@NotNull final PyClass containingClass) {