[WasmJs] Fix kotlin.test AfterTest for test with Promise return type

Fix #KT-61888
This commit is contained in:
Igor Yakovlev
2024-01-16 20:32:17 +01:00
committed by Space Team
parent 78b666bb40
commit b6ef1e08e1
8 changed files with 56 additions and 28 deletions
@@ -22,6 +22,7 @@ import org.jetbrains.kotlin.ir.builders.declarations.buildFun
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.declarations.impl.IrExternalPackageFragmentImpl
import org.jetbrains.kotlin.ir.declarations.impl.IrFileImpl
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
import org.jetbrains.kotlin.ir.symbols.impl.DescriptorlessExternalPackageFragmentSymbol
import org.jetbrains.kotlin.ir.types.IrTypeSystemContext
@@ -73,6 +74,9 @@ class WasmBackendContext(
override val coroutineSymbols =
JsCommonCoroutineSymbols(symbolTable, module,this)
override val jsPromiseSymbol: IrClassSymbol?
get() = if (isWasmJsTarget) wasmSymbols.jsRelatedSymbols.jsPromise else null
val innerClassesSupport = JsInnerClassesSupport(mapping, irFactory)
override val internalPackageFqn = FqName("kotlin.wasm")
@@ -385,6 +385,8 @@ class WasmSymbols(
val externRefIsNull = getInternalFunction("wasm_externref_is_null")
val jsPromise = getIrClass(FqName("kotlin.js.Promise"))
internal val throwAsJsException: IrSimpleFunctionSymbol =
getInternalFunction("throwAsJsException")
}
@@ -7,17 +7,17 @@ package org.jetbrains.kotlin.backend.wasm.lower
import org.jetbrains.kotlin.backend.common.lower.createIrBuilder
import org.jetbrains.kotlin.backend.wasm.WasmBackendContext
import org.jetbrains.kotlin.ir.backend.js.lower.TestGenerator
import org.jetbrains.kotlin.ir.builders.irCall
import org.jetbrains.kotlin.ir.backend.js.lower.generateJsTests
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
import org.jetbrains.kotlin.ir.expressions.IrBlockBody
fun generateWasmTests(context: WasmBackendContext, moduleFragment: IrModuleFragment) {
val generator = TestGenerator(context, true)
moduleFragment.files.toList().forEach {
generator.lower(it)
}
generateJsTests(
context = context,
moduleFragment = moduleFragment,
groupByPackage = true
)
if (context.testEntryPoints.isEmpty())
return