[kxSerialization] Added diagnostic on useless Serializer annotation

Resolves Kotlin/kotlinx.serialization#2182

Merge-request: KT-MR-8718
Merged-by: Sergey Shanshin <Sergey.Shanshin@jetbrains.com>
This commit is contained in:
Sergey.Shanshin
2023-02-14 22:00:33 +00:00
committed by Space Team
parent 3124154aef
commit c9b8160f1e
10 changed files with 93 additions and 4 deletions
@@ -4,8 +4,26 @@
// FILE: test.kt
import kotlinx.serialization.*
import kotlinx.serialization.descriptors.*
import kotlinx.serialization.encoding.*
class Foo(i: Int, val j: Int)
<!EXTERNAL_CLASS_NOT_SERIALIZABLE!>@Serializer(forClass = Foo::class)<!>
object ExternalSerializer
<!EXTERNAL_SERIALIZER_USELESS!>@Serializer(forClass = Foo::class)<!>
object UselessExternalSerializer : KSerializer<Foo> {
override val descriptor: SerialDescriptor
get() {
TODO()
}
override fun serialize(encoder: Encoder, value: Foo) {
TODO()
}
override fun deserialize(decoder: Decoder): Foo {
TODO()
}
}
@@ -10,8 +10,6 @@ import java.util.*
@Serializer(forClass = Date::class)
object DateSerializer : KSerializer<Date> {
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("java.util.Date", PrimitiveKind.STRING)
override fun serialize(encoder: Encoder, value: Date) {
TODO()
}
@@ -181,7 +181,7 @@ FILE: serializerViaCompanion.kt
public final val i: R|kotlin/Int| = R|<local>/i|
public get(): R|kotlin/Int|
@R|kotlinx/serialization/Serializer|(forClass = <getClass>(Q|com/example/FullyOverridden|)) public final companion object Companion : R|kotlinx/serialization/KSerializer<com/example/FullyOverridden>| {
public final companion object Companion : R|kotlinx/serialization/KSerializer<com/example/FullyOverridden>| {
private constructor(): R|com/example/FullyOverridden.Companion| {
super<R|kotlin/Any|>()
}
@@ -67,8 +67,8 @@ data class PartiallyWithoutType(val i: Int) {
@Serializable(FullyOverridden.Companion::class)
data class FullyOverridden(val i: Int) {
@Serializer(forClass = FullyOverridden::class)
companion object : KSerializer<FullyOverridden> {
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("FullyOverridden", PrimitiveKind.STRING)
override fun serialize(encoder: Encoder, value: FullyOverridden) {