correct resolve roof for private names in superclass list of a class (PY-2618)

This commit is contained in:
Dmitry Jemerov
2011-01-17 16:36:16 +01:00
parent 80f397847f
commit eb3a2c6004
3 changed files with 11 additions and 1 deletions
@@ -234,7 +234,10 @@ public class PyReferenceImpl implements PsiReferenceEx, PsiPolyVariantReference
}
while (one instanceof PyFunction);
if (one instanceof PyClass) {
return one;
PyArgumentList superClassExpressionList = ((PyClass)one).getSuperClassExpressionList();
if (superClassExpressionList == null || !PsiTreeUtil.isAncestor(superClassExpressionList, myElement, false)) {
return one;
}
}
}
@@ -0,0 +1,3 @@
class __VeryPrivate(object): pass
class Public(__VeryPrivate): pass
# <ref>
@@ -388,4 +388,8 @@ public class PyResolveTest extends PyResolveTestCase {
public void testWithParentheses() {
assertResolvesTo(LanguageLevel.PYTHON27, PyTargetExpression.class, "MockClass1");
}
public void testPrivateInsideModule() { // PY-2618
assertResolvesTo(PyClass.class, "__VeryPrivate");
}
}