[K/JS] Use intrinsics instead of new functions in IR backend.
This commit is contained in:
@@ -17,7 +17,7 @@ public external fun eval(expr: kotlin.String): dynamic
|
|||||||
|
|
||||||
public external fun js(code: kotlin.String): dynamic
|
public external fun js(code: kotlin.String): dynamic
|
||||||
|
|
||||||
/*∆*/ public fun jsTypeOf(value_hack: kotlin.Any?): kotlin.String
|
/*∆*/ public external fun jsTypeOf(a: kotlin.Any?): kotlin.String
|
||||||
|
|
||||||
public fun json(vararg pairs: kotlin.Pair<kotlin.String, kotlin.Any?>): kotlin.js.Json
|
public fun json(vararg pairs: kotlin.Pair<kotlin.String, kotlin.Any?>): kotlin.js.Json
|
||||||
|
|
||||||
|
|||||||
@@ -117,6 +117,10 @@ internal fun jsBitShiftL(a: Any?, b: Any?): Int
|
|||||||
@JsIntrinsic
|
@JsIntrinsic
|
||||||
internal fun jsInstanceOfIntrinsic(a: Any?, b: Any?): Boolean
|
internal fun jsInstanceOfIntrinsic(a: Any?, b: Any?): Boolean
|
||||||
|
|
||||||
|
// @JsIntrinsic
|
||||||
|
// To prevent people to insert @OptIn every time
|
||||||
|
public external fun jsTypeOf(a: Any?): String
|
||||||
|
|
||||||
@JsIntrinsic
|
@JsIntrinsic
|
||||||
internal fun jsNewTarget(a: Any?): Any?
|
internal fun jsNewTarget(a: Any?): Any?
|
||||||
|
|
||||||
@@ -216,4 +220,4 @@ internal fun <reified T : Any> jsClassIntrinsic(): JsClass<T>
|
|||||||
internal fun jsInIntrinsic(lhs: Any?, rhs: Any): Boolean
|
internal fun jsInIntrinsic(lhs: Any?, rhs: Any): Boolean
|
||||||
|
|
||||||
@JsIntrinsic
|
@JsIntrinsic
|
||||||
internal fun jsDelete(e: Any?)
|
internal fun jsDelete(e: Any?)
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2022 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
|
||||||
|
|
||||||
|
// Inlined intrinsics for backward compatibility with already implemented functions in stdlib for old JS backend
|
||||||
|
@OptIn(JsIntrinsic::class)
|
||||||
|
@kotlin.internal.InlineOnly
|
||||||
|
internal inline fun jsDeleteProperty(obj: dynamic, property: Any) = jsDelete(obj[property])
|
||||||
|
|
||||||
|
@OptIn(JsIntrinsic::class)
|
||||||
|
@kotlin.internal.InlineOnly
|
||||||
|
internal inline fun jsBitwiseOr(lhs: Any?, rhs: Any?): Int = jsBitOr(lhs, rhs)
|
||||||
|
|
||||||
|
@OptIn(JsIntrinsic::class)
|
||||||
|
@kotlin.internal.InlineOnly
|
||||||
|
internal inline fun jsBitwiseAnd(lhs: Any?, rhs: Any?): Int = jsBitAnd(lhs, rhs)
|
||||||
|
|
||||||
|
@OptIn(JsIntrinsic::class)
|
||||||
|
@kotlin.internal.InlineOnly
|
||||||
|
internal inline fun jsInstanceOf(obj: Any?, jsClass: Any?): Boolean = jsInstanceOfIntrinsic(obj, jsClass)
|
||||||
|
|
||||||
|
@OptIn(JsIntrinsic::class)
|
||||||
|
@kotlin.internal.InlineOnly
|
||||||
|
internal inline fun jsIn(lhs: Any?, rhs: Any): Boolean = jsInIntrinsic(lhs, rhs)
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2019 JetBrains s.r.o. 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")
|
|
||||||
|
|
||||||
package kotlin.js
|
|
||||||
|
|
||||||
// Parameters are suffixed with `_hack` as a workaround for Namer.
|
|
||||||
// TODO: Implemet as compiler intrinsics
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function corresponding to JavaScript's `typeof` operator
|
|
||||||
*/
|
|
||||||
public fun jsTypeOf(value_hack: Any?): String =
|
|
||||||
js("typeof value_hack").unsafeCast<String>()
|
|
||||||
|
|
||||||
internal fun jsDeleteProperty(obj_hack: Any, property_hack: Any) {
|
|
||||||
js("delete obj_hack[property_hack]")
|
|
||||||
}
|
|
||||||
|
|
||||||
internal fun jsBitwiseOr(lhs_hack: Any?, rhs_hack: Any?): Int =
|
|
||||||
js("lhs_hack | rhs_hack").unsafeCast<Int>()
|
|
||||||
|
|
||||||
internal fun jsBitwiseAnd(lhs_hack: Any?, rhs_hack: Any?): Int =
|
|
||||||
js("lhs_hack & rhs_hack").unsafeCast<Int>()
|
|
||||||
|
|
||||||
internal fun jsInstanceOf(obj_hack: Any?, jsClass_hack: Any?): Boolean =
|
|
||||||
js("obj_hack instanceof jsClass_hack").unsafeCast<Boolean>()
|
|
||||||
|
|
||||||
// Returns true if the specified property is in the specified object or its prototype chain.
|
|
||||||
internal fun jsIn(lhs_hack: Any?, rhs_hack: Any): Boolean =
|
|
||||||
js("lhs_hack in rhs_hack").unsafeCast<Boolean>()
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user