[Wasm] Migrate usages of @JsFun to js("code")

This commit is contained in:
Svyatoslav Kuzmich
2023-01-14 15:19:25 +01:00
committed by Space Team
parent 7a04999e4a
commit 7175b9f31c
18 changed files with 303 additions and 297 deletions
+51 -49
View File
@@ -3,87 +3,89 @@
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
@file:Suppress("UNUSED_PARAMETER") // TODO: Remove after bootstrap update
package kotlin.js
@PublishedApi
@JsFun("(obj, index, value) => obj[index] = value")
internal external fun dynamicSetBoolean(obj: Dynamic, index: String, value: Boolean)
internal fun dynamicSetBoolean(obj: Dynamic, index: String, value: Boolean): Unit =
js("obj[index] = value")
@PublishedApi
@JsFun("(obj, index, value) => obj[index] = value")
internal external fun dynamicSetByte(obj: Dynamic, index: String, value: Byte)
internal fun dynamicSetByte(obj: Dynamic, index: String, value: Byte): Unit =
js("obj[index] = value")
@PublishedApi
@JsFun("(obj, index, value) => obj[index] = value")
internal external fun dynamicSetShort(obj: Dynamic, index: String, value: Short)
internal fun dynamicSetShort(obj: Dynamic, index: String, value: Short): Unit =
js("obj[index] = value")
@PublishedApi
@JsFun("(obj, index, value) => obj[index] = value")
internal external fun dynamicSetChar(obj: Dynamic, index: String, value: Char)
internal fun dynamicSetChar(obj: Dynamic, index: String, value: Char): Unit =
js("obj[index] = value")
@PublishedApi
@JsFun("(obj, index, value) => obj[index] = value")
internal external fun dynamicSetInt(obj: Dynamic, index: String, value: Int)
internal fun dynamicSetInt(obj: Dynamic, index: String, value: Int): Unit =
js("obj[index] = value")
@PublishedApi
@JsFun("(obj, index, value) => obj[index] = value")
internal external fun dynamicSetLong(obj: Dynamic, index: String, value: Long)
internal fun dynamicSetLong(obj: Dynamic, index: String, value: Long): Unit =
js("obj[index] = value")
@PublishedApi
@JsFun("(obj, index, value) => obj[index] = value")
internal external fun dynamicSetFloat(obj: Dynamic, index: String, value: Float)
internal fun dynamicSetFloat(obj: Dynamic, index: String, value: Float): Unit =
js("obj[index] = value")
@PublishedApi
@JsFun("(obj, index, value) => obj[index] = value")
internal external fun dynamicSetDouble(obj: Dynamic, index: String, value: Double)
internal fun dynamicSetDouble(obj: Dynamic, index: String, value: Double): Unit =
js("obj[index] = value")
@PublishedApi
@JsFun("(obj, index, value) => obj[index] = value")
internal external fun dynamicSetString(obj: Dynamic, index: String, value: String?)
internal fun dynamicSetString(obj: Dynamic, index: String, value: String?): Unit =
js("obj[index] = value")
@PublishedApi
@JsFun("(obj, index, value) => obj[index] = value")
internal external fun dynamicSetAny(obj: Dynamic, index: String, value: Any?)
internal fun dynamicSetAny(obj: Dynamic, index: String, value: Any?): Unit =
js("obj[index] = value")
@PublishedApi
@JsFun("(obj, index) => obj[index]")
internal external fun dynamicGetBoolean(obj: Dynamic, index: String): Boolean
internal fun dynamicGetBoolean(obj: Dynamic, index: String): Boolean =
js("obj[index]")
@PublishedApi
@JsFun("(obj, index) => obj[index]")
internal external fun dynamicGetByte(obj: Dynamic, index: String): Byte
internal fun dynamicGetByte(obj: Dynamic, index: String): Byte =
js("obj[index]")
@PublishedApi
@JsFun("(obj, index) => obj[index]")
internal external fun dynamicGetShort(obj: Dynamic, index: String): Short
internal fun dynamicGetShort(obj: Dynamic, index: String): Short =
js("obj[index]")
@PublishedApi
@JsFun("(obj, index) => obj[index]")
internal external fun dynamicGetChar(obj: Dynamic, index: String): Char
internal fun dynamicGetChar(obj: Dynamic, index: String): Char =
js("obj[index]")
@PublishedApi
@JsFun("(obj, index) => obj[index]")
internal external fun dynamicGetInt(obj: Dynamic, index: String): Int
internal fun dynamicGetInt(obj: Dynamic, index: String): Int =
js("obj[index]")
@PublishedApi
@JsFun("(obj, index) => obj[index]")
internal external fun dynamicGetLong(obj: Dynamic, index: String): Long
internal fun dynamicGetLong(obj: Dynamic, index: String): Long =
js("obj[index]")
@PublishedApi
@JsFun("(obj, index) => obj[index]")
internal external fun dynamicGetFloat(obj: Dynamic, index: String): Float
internal fun dynamicGetFloat(obj: Dynamic, index: String): Float =
js("obj[index]")
@PublishedApi
@JsFun("(obj, index) => obj[index]")
internal external fun dynamicGetDouble(obj: Dynamic, index: String): Double
internal fun dynamicGetDouble(obj: Dynamic, index: String): Double =
js("obj[index]")
@PublishedApi
@JsFun("(obj, index) => obj[index]")
internal external fun dynamicGetString(obj: Dynamic, index: String): String?
internal fun dynamicGetString(obj: Dynamic, index: String): String? =
js("obj[index]")
@PublishedApi
@JsFun("(obj, index) => obj[index]")
internal external fun dynamicGetAny(obj: Dynamic, index: String): Any?
internal fun dynamicGetAny(obj: Dynamic, index: String): Any? =
js("obj[index]")
@PublishedApi
internal fun Dynamic.getBoolean(index: String): Boolean = dynamicGetBoolean(this, index)
@@ -184,14 +186,12 @@ operator fun Dynamic.set(index: Int, value: Any?) {
this[index.toString()] = value
}
@JsFun("(x) => x")
private external fun <T> unsafeCastJs(x: String): Dynamic
private fun <T> unsafeCastJs(x: String): Dynamic = js("x")
@Suppress("UNCHECKED_CAST")
fun <T> String.unsafeCast(): T = unsafeCastJs<T>(this) as T
@JsFun("(x) => x")
private external fun <T> unsafeCastJs(x: Boolean): Dynamic
private fun <T> unsafeCastJs(x: Boolean): Dynamic = js("x")
/**
* Reinterprets boolean value as a value of the specified type [T] without any actual type checking.
@@ -210,10 +210,12 @@ fun <T> Nothing?.unsafeCast(): Dynamic? = null
@Suppress("UNCHECKED_CAST")
fun <T> Dynamic.unsafeCast(): T = this as T
@JsFun("e => { throw e; }")
private external fun jsThrow(e: Dynamic)
private fun jsThrow(e: Dynamic) {
js("throw e;")
}
@JsFun("""(f) => {
private fun jsCatch(f: () -> Unit): Dynamic? {
js("""
let result = null;
try {
f();
@@ -221,8 +223,8 @@ private external fun jsThrow(e: Dynamic)
result = e;
}
return result;
}""")
private external fun jsCatch(f: () -> Unit): Dynamic?
""")
}
/**
* For a Dynamic value caught in JS, returns the corresponding [Throwable]
+8 -6
View File
@@ -3,18 +3,20 @@
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
@file:Suppress("UNUSED_PARAMETER") // TODO: Remove after bootstrap update
package kotlin.io
import kotlin.wasm.internal.*
@JsFun("(error) => console.error(error)")
internal external fun printError(error: String?): Unit
internal fun printError(error: String?): Unit =
js("console.error(error)")
@JsFun("(message) => console.log(message)")
private external fun printlnImpl(message: String?): Unit
private fun printlnImpl(message: String?): Unit =
js("console.log(message)")
@JsFun("(message) => typeof write !== 'undefined' ? write(message) : console.log(message)")
private external fun printImpl(message: String?): Unit
private fun printImpl(message: String?): Unit =
js("typeof write !== 'undefined' ? write(message) : console.log(message)")
/** Prints the line separator to the standard output stream. */
public actual fun println() {
@@ -5,8 +5,8 @@
package kotlin.random
@JsFun("() => ((Math.random() * Math.pow(2, 32)) | 0)")
private external fun initialSeed(): Int
private fun initialSeed(): Int =
js("((Math.random() * Math.pow(2, 32)) | 0)")
internal actual fun defaultPlatformRandom(): Random =
Random(initialSeed())
@@ -3,17 +3,19 @@
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
@file:Suppress("UNUSED_PARAMETER") // TODO: Remove after bootstrap update
package kotlin.time
import kotlin.math.*
internal actual inline val durationAssertionsEnabled: Boolean get() = true
@JsFun("(value, decimals) => value.toFixed(decimals)")
private external fun toFixed(value: Double, decimals: Int): String
private fun toFixed(value: Double, decimals: Int): String =
js("value.toFixed(decimals)")
@JsFun("(value, decimals) => value.toPrecision(decimals)")
private external fun toPrecision(value: Double, decimals: Int): String
private fun toPrecision(value: Double, decimals: Int): String =
js("value.toPrecision(decimals)")
internal actual fun formatToExactDecimals(value: Double, decimals: Int): String {
val rounded = if (decimals == 0) {
@@ -34,5 +36,5 @@ internal actual fun formatToExactDecimals(value: Double, decimals: Int): String
}
}
@JsFun("(value, decimals) => value.toLocaleString(\"en-us\", ({\"maximumFractionDigits\": decimals}))")
external internal actual fun formatUpToDecimals(value: Double, decimals: Int): String
internal actual fun formatUpToDecimals(value: Double, decimals: Int): String =
js("(value, decimals) => value.toLocaleString(\"en-us\", ({\"maximumFractionDigits\": decimals}))")
@@ -3,20 +3,22 @@
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
@file:Suppress("UNUSED_PARAMETER") // TODO: Remove after bootstrap advance
package kotlin.time
import kotlin.wasm.internal.ExternalInterfaceType
import kotlin.time.TimeSource.Monotonic.ValueTimeMark
import kotlin.time.Duration.Companion.milliseconds
@JsFun("() => typeof globalThis !== 'undefined' && typeof globalThis.performance !== 'undefined' ? globalThis.performance : null")
private external fun tryGetPerformance(): ExternalInterfaceType?
private fun tryGetPerformance(): ExternalInterfaceType? =
js("typeof globalThis !== 'undefined' && typeof globalThis.performance !== 'undefined' ? globalThis.performance : null")
@JsFun("(performance) => performance.now()")
private external fun getPerformanceNow(performance: ExternalInterfaceType): Double
private fun getPerformanceNow(performance: ExternalInterfaceType): Double =
js("performance.now()")
@JsFun("() => Date.now()")
private external fun dateNow(): Double
private fun dateNow(): Double =
js("Date.now()")
@SinceKotlin("1.3")
@ExperimentalTime
@@ -9,5 +9,5 @@ package kotlin.js
internal val undefined: Nothing? = null
@PublishedApi
@JsFun("() => ({})")
internal external fun newJsObject(): Dynamic
internal fun newJsObject(): Dynamic =
js("({})")