diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/IrUtils.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/IrUtils.kt index 3baabba0989..46645dc42dc 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/IrUtils.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/IrUtils.kt @@ -661,6 +661,12 @@ fun IrExpression?.isPure( if (valueDeclaration is IrVariable) !valueDeclaration.isVar else true } + is IrTypeOperatorCall -> + ( + operator == IrTypeOperator.INSTANCEOF || + operator == IrTypeOperator.REINTERPRET_CAST || + operator == IrTypeOperator.NOT_INSTANCEOF + ) && argument.isPure(anyVariable, checkFields, context) is IrCall -> if (context?.isSideEffectFree(this) == true) { for (i in 0 until valueArgumentsCount) { val valueArgument = getValueArgument(i) diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsIrBackendContext.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsIrBackendContext.kt index e71a172659f..b27c605290b 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsIrBackendContext.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsIrBackendContext.kt @@ -61,7 +61,8 @@ class JsIrBackendContext( override fun isSideEffectFree(call: IrCall): Boolean = call.symbol in intrinsics.primitiveToLiteralConstructor.values || - call.symbol == intrinsics.arrayLiteral + call.symbol == intrinsics.arrayLiteral || + call.symbol == intrinsics.arrayConcat val devMode = configuration[JSConfigurationKeys.DEVELOPER_MODE] ?: false val errorPolicy = configuration[JSConfigurationKeys.ERROR_TOLERANCE_POLICY] ?: ErrorTolerancePolicy.DEFAULT