commit | ecd16ff6fc818d3f6d14c8a59ebf32bc1c6c7313 | [log] [tgz] |
---|---|---|
author | Kirill Rakhman <kirill.rakhman@jetbrains.com> | Fri Jun 28 16:44:05 2024 +0200 |
committer | Space Team <noreply@jetbrains.team> | Mon Jul 01 07:15:07 2024 +0000 |
tree | 42ee0bafb9368205ce6899f57622e9162ff1d9ad | |
parent | 7d9faec6e2127d91926016e8f86bcbf6f20e2615 [diff] |
[FIR2IR] Fix folding of literals in string concatenation It previously would fold all literals whereby unsigned literals would be converted to signed ones in the resulting string. #KT-69495 Fixed
diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrVisitor.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrVisitor.kt index 57f6889..5bfa9a8 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrVisitor.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrVisitor.kt
@@ -1530,7 +1530,7 @@ var endArgumentOffset = -1 for (firArgument in stringConcatenationCall.arguments) { val argument = convertToIrExpression(firArgument) - if (argument is IrConst<*>) { + if (argument is IrConst<*> && argument.kind == IrConstKind.String) { if (sb.isEmpty()) { startArgumentOffset = argument.startOffset }
diff --git a/compiler/testData/codegen/box/unsignedTypes/unsignedInStringInterpolation.kt b/compiler/testData/codegen/box/unsignedTypes/unsignedInStringInterpolation.kt index 7103a54..03f3e32 100644 --- a/compiler/testData/codegen/box/unsignedTypes/unsignedInStringInterpolation.kt +++ b/compiler/testData/codegen/box/unsignedTypes/unsignedInStringInterpolation.kt
@@ -1,5 +1,4 @@ // WITH_STDLIB -// IGNORE_BACKEND_K2: ANY fun box(): String { val x: ULong = 0Xfedcba9876543210UL