K2: fix intrinsic analysis in FirToConstantValueChecker

#KT-57986 Fixed
This commit is contained in:
Mikhail Glukhikh
2023-04-15 13:25:12 +02:00
committed by Space Team
parent c826c7301c
commit 5cff8c15ab
2 changed files with 4 additions and 4 deletions
@@ -214,6 +214,8 @@ internal object FirToConstantValueChecker : FirDefaultVisitor<Boolean, FirSessio
ConstantValueKind.Int, ConstantValueKind.UnsignedInt, ConstantValueKind.Long, ConstantValueKind.UnsignedLong, ConstantValueKind.Int, ConstantValueKind.UnsignedInt, ConstantValueKind.Long, ConstantValueKind.UnsignedLong,
) )
private val constantIntrinsicCalls = setOf("toByte", "toLong", "toShort", "toFloat", "toDouble", "toChar", "unaryMinus")
override fun visitElement(element: FirElement, data: FirSession): Boolean { override fun visitElement(element: FirElement, data: FirSession): Boolean {
return false return false
} }
@@ -259,9 +261,8 @@ internal object FirToConstantValueChecker : FirDefaultVisitor<Boolean, FirSessio
symbol.callableId.packageName.asString() == "kotlin" -> { symbol.callableId.packageName.asString() == "kotlin" -> {
val dispatchReceiver = qualifiedAccessExpression.dispatchReceiver val dispatchReceiver = qualifiedAccessExpression.dispatchReceiver
when (symbol.callableId.callableName.asString()) { when (symbol.callableId.callableName.asString()) {
in setOf("toByte", "toLong", "toShort", "toFloat", "toDouble", "toChar") -> true !in constantIntrinsicCalls -> false
"unaryMinus" -> dispatchReceiver.accept(this, data) else -> dispatchReceiver.accept(this, data)
else -> false
} }
} }
-1
View File
@@ -1,5 +1,4 @@
// ISSUE: KT-57986 // ISSUE: KT-57986
// IGNORE_BACKEND_K2: JS_IR, NATIVE
// MODULE: m1 // MODULE: m1
// FILE: m1.kt // FILE: m1.kt