Add serializer(vararg KSerializer<*>) override from SerializerFactory when necessary
SerializerFactory is an implementation detail for Kotlin/JS and Native: it should be added as a supertype to a companion object of certain serializable classes and `serializer(vararg KSerializer<*>)` function from it should be implemented. Existing implementation added the supertype, but did not add proper override to FirClass of a companion, which led to various warnings and errors like 'Abstract function 'serializer' is not implemented in non-abstract companion object'. Also implemented the addition of SerializerFactory supertype to user-defined companions within @Serializable and @MetaSerializable when necessary. Also set up proper box tests for FIR+Kotlin/JS combination. #KT-58501 Fixed #KT-59768 Fixed
This commit is contained in:
committed by
Space Team
parent
351e9c7592
commit
f3833fdcf8
+4
@@ -64,6 +64,10 @@ fun main(args: Array<String>) {
|
||||
testClass<AbstractSerializationIrJsBoxTest> {
|
||||
model("boxIr")
|
||||
}
|
||||
|
||||
testClass<AbstractSerializationFirJsBoxTest> {
|
||||
model("boxIr")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+13
-1
@@ -5,6 +5,8 @@
|
||||
|
||||
package org.jetbrains.kotlinx.serialization.runners
|
||||
|
||||
import org.jetbrains.kotlin.js.test.fir.AbstractFirJsBoxTest
|
||||
import org.jetbrains.kotlin.js.test.fir.AbstractFirJsTest
|
||||
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
|
||||
import org.jetbrains.kotlin.test.runners.codegen.AbstractFirLightTreeBlackBoxCodegenTest
|
||||
import org.jetbrains.kotlin.test.runners.codegen.AbstractIrBlackBoxCodegenTest
|
||||
@@ -48,4 +50,14 @@ open class AbstractSerializationIrJsBoxTest : AbstractJsIrTest(
|
||||
super.configure(builder)
|
||||
builder.configureForKotlinxSerialization(target = TargetBackend.JS_IR)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
open class AbstractSerializationFirJsBoxTest : AbstractFirJsTest(
|
||||
pathToTestDir = "plugins/kotlinx-serialization/testData/boxIr/",
|
||||
testGroupOutputDirPrefix = "codegen/serializationBoxFir/"
|
||||
) {
|
||||
override fun configure(builder: TestConfigurationBuilder) {
|
||||
super.configure(builder)
|
||||
builder.configureForKotlinxSerialization(target = TargetBackend.JS_IR)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user