From cc898d0921ded3d97184d5f4a750fe21b916b28f Mon Sep 17 00:00:00 2001 From: Andrey Vlasovskikh Date: Fri, 27 May 2011 16:37:27 +0400 Subject: [PATCH] Show qualified base class names in structure view (PY-3714) --- .../structureView/PyStructureViewElement.java | 14 ++++++++------ python/testData/structureView/baseClassNames.py | 6 ++++++ python/testData/structureView/lib1.py | 2 ++ .../com/jetbrains/python/PyStructureViewTest.java | 6 ++++-- 4 files changed, 20 insertions(+), 8 deletions(-) create mode 100644 python/testData/structureView/lib1.py diff --git a/python/src/com/jetbrains/python/structureView/PyStructureViewElement.java b/python/src/com/jetbrains/python/structureView/PyStructureViewElement.java index 507398710e42..ffdb88b155bb 100644 --- a/python/src/com/jetbrains/python/structureView/PyStructureViewElement.java +++ b/python/src/com/jetbrains/python/structureView/PyStructureViewElement.java @@ -15,13 +15,14 @@ import com.jetbrains.python.psi.*; import com.jetbrains.python.psi.impl.ParamHelper; import com.jetbrains.python.psi.impl.PyBuiltinCache; import org.jetbrains.annotations.Nullable; -import static com.intellij.openapi.util.text.StringUtil.join; -import static com.intellij.openapi.util.text.StringUtil.notNullize; import javax.swing.*; +import java.util.Arrays; import java.util.LinkedHashSet; import java.util.Set; -import java.util.Arrays; + +import static com.intellij.openapi.util.text.StringUtil.join; +import static com.intellij.openapi.util.text.StringUtil.notNullize; /** * Handles nodes in Structure View. @@ -159,9 +160,10 @@ public class PyStructureViewElement implements StructureViewTreeElement { PyClass[] superClasses = c.getSuperClasses(); if (superClasses.length > 0) { result.append("("); - result.append(join(Arrays.asList(c.getSuperClasses()), new Function() { - public String fun(PyClass c) { - return notNullize(c.getName(), unnamed); + result.append(join(Arrays.asList(c.getSuperClassExpressions()), new Function() { + public String fun(PyExpression expr) { + String name = expr.getText(); + return notNullize(name, unnamed); } }, ", ")); result.append(")"); diff --git a/python/testData/structureView/baseClassNames.py b/python/testData/structureView/baseClassNames.py index 42799409c52a..ea4975f96699 100644 --- a/python/testData/structureView/baseClassNames.py +++ b/python/testData/structureView/baseClassNames.py @@ -1,3 +1,5 @@ +import lib1 + class B1: def f(self, x): return x + self.y @@ -15,3 +17,7 @@ class D1(C): class D2(C): pass + +# PY-3714 +class D3(lib1.C): + pass diff --git a/python/testData/structureView/lib1.py b/python/testData/structureView/lib1.py new file mode 100644 index 000000000000..1d09cde640dd --- /dev/null +++ b/python/testData/structureView/lib1.py @@ -0,0 +1,2 @@ +class C(object): + pass diff --git a/python/testSrc/com/jetbrains/python/PyStructureViewTest.java b/python/testSrc/com/jetbrains/python/PyStructureViewTest.java index f8643ee7109c..fbb042cea039 100644 --- a/python/testSrc/com/jetbrains/python/PyStructureViewTest.java +++ b/python/testSrc/com/jetbrains/python/PyStructureViewTest.java @@ -11,7 +11,8 @@ import static com.intellij.testFramework.PlatformTestUtil.assertTreeEqual; */ public class PyStructureViewTest extends PyLightFixtureTestCase { public void testBaseClassNames() { - myFixture.configureByFile("structureView/baseClassNames.py"); + myFixture.configureByFiles("structureView/baseClassNames.py", + "structureView/lib1.py"); myFixture.testStructureView(new Consumer() { @Override public void consume(StructureViewComponent component) { @@ -22,7 +23,8 @@ public class PyStructureViewTest extends PyLightFixtureTestCase { " g(x)\n" + " C(B1, B2)\n" + " D1(C)\n" + - " D2(C)\n"); + " D2(C)\n" + + " D3(lib1.C)\n"); } }); }