[K/JS] Exclude kotlinx.serialization synthetic declarations from JsExport

^KT-57024 Fixed
This commit is contained in:
Artem Kobzar
2023-02-28 18:11:36 +00:00
committed by Space Team
parent 36ae6d1238
commit 50a462fed1
22 changed files with 359 additions and 49 deletions
@@ -56,6 +56,10 @@ fun main(args: Array<String>) {
testClass<AbstractSerializationWithoutRuntimeIrBoxTest> {
model("boxWithoutRuntime")
}
testClass<AbstractSerializationIrJsBoxTest> {
model("boxIr")
}
}
}
}
@@ -9,6 +9,8 @@ import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.runners.codegen.AbstractFirLightTreeBlackBoxCodegenTest
import org.jetbrains.kotlin.test.runners.codegen.AbstractIrBlackBoxCodegenTest
import org.jetbrains.kotlinx.serialization.configureForKotlinxSerialization
import org.jetbrains.kotlin.js.test.ir.AbstractJsIrTest;
import org.jetbrains.kotlin.test.TargetBackend
open class AbstractSerializationIrBoxTest : AbstractIrBlackBoxCodegenTest() {
override fun configure(builder: TestConfigurationBuilder) {
@@ -30,3 +32,13 @@ open class AbstractSerializationFirLightTreeBlackBoxTest : AbstractFirLightTreeB
builder.configureForKotlinxSerialization()
}
}
open class AbstractSerializationIrJsBoxTest : AbstractJsIrTest(
pathToTestDir = "plugins/kotlinx-serialization/testData/boxIr/",
testGroupOutputDirPrefix = "codegen/serializationBoxIr/"
) {
override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder)
builder.configureForKotlinxSerialization(target = TargetBackend.JS_IR)
}
}
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoots
import org.jetbrains.kotlin.compiler.plugin.CompilerPluginRegistrar
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrarAdapter
import org.jetbrains.kotlin.test.TargetBackend
import org.jetbrains.kotlin.test.bind
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.model.TestModule
@@ -39,15 +40,32 @@ class SerializationEnvironmentConfigurator(
}
}
class SerializationRuntimeClasspathProvider(testServices: TestServices) : RuntimeClasspathProvider(testServices) {
class SerializationRuntimeClasspathJvmProvider(testServices: TestServices) : RuntimeClasspathProvider(testServices) {
override fun runtimeClassPaths(module: TestModule): List<File> {
return librariesPaths
}
}
fun TestConfigurationBuilder.configureForKotlinxSerialization(noLibraries: Boolean = false) {
useConfigurators(::SerializationEnvironmentConfigurator.bind(noLibraries))
if (!noLibraries) {
useCustomRuntimeClasspathProviders(::SerializationRuntimeClasspathProvider)
class SerializationRuntimeClasspathJsProvider(testServices: TestServices) : RuntimeClasspathProvider(testServices) {
override fun runtimeClassPaths(module: TestModule): List<File> {
return listOf(
File(System.getProperty("serialization.core.path")!!),
File(System.getProperty("serialization.json.path")!!),
)
}
}
fun TestConfigurationBuilder.configureForKotlinxSerialization(
noLibraries: Boolean = false,
target: TargetBackend = TargetBackend.JVM
) {
useConfigurators(::SerializationEnvironmentConfigurator.bind(noLibraries))
if (!noLibraries) {
when (target) {
TargetBackend.JVM, TargetBackend.JVM_IR -> useCustomRuntimeClasspathProviders(::SerializationRuntimeClasspathJvmProvider)
TargetBackend.JS_IR, TargetBackend.JS_IR_ES6 -> useCustomRuntimeClasspathProviders(::SerializationRuntimeClasspathJsProvider)
else -> error("Unsupported backend")
}
}
}