Handling of 2 more class of cases:
1. Function has parameter of functional type with our data class inside 2. Value of data class type used in a call with lambda
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
package pack4
|
||||
|
||||
import pack.A
|
||||
|
||||
fun takeExtFun(p: A.() -> Unit) {
|
||||
}
|
||||
|
||||
fun takeFun1(p: (A) -> Unit) {
|
||||
}
|
||||
|
||||
fun takeFun2(p: ((A?, Int) -> Unit)?) {
|
||||
}
|
||||
|
||||
fun takeFun3(p: (List<A>) -> Unit) {
|
||||
}
|
||||
|
||||
fun takeFuns(p: MutableList<(A) -> Unit>) {
|
||||
p[0] = { val (x, y) = it }
|
||||
}
|
||||
|
||||
fun <T> x(p1: T, p2: (T) -> Unit){}
|
||||
|
||||
fun foo(p: A) {
|
||||
takeExtFun { val (x, y) = this }
|
||||
|
||||
takeFun1 { val (x, y) = it }
|
||||
takeFun2 { a, n -> val (x, y) = a!! }
|
||||
takeFun3 { val (x, y) = it[0] }
|
||||
|
||||
x(p) { val (x, y) = it }
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package pack5
|
||||
|
||||
import pack.A
|
||||
|
||||
var Any.v: (A) -> Unit
|
||||
get() = TODO()
|
||||
set(value) = TODO()
|
||||
|
||||
fun f() {
|
||||
"".v = { val (x, y ) = it }
|
||||
}
|
||||
+8
-1
@@ -15,4 +15,11 @@
|
||||
[dataClass.2.kt] Value read 8 val (x, y, z) = a
|
||||
[dataClass.2.kt] Value read 9 val (x1, y1, z1) = f()
|
||||
[dataClass.3.kt] Value read 12 val (x, y, z) = a
|
||||
[dataClass.3.kt] Value read 15 val (x1, y1, z1) = a1
|
||||
[dataClass.3.kt] Value read 15 val (x1, y1, z1) = a1
|
||||
[dataClass.4.kt] Value read 18 p[0] = { val (x, y) = it }
|
||||
[dataClass.4.kt] Value read 24 takeExtFun { val (x, y) = this }
|
||||
[dataClass.4.kt] Value read 26 takeFun1 { val (x, y) = it }
|
||||
[dataClass.4.kt] Value read 27 takeFun2 { a, n -> val (x, y) = a!! }
|
||||
[dataClass.4.kt] Value read 28 takeFun3 { val (x, y) = it[0] }
|
||||
[dataClass.4.kt] Value read 30 x(p) { val (x, y) = it }
|
||||
[dataClass.5.kt] Value read 10 "".v = { val (x, y ) = it }
|
||||
Reference in New Issue
Block a user