Slice tree: shorter container rendering for properties in primary constructor
This commit is contained in:
@@ -15,6 +15,7 @@ import org.jetbrains.kotlin.descriptors.ConstructorDescriptor
|
|||||||
import org.jetbrains.kotlin.idea.KotlinBundle
|
import org.jetbrains.kotlin.idea.KotlinBundle
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
|
import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.parents
|
import org.jetbrains.kotlin.psi.psiUtil.parents
|
||||||
import org.jetbrains.kotlin.renderer.DescriptorRenderer
|
import org.jetbrains.kotlin.renderer.DescriptorRenderer
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.isCompanionObject
|
import org.jetbrains.kotlin.resolve.descriptorUtil.isCompanionObject
|
||||||
@@ -54,7 +55,8 @@ object KotlinSliceUsageCellRenderer : SliceUsageCellRendererBase() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun containerSuffix(sliceUsage: SliceUsage): String? {
|
fun containerSuffix(sliceUsage: SliceUsage): String? {
|
||||||
val declaration = sliceUsage.element?.parents?.firstOrNull {
|
val element = sliceUsage.element ?: return null
|
||||||
|
var declaration = element.parents.firstOrNull {
|
||||||
it is KtClass ||
|
it is KtClass ||
|
||||||
it is KtObjectDeclaration && !it.isObjectLiteral() ||
|
it is KtObjectDeclaration && !it.isObjectLiteral() ||
|
||||||
it is KtNamedFunction && !it.isLocal ||
|
it is KtNamedFunction && !it.isLocal ||
|
||||||
@@ -62,6 +64,11 @@ object KotlinSliceUsageCellRenderer : SliceUsageCellRendererBase() {
|
|||||||
it is KtConstructor<*>
|
it is KtConstructor<*>
|
||||||
} as? KtDeclaration ?: return null
|
} as? KtDeclaration ?: return null
|
||||||
|
|
||||||
|
// for a val or var among primary constructor parameters show the class as container
|
||||||
|
if (declaration is KtPrimaryConstructor && element is KtParameter && element.hasValOrVar()) {
|
||||||
|
declaration = declaration.containingClassOrObject!!
|
||||||
|
}
|
||||||
|
|
||||||
return buildString {
|
return buildString {
|
||||||
append(KotlinBundle.message("slicer.text.in", ""))
|
append(KotlinBundle.message("slicer.text.in", ""))
|
||||||
append(" ")
|
append(" ")
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
9 class C : B(<bold>1</bold>) { (in C)
|
9 class C : B(<bold>1</bold>) { (in C)
|
||||||
15 val <bold>y = b.foo</bold> (in test(A, B, C))
|
15 val <bold>y = b.foo</bold> (in test(A, B, C))
|
||||||
15 val y = <bold>b.foo</bold> (in test(A, B, C))
|
15 val y = <bold>b.foo</bold> (in test(A, B, C))
|
||||||
7 open class B(override val <bold>foo: Int</bold>) : A() (in B(Int))
|
7 open class B(override val <bold>foo: Int</bold>) : A() (in B)
|
||||||
9 class C : B(<bold>1</bold>) { (in C)
|
9 class C : B(<bold>1</bold>) { (in C)
|
||||||
|
|
||||||
10 override val foo = <bold>3</bold> (in C.foo: Int)
|
10 override val foo = <bold>3</bold> (in C.foo: Int)
|
||||||
@@ -18,5 +18,5 @@
|
|||||||
3 super(<bold>10</bold>);
|
3 super(<bold>10</bold>);
|
||||||
15 val <bold>y = b.foo</bold> (in test(A, B, C))
|
15 val <bold>y = b.foo</bold> (in test(A, B, C))
|
||||||
15 val y = <bold>b.foo</bold> (in test(A, B, C))
|
15 val y = <bold>b.foo</bold> (in test(A, B, C))
|
||||||
7 open class B(override val <bold>foo: Int</bold>) : A() (in B(Int))
|
7 open class B(override val <bold>foo: Int</bold>) : A() (in B)
|
||||||
3 super(<bold>10</bold>);
|
3 super(<bold>10</bold>);
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
15 val <bold>y = b.foo</bold> (in test(A, B, C))
|
15 val <bold>y = b.foo</bold> (in test(A, B, C))
|
||||||
15 val y = <bold>b.foo</bold> (in test(A, B, C))
|
15 val y = <bold>b.foo</bold> (in test(A, B, C))
|
||||||
7 open class B(override val <bold>foo: Int</bold>) : A() (in B(Int))
|
7 open class B(override val <bold>foo: Int</bold>) : A() (in B)
|
||||||
3 super(<bold>10</bold>);
|
3 super(<bold>10</bold>);
|
||||||
9 class C : B(<bold>1</bold>) { (in C)
|
9 class C : B(<bold>1</bold>) { (in C)
|
||||||
7 return <bold>5</bold>;
|
7 return <bold>5</bold>;
|
||||||
|
|||||||
+4
-4
@@ -1,16 +1,16 @@
|
|||||||
2 D(int <bold>n</bold>) {
|
2 D(int <bold>n</bold>) {
|
||||||
3 open class A(val <bold>n: Int</bold>) (in A(Int))
|
3 open class A(val <bold>n: Int</bold>) (in A)
|
||||||
3 super(<bold>n</bold>);
|
3 super(<bold>n</bold>);
|
||||||
2 D(int <bold>n</bold>) {
|
2 D(int <bold>n</bold>) {
|
||||||
|
|
||||||
5 class B : A(<bold>1</bold>) (in B)
|
5 class B : A(<bold>1</bold>) (in B)
|
||||||
3 open class A(val <bold>n: Int</bold>) (in A(Int))
|
3 open class A(val <bold>n: Int</bold>) (in A)
|
||||||
5 class B : A(<bold>1</bold>) (in B)
|
5 class B : A(<bold>1</bold>) (in B)
|
||||||
|
|
||||||
8 val z = A(<bold>2</bold>).n (in test())
|
8 val z = A(<bold>2</bold>).n (in test())
|
||||||
3 open class A(val <bold>n: Int</bold>) (in A(Int))
|
3 open class A(val <bold>n: Int</bold>) (in A)
|
||||||
8 val z = A(<bold>2</bold>).n (in test())
|
8 val z = A(<bold>2</bold>).n (in test())
|
||||||
|
|
||||||
7 A a = new A(<bold>3</bold>);
|
7 A a = new A(<bold>3</bold>);
|
||||||
3 open class A(val <bold>n: Int</bold>) (in A(Int))
|
3 open class A(val <bold>n: Int</bold>) (in A)
|
||||||
7 A a = new A(<bold>3</bold>);
|
7 A a = new A(<bold>3</bold>);
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
[NotNull Values]
|
[NotNull Values]
|
||||||
3 open class A(val <bold>n: Int</bold>) (in A(Int))
|
3 open class A(val <bold>n: Int</bold>) (in A)
|
||||||
3 open class A(val <bold>n: Int</bold>) (in A(Int))
|
3 open class A(val <bold>n: Int</bold>) (in A)
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
3 open class A(val <bold>n: Int</bold>) (in A(Int))
|
3 open class A(val <bold>n: Int</bold>) (in A)
|
||||||
3 super(<bold>n</bold>);
|
3 super(<bold>n</bold>);
|
||||||
2 D(int <bold>n</bold>) {
|
2 D(int <bold>n</bold>) {
|
||||||
5 class B : A(<bold>1</bold>) (in B)
|
5 class B : A(<bold>1</bold>) (in B)
|
||||||
|
|||||||
+6
-6
@@ -1,24 +1,24 @@
|
|||||||
2 D(int <bold>n</bold>) {
|
2 D(int <bold>n</bold>) {
|
||||||
3 open class A(var <bold>n: Int</bold>) { (in A(Int))
|
3 open class A(var <bold>n: Int</bold>) { (in A)
|
||||||
3 super(<bold>n</bold>);
|
3 super(<bold>n</bold>);
|
||||||
2 D(int <bold>n</bold>) {
|
2 D(int <bold>n</bold>) {
|
||||||
|
|
||||||
20 class B : A(<bold>1</bold>) (in B)
|
20 class B : A(<bold>1</bold>) (in B)
|
||||||
3 open class A(var <bold>n: Int</bold>) { (in A(Int))
|
3 open class A(var <bold>n: Int</bold>) { (in A)
|
||||||
20 class B : A(<bold>1</bold>) (in B)
|
20 class B : A(<bold>1</bold>) (in B)
|
||||||
|
|
||||||
23 val z = A(<bold>2</bold>).n (in test())
|
23 val z = A(<bold>2</bold>).n (in test())
|
||||||
3 open class A(var <bold>n: Int</bold>) { (in A(Int))
|
3 open class A(var <bold>n: Int</bold>) { (in A)
|
||||||
23 val z = A(<bold>2</bold>).n (in test())
|
23 val z = A(<bold>2</bold>).n (in test())
|
||||||
|
|
||||||
24 A(<bold>3</bold>).n = 2 (in test())
|
24 A(<bold>3</bold>).n = 2 (in test())
|
||||||
3 open class A(var <bold>n: Int</bold>) { (in A(Int))
|
3 open class A(var <bold>n: Int</bold>) { (in A)
|
||||||
24 A(<bold>3</bold>).n = 2 (in test())
|
24 A(<bold>3</bold>).n = 2 (in test())
|
||||||
|
|
||||||
7 A a = new A(<bold>3</bold>);
|
7 A a = new A(<bold>3</bold>);
|
||||||
3 open class A(var <bold>n: Int</bold>) { (in A(Int))
|
3 open class A(var <bold>n: Int</bold>) { (in A)
|
||||||
7 A a = new A(<bold>3</bold>);
|
7 A a = new A(<bold>3</bold>);
|
||||||
|
|
||||||
9 a.setN(<bold>4</bold>);
|
9 a.setN(<bold>4</bold>);
|
||||||
3 open class A(var <bold>n: Int</bold>) { (in A(Int))
|
3 open class A(var <bold>n: Int</bold>) { (in A)
|
||||||
9 a.setN(<bold>4</bold>);
|
9 a.setN(<bold>4</bold>);
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
[NotNull Values]
|
[NotNull Values]
|
||||||
3 open class A(var <bold>n: Int</bold>) { (in A(Int))
|
3 open class A(var <bold>n: Int</bold>) { (in A)
|
||||||
3 open class A(var <bold>n: Int</bold>) { (in A(Int))
|
3 open class A(var <bold>n: Int</bold>) { (in A)
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
3 open class A(var <bold>n: Int</bold>) { (in A(Int))
|
3 open class A(var <bold>n: Int</bold>) { (in A)
|
||||||
3 super(<bold>n</bold>);
|
3 super(<bold>n</bold>);
|
||||||
2 D(int <bold>n</bold>) {
|
2 D(int <bold>n</bold>) {
|
||||||
7 A a = new A(<bold>3</bold>);
|
7 A a = new A(<bold>3</bold>);
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
3 class A(val <bold>n: Int</bold>) { (in A(Int))
|
3 class A(val <bold>n: Int</bold>) { (in A)
|
||||||
3 int n = new A(1).<bold>getN</bold>();
|
3 int n = new A(1).<bold>getN</bold>();
|
||||||
4 val x = <bold>n</bold> (in A.x: Int)
|
4 val x = <bold>n</bold> (in A.x: Int)
|
||||||
4 val <bold>x = n</bold> (in A)
|
4 val <bold>x = n</bold> (in A)
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
3 class A(var <bold>n: Int</bold>) { (in A(Int))
|
3 class A(var <bold>n: Int</bold>) { (in A)
|
||||||
3 int n = new A(1).<bold>getN</bold>();
|
3 int n = new A(1).<bold>getN</bold>();
|
||||||
4 val x = <bold>n</bold> (in A.x: Int)
|
4 val x = <bold>n</bold> (in A.x: Int)
|
||||||
4 val <bold>x = n</bold> (in A)
|
4 val <bold>x = n</bold> (in A)
|
||||||
|
|||||||
Reference in New Issue
Block a user