Add support for desctructuring of lambda parameters in JVM backend
#KT-5828 In Progress
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
LineBreakpoint created at destructuringParam.kt:12 lambdaOrdinal = 1
|
||||
!JDK_HOME!\bin\java -agentlib:jdwp=transport=dt_socket,address=!HOST_NAME!:!HOST_PORT!,suspend=y,server=n -Dfile.encoding=!FILE_ENCODING! -classpath !OUTPUT_PATH!;!KOTLIN_RUNTIME!;!CUSTOM_LIBRARY!;!RT_JAR! destructuringParam.DestructuringParamKt
|
||||
Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
|
||||
destructuringParam.kt:12
|
||||
Compile bytecode for x
|
||||
Compile bytecode for y
|
||||
package destructuringParam
|
||||
data class A(val x: String, val y: String)
|
||||
|
||||
fun foo(a: A, block: (A) -> String): String = block(a)
|
||||
|
||||
fun box() {
|
||||
|
||||
}
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
//Breakpoint! (lambdaOrdinal = 1)
|
||||
foo(A("O", "K")) { (x, y) -> x + y }
|
||||
}
|
||||
|
||||
// PRINT_FRAME
|
||||
|
||||
// EXPRESSION: x
|
||||
// RESULT: "O": Ljava/lang/String;
|
||||
|
||||
// EXPRESSION: y
|
||||
// RESULT: "K": Ljava/lang/String;
|
||||
|
||||
frame = invoke:12, DestructuringParamKt$main$1 {destructuringParam}
|
||||
this = this = {destructuringParam.DestructuringParamKt$main$1@uniqueID}Function1<destructuringParam.A, java.lang.String>
|
||||
field = arity: int = 1 (sp = Lambda.!EXT!)
|
||||
local = $x_y: destructuringParam.A = {destructuringParam.A@uniqueID}A(x=O, y=K) (sp = null)
|
||||
field = x: java.lang.String = O (sp = destructuringParam.kt, 2)
|
||||
field = value: char[] = {char[1]@uniqueID} (sp = String.!EXT!)
|
||||
element = 0 = 'O' 79
|
||||
field = hash: int = 0 (sp = String.!EXT!)
|
||||
field = y: java.lang.String = K (sp = destructuringParam.kt, 2)
|
||||
field = value: char[] = {char[1]@uniqueID} (sp = String.!EXT!)
|
||||
element = 0 = 'K' 75
|
||||
field = hash: int = 0 (sp = String.!EXT!)
|
||||
local = x: destructuringParam.A = O (sp = destructuringParam.kt, 12)
|
||||
field = value: char[] = {char[1]@uniqueID} (sp = String.!EXT!)
|
||||
element = 0 = 'O' 79
|
||||
field = hash: int = 0 (sp = String.!EXT!)
|
||||
local = y: destructuringParam.A = K (sp = destructuringParam.kt, 12)
|
||||
field = value: char[] = {char[1]@uniqueID} (sp = String.!EXT!)
|
||||
element = 0 = 'K' 75
|
||||
field = hash: int = 0 (sp = String.!EXT!)
|
||||
Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
|
||||
|
||||
Process finished with exit code 0
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
package destructuringParam
|
||||
data class A(val x: String, val y: String)
|
||||
|
||||
fun foo(a: A, block: (A) -> String): String = block(a)
|
||||
|
||||
fun box() {
|
||||
|
||||
}
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
//Breakpoint! (lambdaOrdinal = 1)
|
||||
foo(A("O", "K")) { (x, y) -> x + y }
|
||||
}
|
||||
|
||||
// PRINT_FRAME
|
||||
|
||||
// EXPRESSION: x
|
||||
// RESULT: "O": Ljava/lang/String;
|
||||
|
||||
// EXPRESSION: y
|
||||
// RESULT: "K": Ljava/lang/String;
|
||||
Reference in New Issue
Block a user