Add fast find usages for data class components

This commit add feature for disabling searching for data class ComponentN method and destruction declarations that could encrease usages search.
See KT-23278
This commit is contained in:
Igor Yakovlev
2019-11-05 21:02:25 +03:00
parent 6d9c00addd
commit 1ccda6a8d4
47 changed files with 687 additions and 32 deletions
@@ -0,0 +1,7 @@
Resolved java class to descriptor: JavaSAM
Searched references to JavaClass.takeSAM(JavaSAM sam) in non-Java files
Searched references to JavaSAM in non-Kotlin files
Searched references to pack.A
Used plain search of parameter a of A(val a: Int, val b: String) in LocalSearchScope:
CLASS:A
{ val (x, y) = it }
@@ -0,0 +1,3 @@
Searched references to A
Used plain search of parameter x of A(val x: Int, val y: Int) in LocalSearchScope:
CLASS:A
@@ -0,0 +1,10 @@
Checked type of f()
Checked type of x
Checked type of y
Resolved (x, y)
Searched references to X
Searched references to f() in non-Java files
Used plain search of component1() in LocalSearchScope:
CLASS:X
FUN:component1
FUN:component2
@@ -0,0 +1 @@
Value read 12 val (x, y) = f()
@@ -0,0 +1,13 @@
Checked type of f()
Checked type of g()
Checked type of x1
Checked type of y1
Resolved (x1, y1)
Searched references to X
Searched references to f() in non-Java files
Used plain search of component1() in LocalSearchScope:
CLASS:X
FUN:component1
FUN:component1
FUN:component2
FUN:component2
@@ -0,0 +1 @@
Value read 16 val (x1, y1) = f()
@@ -0,0 +1,62 @@
Checked type of a
Checked type of g()
Checked type of h()
Checked type of listOfA()
Checked type of listOfA()
Checked type of x
Checked type of x1
Checked type of x1
Checked type of x2
Checked type of x2
Checked type of x3
Checked type of x3
Checked type of x3
Checked type of x4
Checked type of x5
Checked type of y
Checked type of y1
Checked type of y1
Checked type of y2
Checked type of y2
Checked type of y3
Checked type of y3
Checked type of y3
Checked type of y4
Checked type of y5
Checked type of z
Checked type of z1
Checked type of z2
Checked type of z3
Checked type of z4
Checked type of z5
Resolved (x, y, z)
Resolved (x1, y1)
Resolved (x1, y1, z1)
Resolved (x2, y2)
Resolved (x2, y2, z2)
Resolved (x3, y3)
Resolved (x3, y3)
Resolved (x3, y3, z3)
Resolved (x4, y4, z4)
Resolved (x5, y5, z5)
Searched references to JavaClass.getA() in non-Java files
Searched references to JavaClass2
Searched references to JavaClass3
Searched references to JavaClass4.NestedPrivate
Searched references to JavaClass4.NestedPublic
Searched references to a in non-Java files
Searched references to f() in non-Java files
Searched references to g() in non-Java files
Searched references to h() in non-Java files
Searched references to listOfA() in non-Java files
Searched references to pack.A
Searched references to pack.X
Searched references to parameter p1 of test2(p1: JavaClass2, p2: JavaClass3) in non-Java files
Searched references to parameter p2 of test2(p1: JavaClass2, p2: JavaClass3) in non-Java files
Searched references to static getNested in non-Java files by request JavaClass4.*
Searched references to static getNested in non-Java files by request JavaClass4.getNested
Used plain search of parameter n of A(val n: Int, val s: String, val o: Any) in LocalSearchScope:
CLASS:A
CLASS:X
FUN:ext1
FUN:ext1
@@ -0,0 +1 @@
Value read 5 a.n
@@ -0,0 +1,9 @@
Checked type of a
Checked type of x
Checked type of y
Checked type of z
Resolved (x, y, z)
Searched references to A
Searched references to a in non-Java files
Used plain search of parameter n of A(val n: Int, val s: String, val o: Any) in LocalSearchScope:
CLASS:A
@@ -0,0 +1 @@
Used plain search of kotlin.Pair.component1() in whole search scope
@@ -0,0 +1,3 @@
Function call 6 p.component1()
Value read 11 val (x, y) = 1 to "a"
Value read 7 val (x, y) = p
@@ -0,0 +1,29 @@
Checked type of a
Checked type of a1
Checked type of n
Checked type of n1
Checked type of x
Checked type of x1
Checked type of y
Checked type of y1
Checked type of z
Checked type of z1
Resolved (a, n)
Resolved (a1, n1)
Resolved (x, y, z)
Resolved (x1, y1, z1)
Searched references to A
Searched references to B
Searched references to C
Searched references to C.component1() in non-Java files
Searched references to a in non-Java files
Searched references to a1 in non-Java files
Searched references to parameter a of B(val a: A, val n: Int) in non-Java files
Searched references to parameter b of f(b: B, c: C) in non-Java files
Searched references to parameter c of f(b: B, c: C) in non-Java files
Used plain search of C.component1() in LocalSearchScope:
CLASS:C
Used plain search of parameter a of B(val a: A, val n: Int) in LocalSearchScope:
CLASS:B
Used plain search of parameter x of A(val x: Int, val y: Int, val z: String) in LocalSearchScope:
CLASS:A
@@ -0,0 +1 @@
Value read 14 val (x, y, z) = a
@@ -0,0 +1,25 @@
Checked type of f()
Checked type of x
Checked type of x1
Checked type of x2
Checked type of y
Checked type of y1
Checked type of y2
Resolved (x, y)
Resolved (x1, y1)
Resolved (x2, y2)
Searched references to X
Searched references to Y
Searched references to Z1
Searched references to Z2
Searched references to f() in non-Java files
Searched references to parameter z1 of g(z1: Z1, z2: Z2) in non-Java files
Searched references to parameter z2 of g(z1: Z1, z2: Z2) in non-Java files
Used plain search of component2() in LocalSearchScope:
CLASS:X
CLASS:Y
CLASS:Z1
CLASS:Z2
FUN:component1
FUN:component2
FUN:ext
@@ -0,0 +1,4 @@
Value read 21 val (x, y) = f()
Value read 25 val (a, b) = this
Value read 29 val (x1, y1) = z1[0]
Value read 30 val (x2, y2) = z2.get()
@@ -0,0 +1,12 @@
Checked type of parameter a of FOR
Checked type of x
Checked type of x
Checked type of y
Checked type of y
Checked type of z
Resolved (x, y)
Resolved (x, y, z)
Searched references to A
Searched references to parameter a of FOR in non-Java files
Used plain search of parameter n of A(val n: Int, val s: String, val o: Any) in LocalSearchScope:
CLASS:A
@@ -0,0 +1,12 @@
Checked type of list
Checked type of x
Checked type of x1
Checked type of y
Checked type of y1
Resolved (x, y)
Resolved (x1, y1)
Searched references to A
Searched references to list in non-Java files
Used plain search of parameter x of A(val x: Int, val y: Int) in LocalSearchScope:
CLASS:A
FUN:x
@@ -0,0 +1,2 @@
Value read 15 val (x, y) = list[0]
Value read 8 val (x, y) = o
@@ -0,0 +1,23 @@
Searched references to A
Searched references to parameter p of foo(p: A) in non-Java files
Searched references to parameter p of takeExtFun(p: A.() -> Unit) in non-Java files
Searched references to parameter p of takeFun1(p: (A) -> Unit) in non-Java files
Searched references to parameter p of takeFun2(p: ((A?, Int) -> Unit)?) in non-Java files
Searched references to parameter p of takeFun3(p: (List<A>) -> Unit) in non-Java files
Searched references to parameter p of takeFuns(p: MutableList<(A) -> Unit>) in non-Java files
Searched references to takeExtFun(p: A.() -> Unit) in non-Java files
Searched references to takeFun1(p: (A) -> Unit) in non-Java files
Searched references to takeFun2(p: ((A?, Int) -> Unit)?) in non-Java files
Searched references to takeFun3(p: (List<A>) -> Unit) in non-Java files
Searched references to takeFuns(p: MutableList<(A) -> Unit>) in non-Java files
Searched references to v in non-Java files
Used plain search of parameter a of A(val a: Int, val b: Int) in LocalSearchScope:
CLASS:A
FUN:null
{ a, n -> val (x, y) = a!! }
{ val (x, y ) = it }
{ val (x, y) = it }
{ val (x, y) = it }
{ val (x, y) = it }
{ val (x, y) = it[0] }
{ val (x, y) = this }
@@ -0,0 +1 @@
Value read 28 takeFun2 { a, n -> val (x, y) = a!! }
@@ -0,0 +1,13 @@
Checked type of x1
Checked type of y1
Checked type of y1(a: A)
Resolved (x1, y1)
Searched references to A
Searched references to parameter a of condition(a: A) in non-Java files
Searched references to parameter a of x(a: A, b: Boolean, list: List<Int>) in non-Java files
Searched references to parameter a of y1(a: A) in non-Java files
Searched references to parameter a of y2(a: A) in non-Java files
Searched references to parameter a of y3(a: A) in non-Java files
Used plain search of parameter n of A(val n: Int, val s: String) in LocalSearchScope:
CLASS:A
{ val (x2, y2) = this }
@@ -0,0 +1,22 @@
Checked type of f()
Checked type of g()
Checked type of h()
Checked type of x
Checked type of x1
Checked type of x2
Checked type of y
Checked type of y1
Checked type of y2
Resolved (x, y)
Resolved (x1, y1)
Resolved (x2, y2)
Searched references to X
Searched references to Y
Searched references to Z
Searched references to f() in non-Java files
Searched references to g() in non-Java files
Searched references to h() in non-Java files
Used plain search of X.component1() in LocalSearchScope:
CLASS:X
CLASS:Y
CLASS:Z
@@ -0,0 +1,5 @@
Value read 17 val (x, y) = this
Value read 26 val (x, y) = f()
Value read 27 val (x1, y1) = g()
Value read 28 val (x2, y2) = h()
Value read 9 val (x, y) = this
@@ -0,0 +1,19 @@
Checked type of x
Checked type of x
Checked type of x
Checked type of y
Checked type of y
Checked type of y
Resolved (x, y)
Resolved b1 + b2
Searched references to A
Searched references to B
Searched references to parameter b1 of f(b1: B, b2: B) in non-Java files
Searched references to parameter b2 of f(b1: B, b2: B) in non-Java files
Searched references to parameter other of plus(other: B) in non-Java files
Searched references to plus(other: B) in non-Java files
Used plain search of parameter x of A(val x: Int, val y: Int) in LocalSearchScope:
CLASS:A
Used plain search of plus(other: B) in LocalSearchScope:
CLASS:B
FUN:plus
@@ -0,0 +1,2 @@
Value read 15 val (x, y) = b1 + b2
Value read 6 val (x, y) = this
@@ -0,0 +1,15 @@
Checked type of a1
Checked type of a2
Checked type of a2
Checked type of n1
Checked type of n2
Checked type of n2
ExpressionOfTypeProcessor is already started for A. Exit for operator parameter a of A(val a: A?, val n: Int).
Resolved (a1, n1)
Resolved (a2, n2)
Resolved (a2, n2)
Searched references to A
Searched references to parameter a of A(val a: A?, val n: Int) in non-Java files
Searched references to parameter a of f(a: A) in non-Java files
Used plain search of parameter a of A(val a: A?, val n: Int) in LocalSearchScope:
CLASS:A
@@ -0,0 +1,3 @@
Value read 7 val (a1, n1) = a
Value read 8 val (a2, n2) =
Value read 9 a?.a ?: return
@@ -0,0 +1,18 @@
Checked type of a1
Checked type of b
Checked type of n
Checked type of s
ExpressionOfTypeProcessor is already started for A. Exit for operator parameter b of A(val b: B, val n: Int).
Resolved (a1, s)
Resolved (b, n)
Searched references to A
Searched references to B
Searched references to a1 in non-Java files
Searched references to b in non-Java files
Searched references to parameter a of B(val a: A?, val s: String) in non-Java files
Searched references to parameter a of f(a: A) in non-Java files
Searched references to parameter b of A(val b: B, val n: Int) in non-Java files
Used plain search of parameter a of B(val a: A?, val s: String) in LocalSearchScope:
CLASS:B
Used plain search of parameter b of A(val b: B, val n: Int) in LocalSearchScope:
CLASS:A
@@ -0,0 +1 @@
Value read 8 val (b, n) = a
@@ -0,0 +1,5 @@
Searched references to A
Used plain search of parameter a of A(val a: Int, val b: Int) in LocalSearchScope:
CLASS:A
KtWhenEntry "else"
KtWhenEntry "is A"