[K/Wasm] Introduce JsBigInt type

This commit is contained in:
Artem Kobzar
2023-12-13 18:44:57 +00:00
committed by Space Team
parent 8bbbbfa3ce
commit 1473b4bb41
3 changed files with 52 additions and 10 deletions
@@ -121,13 +121,13 @@ private fun externrefToDouble(ref: ExternalInterfaceType): Double =
private fun intToExternref(x: Int): JsNumber =
js("x")
private fun longToExternref(x: Long): ExternalInterfaceType =
private fun longToExternref(x: Long): JsBigInt =
js("x")
private fun booleanToExternref(x: Boolean): ExternalInterfaceType =
private fun booleanToExternref(x: Boolean): JsBoolean =
js("x")
private fun floatToExternref(x: Float): ExternalInterfaceType =
private fun floatToExternref(x: Float): JsNumber =
js("x")
private fun doubleToExternref(x: Double): JsNumber =
@@ -368,7 +368,7 @@ private fun kotlinUShortToJsNumberUnsafe(x: Int): JsNumber =
private fun kotlinUIntToJsNumberUnsafe(x: Int): JsNumber =
js("x >>> 0")
private fun kotlinULongToJsBigIntUnsafe(x: Long): ExternalInterfaceType =
private fun kotlinULongToJsBigIntUnsafe(x: Long): JsBigInt =
js("x & 0xFFFFFFFFFFFFFFFFn")
internal fun kotlinUByteToJsNumber(x: UByte): JsNumber =
@@ -380,25 +380,25 @@ internal fun kotlinUShortToJsNumber(x: UShort): JsNumber =
internal fun kotlinUIntToJsNumber(x: UInt): JsNumber =
kotlinUIntToJsNumberUnsafe(x.toInt())
internal fun kotlinULongToJsBigInt(x: ULong): ExternalInterfaceType =
internal fun kotlinULongToJsBigInt(x: ULong): JsBigInt =
kotlinULongToJsBigIntUnsafe(x.toLong())
internal fun kotlinLongToExternRefAdapter(x: Long): ExternalInterfaceType =
internal fun kotlinLongToExternRefAdapter(x: Long): JsBigInt =
longToExternref(x)
internal fun kotlinFloatToExternRefAdapter(x: Float): ExternalInterfaceType =
internal fun kotlinFloatToExternRefAdapter(x: Float): JsNumber =
floatToExternref(x)
internal fun kotlinDoubleToExternRefAdapter(x: Double): JsNumber =
doubleToExternref(x)
internal fun kotlinByteToExternRefAdapter(x: Byte): ExternalInterfaceType =
internal fun kotlinByteToExternRefAdapter(x: Byte): JsNumber =
intToExternref(x.toInt())
internal fun kotlinShortToExternRefAdapter(x: Short): ExternalInterfaceType =
internal fun kotlinShortToExternRefAdapter(x: Short): JsNumber =
intToExternref(x.toInt())
internal fun kotlinCharToExternRefAdapter(x: Char): ExternalInterfaceType =
internal fun kotlinCharToExternRefAdapter(x: Char): JsNumber =
intToExternref(x.code)
internal fun newJsArray(): ExternalInterfaceType =
@@ -0,0 +1,19 @@
/*
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package kotlin.js
import kotlin.wasm.internal.*
import kotlin.wasm.internal.JsPrimitive
/** JavaScript primitive bigint */
@JsPrimitive("bigint")
public external class JsBigInt internal constructor() : JsAny
public fun JsBigInt.toLong(): Long =
externRefToKotlinLongAdapter(this)
public fun Long.toJsBigInt(): JsBigInt =
kotlinLongToExternRefAdapter(this)