From 8b566fda764a5a33ae32cdf03f496916dbe3d3a2 Mon Sep 17 00:00:00 2001 From: Mads Ager Date: Tue, 12 Mar 2019 10:51:33 +0100 Subject: [PATCH] JVM_IR: Perform asm type conversion for string concat arguments. This ensures that the Unit instance is loaded when string concatenation contains a sub part that is a call of a Unit return-type method. --- .../jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt | 2 +- compiler/testData/codegen/box/dataClasses/unitComponent.kt | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt index 2b0f2f49328..a5046e84937 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt @@ -892,7 +892,7 @@ class ExpressionCodegen( // Use StringBuilder to concatenate. AsmUtil.genStringBuilderConstructor(mv) expression.arguments.forEach { - val stackValue = gen(it, data) + val stackValue = gen(it, it.asmType, data) AsmUtil.genInvokeAppendMethod(mv, stackValue.type, stackValue.kotlinType) } mv.invokevirtual("java/lang/StringBuilder", "toString", "()Ljava/lang/String;", false) diff --git a/compiler/testData/codegen/box/dataClasses/unitComponent.kt b/compiler/testData/codegen/box/dataClasses/unitComponent.kt index cb8a59a0da3..b70b461ab91 100644 --- a/compiler/testData/codegen/box/dataClasses/unitComponent.kt +++ b/compiler/testData/codegen/box/dataClasses/unitComponent.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR data class A(val x: Unit) fun box(): String {