From 42e85b07c9e370672b4bf0ab2765728260a8cd37 Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Tue, 20 Sep 2016 10:36:57 +0300 Subject: [PATCH] Fix types in local var table for destructured variables --- .../src/org/jetbrains/kotlin/codegen/FunctionCodegen.java | 2 +- .../checkLocalVariablesTable/destructuringInLambdas.kt | 8 ++++---- .../testData/debugger/tinyApp/outs/destructuringParam.out | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/FunctionCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/FunctionCodegen.java index 675358a5d90..8ba0bd83dc1 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/FunctionCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/FunctionCodegen.java @@ -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(); } diff --git a/compiler/testData/checkLocalVariablesTable/destructuringInLambdas.kt b/compiler/testData/checkLocalVariablesTable/destructuringInLambdas.kt index 779e4e522ca..51d840b3f1b 100644 --- a/compiler/testData/checkLocalVariablesTable/destructuringInLambdas.kt +++ b/compiler/testData/checkLocalVariablesTable/destructuringInLambdas.kt @@ -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 diff --git a/idea/testData/debugger/tinyApp/outs/destructuringParam.out b/idea/testData/debugger/tinyApp/outs/destructuringParam.out index c67aad5679a..4cd711ee8b7 100644 --- a/idea/testData/debugger/tinyApp/outs/destructuringParam.out +++ b/idea/testData/debugger/tinyApp/outs/destructuringParam.out @@ -38,11 +38,11 @@ fun main(args: Array) { 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!)