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.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject
|
||||
import org.jetbrains.kotlin.psi.psiUtil.parents
|
||||
import org.jetbrains.kotlin.renderer.DescriptorRenderer
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.isCompanionObject
|
||||
@@ -54,7 +55,8 @@ object KotlinSliceUsageCellRenderer : SliceUsageCellRendererBase() {
|
||||
}
|
||||
|
||||
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 KtObjectDeclaration && !it.isObjectLiteral() ||
|
||||
it is KtNamedFunction && !it.isLocal ||
|
||||
@@ -62,6 +64,11 @@ object KotlinSliceUsageCellRenderer : SliceUsageCellRendererBase() {
|
||||
it is KtConstructor<*>
|
||||
} 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 {
|
||||
append(KotlinBundle.message("slicer.text.in", ""))
|
||||
append(" ")
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
9 class C : B(<bold>1</bold>) { (in 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))
|
||||
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)
|
||||
|
||||
10 override val foo = <bold>3</bold> (in C.foo: Int)
|
||||
@@ -18,5 +18,5 @@
|
||||
3 super(<bold>10</bold>);
|
||||
15 val <bold>y = 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>);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
15 val <bold>y = 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>);
|
||||
9 class C : B(<bold>1</bold>) { (in C)
|
||||
7 return <bold>5</bold>;
|
||||
|
||||
+4
-4
@@ -1,16 +1,16 @@
|
||||
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>);
|
||||
2 D(int <bold>n</bold>) {
|
||||
|
||||
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)
|
||||
|
||||
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())
|
||||
|
||||
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>);
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
[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(Int))
|
||||
3 open class A(val <bold>n: Int</bold>) (in A)
|
||||
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>);
|
||||
2 D(int <bold>n</bold>) {
|
||||
5 class B : A(<bold>1</bold>) (in B)
|
||||
|
||||
+6
-6
@@ -1,24 +1,24 @@
|
||||
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>);
|
||||
2 D(int <bold>n</bold>) {
|
||||
|
||||
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)
|
||||
|
||||
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())
|
||||
|
||||
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())
|
||||
|
||||
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>);
|
||||
|
||||
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>);
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
[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(Int))
|
||||
3 open class A(var <bold>n: Int</bold>) { (in A)
|
||||
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>);
|
||||
2 D(int <bold>n</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>();
|
||||
4 val x = <bold>n</bold> (in A.x: Int)
|
||||
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>();
|
||||
4 val x = <bold>n</bold> (in A.x: Int)
|
||||
4 val <bold>x = n</bold> (in A)
|
||||
|
||||
Reference in New Issue
Block a user