diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirConstChecks.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirConstChecks.kt index b5c49d0b40d..a760d6e7d8a 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirConstChecks.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirConstChecks.kt @@ -134,7 +134,7 @@ internal fun checkConstantArguments( if (calleeReference.name == OperatorNameConventions.PLUS && expClassId != receiverClassId - && (expClassId !in StandardClassIds.primitiveTypesAndString || receiverClassId !in StandardClassIds.primitiveTypesAndString) + && (expClassId !in StandardClassIds.constantAllowedTypes || receiverClassId !in StandardClassIds.constantAllowedTypes) ) { return ConstantArgumentKind.NOT_CONST } diff --git a/compiler/testData/codegen/box/constants/foldingBinaryOpsUnsignedConst.kt b/compiler/testData/codegen/box/constants/foldingBinaryOpsUnsignedConst.kt index 8d44e0b64af..f0d27e0b0b7 100644 --- a/compiler/testData/codegen/box/constants/foldingBinaryOpsUnsignedConst.kt +++ b/compiler/testData/codegen/box/constants/foldingBinaryOpsUnsignedConst.kt @@ -1,5 +1,4 @@ // WITH_RUNTIME -// IGNORE_BACKEND_FIR: JVM_IR const val a = "INT " + 0x8fffffffU const val b = "BYTE " + 0x8ffU diff --git a/core/compiler.common/src/org/jetbrains/kotlin/name/StandardClassIds.kt b/core/compiler.common/src/org/jetbrains/kotlin/name/StandardClassIds.kt index 7d361c39708..fe5859e1c70 100644 --- a/core/compiler.common/src/org/jetbrains/kotlin/name/StandardClassIds.kt +++ b/core/compiler.common/src/org/jetbrains/kotlin/name/StandardClassIds.kt @@ -68,7 +68,6 @@ object StandardClassIds { Byte, Short, Int, Long, Float, Double ) - val primitiveTypesAndString = primitiveTypes + String val primitiveArrayTypeByElementType = primitiveTypes.associate { id -> id to id.shortClassName.primitiveArrayId() } val elementTypeByPrimitiveArrayType = primitiveArrayTypeByElementType.inverseMap() @@ -77,6 +76,8 @@ object StandardClassIds { val unsignedArrayTypeByElementType = unsignedTypes.associate { id -> id to id.shortClassName.primitiveArrayId() } val elementTypeByUnsignedArrayType = unsignedArrayTypeByElementType.inverseMap() + val constantAllowedTypes = primitiveTypes + unsignedTypes + String + val Continuation = ClassId(StandardNames.COROUTINES_PACKAGE_FQ_NAME_RELEASE, StandardNames.CONTINUATION_INTERFACE_FQ_NAME_RELEASE.shortName())