Fix types in local var table for destructured variables
This commit is contained in:
@@ -504,7 +504,7 @@ public class FunctionCodegen {
|
||||
if (destructuringVariables == null) continue;
|
||||
|
||||
for (VariableDescriptor entry : destructuringVariables) {
|
||||
Type type = typeMapper.mapType(parameter.getType());
|
||||
Type type = typeMapper.mapType(entry.getType());
|
||||
mv.visitLocalVariable(entry.getName().asString(), type.getDescriptor(), null, methodBegin, methodEnd, shift);
|
||||
shift += type.getSize();
|
||||
}
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
data class A(val x: String, val y: String)
|
||||
data class A(val x: String, val y: Int)
|
||||
|
||||
fun foo(a: A, block: (A) -> String): String = block(a)
|
||||
|
||||
fun box() {
|
||||
foo(A("O", "K")) { (x, y) -> x + y }
|
||||
foo(A("O", 123)) { (x, y) -> x + y }
|
||||
}
|
||||
|
||||
// METHOD : DestructuringInLambdasKt$box$1.invoke(LA;)Ljava/lang/String;
|
||||
// VARIABLE : NAME=this TYPE=LDestructuringInLambdasKt$box$1; INDEX=0
|
||||
// VARIABLE : NAME=$x_y TYPE=LA; INDEX=1
|
||||
// VARIABLE : NAME=x TYPE=LA; INDEX=2
|
||||
// VARIABLE : NAME=y TYPE=LA; INDEX=3
|
||||
// VARIABLE : NAME=x TYPE=Ljava/lang/String; INDEX=2
|
||||
// VARIABLE : NAME=y TYPE=I INDEX=3
|
||||
|
||||
@@ -38,11 +38,11 @@ fun main(args: Array<String>) {
|
||||
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)
|
||||
local = x: java.lang.String = 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)
|
||||
local = y: java.lang.String = 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!)
|
||||
|
||||
Reference in New Issue
Block a user