From 8234c9cec1faf762562fdad8f316dd7ed26b9419 Mon Sep 17 00:00:00 2001 From: Ivan Kylchik Date: Thu, 13 May 2021 23:23:36 +0300 Subject: [PATCH] Add toString function with nullable receiver into builtins map On JVM we don't have body for this function, so we must process it as intrinsic or builtin --- .../kotlin/ir/interpreter/builtins/IrBuiltInsMapGenerated.kt | 1 + generators/interpreter/GenerateInterpreterMap.kt | 1 + 2 files changed, 2 insertions(+) diff --git a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/builtins/IrBuiltInsMapGenerated.kt b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/builtins/IrBuiltInsMapGenerated.kt index c4c3d8d18df..db0857f5a9d 100644 --- a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/builtins/IrBuiltInsMapGenerated.kt +++ b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/builtins/IrBuiltInsMapGenerated.kt @@ -51,6 +51,7 @@ internal fun interpretUnaryFunction(name: String, type: String, a: Any?): Any? { "Double" -> return (a as Double).toString() "String" -> return (a as String).toString() "Any" -> return (a as Any).toString() + "Any?" -> return a?.toString() ?: "null" } "dec" -> when (type) { "Char" -> return (a as Char).dec() diff --git a/generators/interpreter/GenerateInterpreterMap.kt b/generators/interpreter/GenerateInterpreterMap.kt index d5e0c2db6cb..f2594d5cdf0 100644 --- a/generators/interpreter/GenerateInterpreterMap.kt +++ b/generators/interpreter/GenerateInterpreterMap.kt @@ -49,6 +49,7 @@ fun generateMap(): String { generateInterpretUnaryFunction(p, getOperationMap(1).apply { val irNullCheck = irBuiltIns.checkNotNullSymbol.owner this += Operation(irNullCheck.name.asString(), listOf("T0?"), customExpression = "a!!") + this += Operation("toString", listOf("Any?"), customExpression = "a?.toString() ?: \"null\"") }) generateInterpretBinaryFunction(p, getOperationMap(2) + getBinaryIrOperationMap(irBuiltIns))