diff --git a/libraries/stdlib/js-ir/runtime/longjs.kt b/libraries/stdlib/js-ir/runtime/longjs.kt index 77121b40e25..7758c3e9246 100644 --- a/libraries/stdlib/js-ir/runtime/longjs.kt +++ b/libraries/stdlib/js-ir/runtime/longjs.kt @@ -335,13 +335,13 @@ internal fun Long.shiftRightUnsigned(numBits: Int): Long { internal fun fromInt(value: Int) = Long(value, if (value < 0) -1 else 0) /** - * Returns a Long representing the given value, provided that it is a finite - * number. Otherwise, zero is returned. - * @param {number} value The number in question. - * @return {!Kotlin.Long} The corresponding Long value. + * Converts this [Double] value to [Long]. + * The fractional part, if any, is rounded down. + * Returns zero if this `Double` value is `NaN`, [Long.MIN_VALUE] if it's less than `Long.MIN_VALUE`, + * [Long.MAX_VALUE] if it's bigger than `Long.MAX_VALUE`. */ internal fun fromNumber(value: Double): Long { - if (value.isNaN() || !value.isFinite()) { + if (value.isNaN()) { return ZERO; } else if (value <= -TWO_PWR_63_DBL_) { return MIN_VALUE; diff --git a/libraries/stdlib/js-v1/src/js/long.js b/libraries/stdlib/js-v1/src/js/long.js index e8e7b70a874..369679c22b3 100644 --- a/libraries/stdlib/js-v1/src/js/long.js +++ b/libraries/stdlib/js-v1/src/js/long.js @@ -94,13 +94,15 @@ Kotlin.Long.fromInt = function(value) { /** - * Returns a Long representing the given value, provided that it is a finite - * number. Otherwise, zero is returned. + * Converts this number value to `Long`. + * The fractional part, if any, is rounded down. + * Returns zero if this `Double` value is `NaN`, `Long.MIN_VALUE` if it's less than `Long.MIN_VALUE`, + * `Long.MAX_VALUE` if it's bigger than `Long.MAX_VALUE`. * @param {number} value The number in question. * @return {!Kotlin.Long} The corresponding Long value. */ Kotlin.Long.fromNumber = function(value) { - if (isNaN(value) || !isFinite(value)) { + if (isNaN(value)) { return Kotlin.Long.ZERO; } else if (value <= -Kotlin.Long.TWO_PWR_63_DBL_) { return Kotlin.Long.MIN_VALUE;