[K/JS] Exclude kotlinx.serialization synthetic declarations from JsExport
^KT-57024 Fixed
This commit is contained in:
+4
@@ -56,6 +56,10 @@ fun main(args: Array<String>) {
|
||||
testClass<AbstractSerializationWithoutRuntimeIrBoxTest> {
|
||||
model("boxWithoutRuntime")
|
||||
}
|
||||
|
||||
testClass<AbstractSerializationIrJsBoxTest> {
|
||||
model("boxIr")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+12
@@ -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)
|
||||
}
|
||||
}
|
||||
+23
-5
@@ -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")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user