[Wasm] Make Promise methods generic instead of using Dynamic

Copy full Promise implementation from Kotlin/JS,
and specify JsAny? upper bounds
This commit is contained in:
Svyatoslav Kuzmich
2023-03-20 17:28:18 +01:00
committed by Space Team
parent 635671d623
commit e32611d2f2
+18 -12
View File
@@ -5,20 +5,26 @@
package kotlin.js package kotlin.js
import kotlin.internal.LowPriorityInOverloadResolution
/** /**
* Exposes the JavaScript [Promise object](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise) to Kotlin. * Exposes the JavaScript [Promise object](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise) to Kotlin.
*/ */
public external class Promise<out T : JsAny?>(executor: (resolve: (Dynamic?) -> Unit, reject: (Dynamic) -> Unit) -> Unit) : JsAny { public external class Promise<out T : JsAny?>(executor: (resolve: (T) -> Unit, reject: (JsAny) -> Unit) -> Unit) : JsAny {
public fun then(onFulfilled: (Dynamic?) -> Dynamic?): Promise<Dynamic?> @LowPriorityInOverloadResolution
public fun then(onFulfilled: (Dynamic?) -> Dynamic?, onRejected: (Dynamic) -> Dynamic?): Promise<Dynamic?> public fun <S : JsAny?> then(onFulfilled: ((T) -> S)?): Promise<S>
public fun catch(onRejected: (Dynamic) -> Dynamic?): Promise<Dynamic?>
public fun finally(onFinally: () -> Unit): Promise<Dynamic?>
public companion object { @LowPriorityInOverloadResolution
public fun reject(e: Dynamic): Promise<Dynamic?> public fun <S : JsAny?> then(onFulfilled: ((T) -> S)?, onRejected: ((JsAny) -> S)?): Promise<S>
public fun resolve(e: Dynamic): Promise<Dynamic?>
public fun resolve(e: Promise<Dynamic?>): Promise<Dynamic?> public fun <S : JsAny?> catch(onRejected: (JsAny) -> S): Promise<S>
public fun finally(onFinally: () -> Unit): Promise<T>
companion object {
public fun <S : JsAny?> all(promise: JsArray<out Promise<S>>): Promise<JsArray<out S>>
public fun <S : JsAny?> race(promise: JsArray<out Promise<S>>): Promise<S>
public fun reject(e: JsAny): Promise<Nothing>
public fun <S : JsAny?> resolve(e: S): Promise<S>
public fun <S : JsAny?> resolve(e: Promise<S>): Promise<S>
} }
} }