From a6a389933d9fe3ec6c3878ab1cc695781280cc87 Mon Sep 17 00:00:00 2001 From: Ivan Kylchik Date: Mon, 29 May 2023 14:13:33 +0200 Subject: [PATCH] [IR] Slightly simplify string concatenation folding #KT-58923 --- .../transformer/IrConstExpressionTransformer.kt | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/transformer/IrConstExpressionTransformer.kt b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/transformer/IrConstExpressionTransformer.kt index ace01ff4536..139cd768348 100644 --- a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/transformer/IrConstExpressionTransformer.kt +++ b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/transformer/IrConstExpressionTransformer.kt @@ -115,25 +115,22 @@ internal abstract class IrConstExpressionTransformer( folded += next buildersList.add(StringBuilder(next.getConstStringOrEmpty())) } else { + buildersList.last().append(nextAsConst.value.toString()) folded[folded.size - 1] = IrConstImpl.string( // Inlined strings may have `last.startOffset > next.endOffset` - min(last.startOffset, next.startOffset), max(last.endOffset, next.endOffset), expression.type, "" + min(last.startOffset, next.startOffset), max(last.endOffset, next.endOffset), + expression.type, buildersList.last().toString() ) - buildersList.last().append(nextAsConst.value.toString()) } } } } val foldedConst = folded.singleOrNull() as? IrConst<*> - if (foldedConst != null) { + if (foldedConst != null && foldedConst.value is String) { return IrConstImpl.string(expression.startOffset, expression.endOffset, expression.type, buildersList.single().toString()) } - folded.zip(buildersList).forEach { - @Suppress("UNCHECKED_CAST") - (it.first as? IrConst)?.value = it.second.toString() - } return IrStringConcatenationImpl(expression.startOffset, expression.endOffset, expression.type, folded) } }