diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java index 630bc69088a..f7da1f38c34 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java @@ -3870,7 +3870,7 @@ public class ExpressionCodegen extends KtVisitor impleme gen(expr, exprType, exprKotlinType); } - genInvokeAppendMethod(v, exprType.getSort() == Type.ARRAY ? OBJECT_TYPE : exprType, exprKotlinType); + genInvokeAppendMethod(v, exprType, exprKotlinType); } @Nullable diff --git a/compiler/testData/codegen/box/inlineClasses/kt27113.kt b/compiler/testData/codegen/box/inlineClasses/kt27113.kt new file mode 100644 index 00000000000..25ed0cf2a42 --- /dev/null +++ b/compiler/testData/codegen/box/inlineClasses/kt27113.kt @@ -0,0 +1,19 @@ +// !LANGUAGE: +InlineClasses +// IGNORE_BACKEND: JS, JS_IR, JVM_IR +// WITH_RUNTIME + +class CharacterLiteral(private val prefix: NamelessString, private val s: NamelessString) { + override fun toString(): String = "$prefix'$s'" +} + +inline class NamelessString(val b: ByteArray) { + override fun toString(): String = String(b) +} + +fun box(): String { + val ns1 = NamelessString("abc".toByteArray()) + val ns2 = NamelessString("def".toByteArray()) + val cl = CharacterLiteral(ns1, ns2) + if (cl.toString() != "abc'def'") return throw AssertionError(cl.toString()) + return "OK" +} \ No newline at end of file diff --git a/compiler/testData/codegen/box/inlineClasses/kt27113a.kt b/compiler/testData/codegen/box/inlineClasses/kt27113a.kt new file mode 100644 index 00000000000..cdee9cc1d3e --- /dev/null +++ b/compiler/testData/codegen/box/inlineClasses/kt27113a.kt @@ -0,0 +1,15 @@ +// !LANGUAGE: +InlineClasses +// IGNORE_BACKEND: JVM_IR +// WITH_RUNTIME + +inline class A(val a: Any) + +inline class NA(val b: Any?) + +fun box(): String { + val ns1 = NA(A("abc")) + val ns2 = NA(null) + val t = "-$ns1-$ns2-" + if (t != "-NA(b=A(a=abc))-NA(b=null)-") return throw AssertionError(t) + return "OK" +} \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java index fcfd2bb0762..743dc5ce465 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java @@ -11859,6 +11859,16 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/inlineClasses/kt27096_reference.kt"); } + @TestMetadata("kt27113.kt") + public void testKt27113() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/kt27113.kt"); + } + + @TestMetadata("kt27113a.kt") + public void testKt27113a() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/kt27113a.kt"); + } + @TestMetadata("kt27132.kt") public void testKt27132() throws Exception { runTest("compiler/testData/codegen/box/inlineClasses/kt27132.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index 1abe1f582ad..21c5e15fc8b 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -11859,6 +11859,16 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/inlineClasses/kt27096_reference.kt"); } + @TestMetadata("kt27113.kt") + public void testKt27113() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/kt27113.kt"); + } + + @TestMetadata("kt27113a.kt") + public void testKt27113a() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/kt27113a.kt"); + } + @TestMetadata("kt27132.kt") public void testKt27132() throws Exception { runTest("compiler/testData/codegen/box/inlineClasses/kt27132.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java index c1515b54811..8f3baf569b9 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java @@ -11864,6 +11864,16 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/inlineClasses/kt27096_reference.kt"); } + @TestMetadata("kt27113.kt") + public void testKt27113() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/kt27113.kt"); + } + + @TestMetadata("kt27113a.kt") + public void testKt27113a() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/kt27113a.kt"); + } + @TestMetadata("kt27132.kt") public void testKt27132() throws Exception { runTest("compiler/testData/codegen/box/inlineClasses/kt27132.kt"); diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/IrJsCodegenBoxTestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/IrJsCodegenBoxTestGenerated.java index 98aa1d8615f..739eabe29f6 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/IrJsCodegenBoxTestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/IrJsCodegenBoxTestGenerated.java @@ -10399,6 +10399,16 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest { runTest("compiler/testData/codegen/box/inlineClasses/kt27096_reference.kt"); } + @TestMetadata("kt27113.kt") + public void testKt27113() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/kt27113.kt"); + } + + @TestMetadata("kt27113a.kt") + public void testKt27113a() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/kt27113a.kt"); + } + @TestMetadata("kt27132.kt") public void testKt27132() throws Exception { runTest("compiler/testData/codegen/box/inlineClasses/kt27132.kt"); diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java index 1ea0a72e18f..0928063d529 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java @@ -11444,6 +11444,16 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { runTest("compiler/testData/codegen/box/inlineClasses/kt27096_reference.kt"); } + @TestMetadata("kt27113.kt") + public void testKt27113() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/kt27113.kt"); + } + + @TestMetadata("kt27113a.kt") + public void testKt27113a() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/kt27113a.kt"); + } + @TestMetadata("kt27132.kt") public void testKt27132() throws Exception { runTest("compiler/testData/codegen/box/inlineClasses/kt27132.kt");