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;
|
if (destructuringVariables == null) continue;
|
||||||
|
|
||||||
for (VariableDescriptor entry : destructuringVariables) {
|
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);
|
mv.visitLocalVariable(entry.getName().asString(), type.getDescriptor(), null, methodBegin, methodEnd, shift);
|
||||||
shift += type.getSize();
|
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 foo(a: A, block: (A) -> String): String = block(a)
|
||||||
|
|
||||||
fun box() {
|
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;
|
// METHOD : DestructuringInLambdasKt$box$1.invoke(LA;)Ljava/lang/String;
|
||||||
// VARIABLE : NAME=this TYPE=LDestructuringInLambdasKt$box$1; INDEX=0
|
// VARIABLE : NAME=this TYPE=LDestructuringInLambdasKt$box$1; INDEX=0
|
||||||
// VARIABLE : NAME=$x_y TYPE=LA; INDEX=1
|
// VARIABLE : NAME=$x_y TYPE=LA; INDEX=1
|
||||||
// VARIABLE : NAME=x TYPE=LA; INDEX=2
|
// VARIABLE : NAME=x TYPE=Ljava/lang/String; INDEX=2
|
||||||
// VARIABLE : NAME=y TYPE=LA; INDEX=3
|
// 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!)
|
field = value: char[] = {char[1]@uniqueID} (sp = String.!EXT!)
|
||||||
element = 0 = 'K' 75
|
element = 0 = 'K' 75
|
||||||
field = hash: int = 0 (sp = String.!EXT!)
|
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!)
|
field = value: char[] = {char[1]@uniqueID} (sp = String.!EXT!)
|
||||||
element = 0 = 'O' 79
|
element = 0 = 'O' 79
|
||||||
field = hash: int = 0 (sp = String.!EXT!)
|
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!)
|
field = value: char[] = {char[1]@uniqueID} (sp = String.!EXT!)
|
||||||
element = 0 = 'K' 75
|
element = 0 = 'K' 75
|
||||||
field = hash: int = 0 (sp = String.!EXT!)
|
field = hash: int = 0 (sp = String.!EXT!)
|
||||||
|
|||||||
Reference in New Issue
Block a user