[K2] Support proper serialization of string concatenation expressions

This commit is contained in:
Ivan Kylchik
2023-04-05 15:10:53 +02:00
committed by Space Team
parent 1e3e04173b
commit 6909d9a2f9
7 changed files with 114 additions and 0 deletions
@@ -73,6 +73,12 @@ private abstract class FirToConstantValueTransformer(
}
}
override fun visitStringConcatenationCall(stringConcatenationCall: FirStringConcatenationCall, data: FirSession): ConstantValue<*>? {
val strings = stringConcatenationCall.argumentList.arguments.map { it.accept(this, data) }
if (strings.any { it == null || it !is StringValue }) return null
return StringValue(strings.joinToString(separator = "") { (it as StringValue).value })
}
override fun visitArrayOfCall(
arrayOfCall: FirArrayOfCall,
data: FirSession
@@ -208,6 +214,10 @@ internal object FirToConstantValueChecker : FirDefaultVisitor<Boolean, FirSessio
return constExpression.kind in supportedConstKinds
}
override fun visitStringConcatenationCall(stringConcatenationCall: FirStringConcatenationCall, data: FirSession): Boolean {
return stringConcatenationCall.argumentList.arguments.all { it.accept(this, data) }
}
override fun visitArrayOfCall(arrayOfCall: FirArrayOfCall, data: FirSession): Boolean {
return arrayOfCall.arguments.all { it.accept(this, data) }
}