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(); }