Show base classes in structure view (PY-3370)

This commit is contained in:
Andrey Vlasovskikh
2011-04-20 12:33:25 +04:00
parent 3a633fb10b
commit df66f7fd1c
3 changed files with 64 additions and 0 deletions
@@ -149,6 +149,24 @@ public class PyStructureViewElement implements StructureViewTreeElement {
ParamHelper.appendParameterList(argList, result);
return result.toString();
}
else if (myElement instanceof PyClass) {
PyClass c = (PyClass) myElement;
StringBuilder result = new StringBuilder(c.getName());
PyClass[] superClasses = c.getSuperClasses();
int n = superClasses.length;
if (n > 0) {
result.append("(");
for (int i = 0; i < n; i++) {
c = superClasses[i];
result.append(c.getName());
if (i != n - 1) {
result.append(", ");
}
}
result.append(")");
}
return result.toString();
}
return myElement.getName();
}
@@ -0,0 +1,17 @@
class B1:
def f(self, x):
return x + self.y
class B2(object):
@staticmethod
def g(x):
return x
class C(B1, B2):
pass
class D1(C):
pass
class D2(C):
pass
@@ -0,0 +1,29 @@
package com.jetbrains.python;
import com.intellij.ide.structureView.newStructureView.StructureViewComponent;
import com.intellij.util.Consumer;
import com.jetbrains.python.fixtures.PyLightFixtureTestCase;
import static com.intellij.testFramework.PlatformTestUtil.assertTreeEqual;
/**
* @author vlan
*/
public class PyStructureViewTest extends PyLightFixtureTestCase {
public void testBaseClassNames() {
myFixture.configureByFile("structureView/baseClassNames.py");
myFixture.testStructureView(new Consumer<StructureViewComponent>() {
@Override
public void consume(StructureViewComponent component) {
assertTreeEqual(component.getTree(), "-baseClassNames.py\n" +
" -B1\n" +
" f(self, x)\n" +
" -B2(object)\n" +
" g(x)\n" +
" C(B1, B2)\n" +
" D1(C)\n" +
" D2(C)\n");
}
});
}
}