// WITH_STDLIB data class Data(val x: String, val y: Int, val z: Int = 0) suspend fun test() { foo(Data("A", 1)) { str, (x, _, z), i -> println(str + x + z + i + this) } } suspend fun foo(data: Data, body: suspend Long.(String, Data, Int) -> Unit) { 1L.body("OK", data, 1) } // The JVM and IR backend differ in naming scheme of captured receiver paramters in suspend lambdas // METHOD : ParametersKt$test$2.invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; // JVM_TEMPLATES // VARIABLE : NAME=$this$foo TYPE=J INDEX=2 // VARIABLE : NAME=str TYPE=Ljava/lang/String; INDEX=4 // VARIABLE : NAME=$dstr$x$_u24__u24$z TYPE=LData; INDEX=5 // VARIABLE : NAME=i TYPE=I INDEX=6 // VARIABLE : NAME=x TYPE=Ljava/lang/String; INDEX=7 // VARIABLE : NAME=z TYPE=I INDEX=8 // VARIABLE : NAME=this TYPE=LParametersKt$test$2; INDEX=0 // VARIABLE : NAME=$result TYPE=Ljava/lang/Object; INDEX=1 // JVM_IR_TEMPLATES // VARIABLE : NAME=$result TYPE=Ljava/lang/Object; INDEX=* // VARIABLE : NAME=$this$foo TYPE=J INDEX=* // VARIABLE : NAME=i TYPE=I INDEX=* // VARIABLE : NAME=str TYPE=Ljava/lang/String; INDEX=* // VARIABLE : NAME=this TYPE=LParametersKt$test$2; INDEX=* // VARIABLE : NAME=x TYPE=Ljava/lang/String; INDEX=* // VARIABLE : NAME=z TYPE=I INDEX=*