EA-211010: Fix receiver parameter name for lambdas passed as value arguments

This commit is contained in:
Yan Zhulanow
2020-01-15 18:15:20 +09:00
parent b1414fa477
commit dc71ab5bb3
4 changed files with 72 additions and 3 deletions
@@ -0,0 +1,28 @@
package lambdaAsValueArgument
fun main() {
contactMapper.toString()
}
object MyContext
data class User(val firstName: String, val lastName: String, val age: Int)
fun foo(block: User.(User) -> Unit) {
val item = User("a", "b", 10)
item.block(item)
}
val contactMapper = MyContext.run {
foo({ i ->
//Breakpoint!
this.copy(
firstName = "Foo",
lastName = "Bar",
age = 100
)
})
}
// PRINT_FRAME
// SHOW_KOTLIN_VARIABLES
@@ -0,0 +1,28 @@
LineBreakpoint created at lambdaAsValueArgument.kt:19
Run Java
Connected to the target VM
lambdaAsValueArgument.kt:19
frame = invoke:19, LambdaAsValueArgumentKt$contactMapper$1$1 {lambdaAsValueArgument}
local = this: lambdaAsValueArgument.User = {lambdaAsValueArgument.User@uniqueID}User(firstName=a, lastName=b, age=10) (sp = null)
field = firstName: java.lang.String = a (sp = lambdaAsValueArgument.kt, 9)
field = value: char[] = {char[1]@uniqueID} (sp = String.!EXT!)
element = 0 = 'a' 97
field = hash: int = 0 (sp = String.!EXT!)
field = lastName: java.lang.String = b (sp = lambdaAsValueArgument.kt, 9)
field = value: char[] = {char[1]@uniqueID} (sp = String.!EXT!)
element = 0 = 'b' 98
field = hash: int = 0 (sp = String.!EXT!)
field = age: int = 10 (sp = lambdaAsValueArgument.kt, 9)
local = i: lambdaAsValueArgument.User = {lambdaAsValueArgument.User@uniqueID}User(firstName=a, lastName=b, age=10) (sp = lambdaAsValueArgument.kt, 17)
field = firstName: java.lang.String = a (sp = lambdaAsValueArgument.kt, 9)
field = value: char[] = {char[1]@uniqueID} (sp = String.!EXT!)
element = 0 = 'a' 97
field = hash: int = 0 (sp = String.!EXT!)
field = lastName: java.lang.String = b (sp = lambdaAsValueArgument.kt, 9)
field = value: char[] = {char[1]@uniqueID} (sp = String.!EXT!)
element = 0 = 'b' 98
field = hash: int = 0 (sp = String.!EXT!)
field = age: int = 10 (sp = lambdaAsValueArgument.kt, 9)
Disconnected from the target VM
Process finished with exit code 0