K2: fix intrinsic analysis in FirToConstantValueChecker
#KT-57986 Fixed
This commit is contained in:
committed by
Space Team
parent
c826c7301c
commit
5cff8c15ab
+4
-3
@@ -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
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user