From cdd3e05d9f0de4b1366de282b45cec2e7d34f9d8 Mon Sep 17 00:00:00 2001 From: "Ilya.Kazakevich" Date: Tue, 11 Aug 2015 21:35:22 +0300 Subject: [PATCH] PY-16643: Context added to "visitClassAttributes" --- python/psi-api/src/com/jetbrains/python/psi/PyClass.java | 2 +- .../src/com/jetbrains/python/psi/impl/PyClassImpl.java | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/python/psi-api/src/com/jetbrains/python/psi/PyClass.java b/python/psi-api/src/com/jetbrains/python/psi/PyClass.java index bc89a0de1ef7..180b9ef2cb1f 100644 --- a/python/psi-api/src/com/jetbrains/python/psi/PyClass.java +++ b/python/psi-api/src/com/jetbrains/python/psi/PyClass.java @@ -160,7 +160,7 @@ public interface PyClass extends PsiNameIdentifierOwner, PyStatement, NameDefine */ boolean visitMethods(Processor processor, boolean inherited); - boolean visitClassAttributes(Processor processor, boolean inherited); + boolean visitClassAttributes(Processor processor, boolean inherited, TypeEvalContext context); /** * Effectively collects assignments inside the class body. diff --git a/python/src/com/jetbrains/python/psi/impl/PyClassImpl.java b/python/src/com/jetbrains/python/psi/impl/PyClassImpl.java index 3ac39612cc39..2ddeeb319b0d 100644 --- a/python/src/com/jetbrains/python/psi/impl/PyClassImpl.java +++ b/python/src/com/jetbrains/python/psi/impl/PyClassImpl.java @@ -955,12 +955,13 @@ public class PyClassImpl extends PyBaseElementImpl implements PyCla return true; } - public boolean visitClassAttributes(Processor processor, boolean inherited) { + public boolean visitClassAttributes(Processor processor, boolean inherited, @Nullable final TypeEvalContext context) { List methods = getClassAttributes(); if (!ContainerUtil.process(methods, processor)) return false; if (inherited) { - for (PyClass ancestor : getAncestorClasses(null)) { - if (!ancestor.visitClassAttributes(processor, false)) { + for (PyClass ancestor : getAncestorClasses(context)) { + // TODO: Why there is FALSE here? We support only one level of inheritance? + if (!ancestor.visitClassAttributes(processor, false, context)) { return false; } } @@ -993,7 +994,7 @@ public class PyClassImpl extends PyBaseElementImpl implements PyCla @Override public PyTargetExpression findClassAttribute(@NotNull String name, boolean inherited) { final NameFinder processor = new NameFinder(name); - visitClassAttributes(processor, inherited); + visitClassAttributes(processor, inherited, null); return processor.getResult(); }