Skip to content

Commit 88f782c

Browse files
authored
Removed redundant usages of @Serializer annotations (#2200)
If all KSerializer members are overridden in custom serializer, then the annotation '@Serializer' is not needed
1 parent e9b9064 commit 88f782c

File tree

17 files changed

+25
-47
lines changed

17 files changed

+25
-47
lines changed

core/commonTest/src/kotlinx/serialization/SerializersLookupEnumTest.kt

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@ class SerializersLookupEnumTest {
1616
@Serializable(with = EnumExternalObjectSerializer::class)
1717
enum class EnumExternalObject
1818

19-
@Serializer(forClass = EnumExternalObject::class)
20-
object EnumExternalObjectSerializer {
19+
object EnumExternalObjectSerializer: KSerializer<EnumExternalObject> {
2120
override val descriptor: SerialDescriptor = buildSerialDescriptor("tmp", SerialKind.ENUM)
2221

2322
override fun serialize(encoder: Encoder, value: EnumExternalObject) {
@@ -29,11 +28,10 @@ class SerializersLookupEnumTest {
2928
}
3029
}
3130

32-
@Serializable(with = EnumExternalClassSerializer::class)
31+
@Serializable(with = EnumCustomClassSerializer::class)
3332
enum class EnumExternalClass
3433

35-
@Serializer(forClass = EnumExternalClass::class)
36-
class EnumExternalClassSerializer {
34+
class EnumCustomClassSerializer: KSerializer<EnumExternalClass> {
3735
override val descriptor: SerialDescriptor = buildSerialDescriptor("tmp", SerialKind.ENUM)
3836

3937
override fun serialize(encoder: Encoder, value: EnumExternalClass) {
@@ -97,7 +95,7 @@ class SerializersLookupEnumTest {
9795

9896
@Test
9997
fun testEnumExternalClass() {
100-
assertIs<EnumExternalClassSerializer>(EnumExternalClass.serializer())
101-
assertIs<EnumExternalClassSerializer>(serializer<EnumExternalClass>())
98+
assertIs<EnumCustomClassSerializer>(EnumExternalClass.serializer())
99+
assertIs<EnumCustomClassSerializer>(serializer<EnumExternalClass>())
102100
}
103101
}

core/commonTest/src/kotlinx/serialization/SerializersLookupObjectTest.kt

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,10 @@ import kotlin.test.*
1111

1212
@Suppress("RemoveExplicitTypeArguments") // This is exactly what's being tested
1313
class SerializersLookupObjectTest {
14-
@Serializable(with = ObjectExternalObjectSerializer::class)
14+
@Serializable(with = ObjectCustomObjectSerializer::class)
1515
object ObjectExternalObject
1616

17-
@Serializer(forClass = ObjectExternalObject::class)
18-
object ObjectExternalObjectSerializer {
17+
object ObjectCustomObjectSerializer: KSerializer<ObjectExternalObject> {
1918
override val descriptor: SerialDescriptor = buildSerialDescriptor("tmp", StructureKind.OBJECT)
2019

2120
override fun serialize(encoder: Encoder, value: ObjectExternalObject) {
@@ -27,11 +26,10 @@ class SerializersLookupObjectTest {
2726
}
2827
}
2928

30-
@Serializable(with = ObjectExternalClassSerializer::class)
29+
@Serializable(with = ObjectCustomClassSerializer::class)
3130
object ObjectExternalClass
3231

33-
@Serializer(forClass = ObjectExternalClass::class)
34-
class ObjectExternalClassSerializer {
32+
class ObjectCustomClassSerializer: KSerializer<ObjectExternalClass> {
3533
override val descriptor: SerialDescriptor = buildSerialDescriptor("tmp", StructureKind.OBJECT)
3634

3735
override fun serialize(encoder: Encoder, value: ObjectExternalClass) {
@@ -56,18 +54,18 @@ class SerializersLookupObjectTest {
5654

5755
@Test
5856
fun testObjectExternalObject() {
59-
assertSame(ObjectExternalObjectSerializer, ObjectExternalObject.serializer())
57+
assertSame(ObjectCustomObjectSerializer, ObjectExternalObject.serializer())
6058
if (!isJsLegacy()) {
61-
assertSame(ObjectExternalObjectSerializer, serializer<ObjectExternalObject>())
59+
assertSame(ObjectCustomObjectSerializer, serializer<ObjectExternalObject>())
6260
}
6361
}
6462

6563
@Test
6664
fun testObjectExternalClass() {
67-
assertIs<ObjectExternalClassSerializer>(ObjectExternalClass.serializer())
65+
assertIs<ObjectCustomClassSerializer>(ObjectExternalClass.serializer())
6866

6967
if (!isJsLegacy()) {
70-
assertIs<ObjectExternalClassSerializer>(serializer<ObjectExternalClass>())
68+
assertIs<ObjectCustomClassSerializer>(serializer<ObjectExternalClass>())
7169
}
7270
}
7371
}

formats/json-tests/commonTest/src/kotlinx/serialization/EncodingExtensionsTest.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ class EncodingExtensionsTest {
1010
@Serializable(with = BoxSerializer::class)
1111
class Box(val i: Int)
1212

13-
@Serializer(forClass = Box::class)
1413
object BoxSerializer : KSerializer<Box> {
1514
override val descriptor: SerialDescriptor = buildClassSerialDescriptor("Box") {
1615
element<Int>("i")

formats/json-tests/commonTest/src/kotlinx/serialization/EnumSerializationTest.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ class EnumSerializationTest : JsonTestBase() {
4545
TWO
4646
}
4747

48-
@Serializer(WithCustom::class)
4948
private class CustomEnumSerializer : KSerializer<WithCustom> {
5049
override val descriptor: SerialDescriptor = buildSerialDescriptor("WithCustom", SerialKind.ENUM) {
5150
element("1", buildSerialDescriptor("WithCustom.1", StructureKind.OBJECT))

formats/json-tests/commonTest/src/kotlinx/serialization/NotNullSerializersCompatibilityOnFileTest.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@ class NotNullSerializersCompatibilityOnFileTest {
5353
@Serializable
5454
data class Holder(val nullable: Int?, val nonNullable: Int)
5555

56-
@Serializer(forClass = Int::class)
5756
object NonNullableIntSerializer : KSerializer<Int> {
5857
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("NotNullIntSerializer", PrimitiveKind.INT)
5958

formats/json-tests/commonTest/src/kotlinx/serialization/SerializationForNullableTypeOnFileTest.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ class SerializationForNullableTypeOnFileTest {
1616
@Serializable
1717
data class Holder(val nullable: Int?, val nonNullable: Int)
1818

19-
@Serializer(forClass = Int::class)
2019
object NullableIntSerializer : KSerializer<Int?> {
2120
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("NullableIntSerializer", PrimitiveKind.INT).nullable
2221

@@ -34,7 +33,6 @@ class SerializationForNullableTypeOnFileTest {
3433
}
3534
}
3635

37-
@Serializer(forClass = Int::class)
3836
object NonNullableIntSerializer : KSerializer<Int> {
3937
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("NotNullIntSerializer", PrimitiveKind.INT)
4038

formats/json-tests/commonTest/src/kotlinx/serialization/SerializerForNullableTypeTest.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ public class SerializerForNullableTypeTest : JsonTestBase() {
1616
@Serializable(with = StringHolderSerializer::class)
1717
data class StringHolder(val s: String)
1818

19-
@Serializer(forClass = StringHolder::class)
2019
object StringHolderSerializer : KSerializer<StringHolder?> {
2120
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("SHS", PrimitiveKind.STRING).nullable
2221

formats/json-tests/commonTest/src/kotlinx/serialization/features/BinaryPayloadExampleTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,8 @@ import kotlin.test.Test
1414
import kotlin.test.assertEquals
1515

1616
class BinaryPayloadExampleTest {
17-
@Serializable
17+
@Serializable(BinaryPayload.Companion::class)
1818
class BinaryPayload(val req: ByteArray, val res: ByteArray) {
19-
@Serializer(forClass = BinaryPayload::class)
2019
companion object : KSerializer<BinaryPayload> {
2120
override val descriptor: SerialDescriptor = buildClassSerialDescriptor("BinaryPayload") {
2221
element("req", ByteArraySerializer().descriptor)
@@ -73,6 +72,7 @@ class BinaryPayloadExampleTest {
7372
fun payloadEquivalence() {
7473
val payload1 = BinaryPayload(byteArrayOf(0, 0, 0), byteArrayOf(127, 127))
7574
val s = Json.encodeToString(BinaryPayload.serializer(), payload1)
75+
assertEquals("""{"req":"000000","res":"7F7F"}""", s)
7676
val payload2 = Json.decodeFromString(BinaryPayload.serializer(), s)
7777
assertEquals(payload1, payload2)
7878
}

formats/json-tests/commonTest/src/kotlinx/serialization/features/GenericCustomSerializerTest.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ class CheckedData<T : Any>(val data: T, val checkSum: ByteArray) {
3333
}
3434
}
3535

36-
@Serializer(forClass = CheckedData::class)
3736
class CheckedDataSerializer<T : Any>(private val dataSerializer: KSerializer<T>) : KSerializer<CheckedData<T>> {
3837
override val descriptor: SerialDescriptor = buildClassSerialDescriptor("CheckedDataSerializer") {
3938
val dataDescriptor = dataSerializer.descriptor

formats/json-tests/commonTest/src/kotlinx/serialization/features/inline/InlineClassesTest.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,7 @@ data class SimpleContainerForUInt(val i: UInt)
2222
@JvmInline
2323
value class MyUInt(val m: Int)
2424

25-
@Serializer(forClass = MyUInt::class)
26-
object MyUIntSerializer {
25+
object MyUIntSerializer: KSerializer<MyUInt> {
2726
override val descriptor = UInt.serializer().descriptor
2827
override fun serialize(encoder: Encoder, value: MyUInt) {
2928
encoder.encodeInline(descriptor).encodeInt(value.m)

formats/json-tests/commonTest/src/kotlinx/serialization/json/JsonMapKeysTest.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ value class ComplexCarrier(val c: IntData)
2424
value class PrimitiveCarrier(val c: String)
2525

2626
data class ContextualValue(val c: String) {
27-
@Serializer(forClass = ContextualValue::class)
2827
companion object: KSerializer<ContextualValue> {
2928
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("ContextualValue", PrimitiveKind.STRING)
3029

formats/json-tests/commonTest/src/kotlinx/serialization/json/MapLikeSerializerTest.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ class MapLikeSerializerTest : JsonTestBase() {
1515
@Serializable
1616
data class StringPair(val a: String, val b: String)
1717

18-
@Serializer(forClass = StringPair::class)
1918
object StringPairSerializer : KSerializer<StringPair> {
2019

2120
override val descriptor: SerialDescriptor = buildSerialDescriptor("package.StringPair", StructureKind.MAP) {

formats/json-tests/jsTest/src/kotlinx/serialization/json/EncodeToDynamicTest.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,10 +92,9 @@ class EncodeToDynamicTest {
9292
WITH_SERIALNAME_red
9393
}
9494

95-
@Serializable
95+
@Serializable(MyFancyClass.Companion::class)
9696
data class MyFancyClass(val value: String) {
9797

98-
@Serializer(forClass = MyFancyClass::class)
9998
companion object : KSerializer<MyFancyClass> {
10099

101100
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("MyFancyClass", PrimitiveKind.STRING)

formats/json-tests/jvmTest/src/kotlinx/serialization/SerializeJavaClassTest.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import java.text.SimpleDateFormat
1313
import java.util.*
1414
import kotlin.test.assertEquals
1515

16-
@Serializer(forClass = Date::class)
1716
object DateSerializer : KSerializer<Date> {
1817
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("java.util.Date", PrimitiveKind.STRING)
1918

formats/json-tests/jvmTest/src/kotlinx/serialization/features/SerializerByTypeTest.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@ class SerializerByTypeTest {
2727
@Serializable
2828
data class Data(val l: List<String>, val b: Box<Int>)
2929

30-
@Serializable
30+
@Serializable(WithCustomDefault.Companion::class)
3131
data class WithCustomDefault(val n: Int) {
32-
@Serializer(forClass = WithCustomDefault::class)
33-
companion object {
32+
33+
companion object: KSerializer<WithCustomDefault> {
3434
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("WithCustomDefault", PrimitiveKind.INT)
3535
override fun serialize(encoder: Encoder, value: WithCustomDefault) = encoder.encodeInt(value.n)
3636
override fun deserialize(decoder: Decoder) = WithCustomDefault(decoder.decodeInt())

formats/json/commonMain/src/kotlinx/serialization/json/JsonElementSerializers.kt

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import kotlinx.serialization.encoding.*
1313
import kotlinx.serialization.json.internal.JsonDecodingException
1414

1515
/**
16-
* External [Serializer] object providing [SerializationStrategy] and [DeserializationStrategy] for [JsonElement].
16+
* Serializer object providing [SerializationStrategy] and [DeserializationStrategy] for [JsonElement].
1717
* It can only be used by with [Json] format an its input ([JsonDecoder] and [JsonEncoder]).
1818
* Currently, this hierarchy has no guarantees on descriptor content.
1919
*
@@ -24,7 +24,6 @@ import kotlinx.serialization.json.internal.JsonDecodingException
2424
* assertEquals(JsonObject(mapOf("key" to JsonLiteral(1.0))), literal)
2525
* ```
2626
*/
27-
@Serializer(forClass = JsonElement::class)
2827
@PublishedApi
2928
internal object JsonElementSerializer : KSerializer<JsonElement> {
3029
override val descriptor: SerialDescriptor =
@@ -53,10 +52,9 @@ internal object JsonElementSerializer : KSerializer<JsonElement> {
5352
}
5453

5554
/**
56-
* External [Serializer] object providing [SerializationStrategy] and [DeserializationStrategy] for [JsonPrimitive].
55+
* Serializer object providing [SerializationStrategy] and [DeserializationStrategy] for [JsonPrimitive].
5756
* It can only be used by with [Json] format an its input ([JsonDecoder] and [JsonEncoder]).
5857
*/
59-
@Serializer(forClass = JsonPrimitive::class)
6058
@PublishedApi
6159
internal object JsonPrimitiveSerializer : KSerializer<JsonPrimitive> {
6260
override val descriptor: SerialDescriptor =
@@ -79,10 +77,9 @@ internal object JsonPrimitiveSerializer : KSerializer<JsonPrimitive> {
7977
}
8078

8179
/**
82-
* External [Serializer] object providing [SerializationStrategy] and [DeserializationStrategy] for [JsonNull].
80+
* Serializer object providing [SerializationStrategy] and [DeserializationStrategy] for [JsonNull].
8381
* It can only be used by with [Json] format an its input ([JsonDecoder] and [JsonEncoder]).
8482
*/
85-
@Serializer(forClass = JsonNull::class)
8683
@PublishedApi
8784
internal object JsonNullSerializer : KSerializer<JsonNull> {
8885
// technically, JsonNull is an object, but it does not call beginStructure/endStructure at all
@@ -142,10 +139,9 @@ private object JsonLiteralSerializer : KSerializer<JsonLiteral> {
142139
}
143140

144141
/**
145-
* External [Serializer] object providing [SerializationStrategy] and [DeserializationStrategy] for [JsonObject].
142+
* Serializer object providing [SerializationStrategy] and [DeserializationStrategy] for [JsonObject].
146143
* It can only be used by with [Json] format an its input ([JsonDecoder] and [JsonEncoder]).
147144
*/
148-
@Serializer(forClass = JsonObject::class)
149145
@PublishedApi
150146
internal object JsonObjectSerializer : KSerializer<JsonObject> {
151147

@@ -168,10 +164,9 @@ internal object JsonObjectSerializer : KSerializer<JsonObject> {
168164
}
169165

170166
/**
171-
* External [Serializer] object providing [SerializationStrategy] and [DeserializationStrategy] for [JsonArray].
167+
* Serializer object providing [SerializationStrategy] and [DeserializationStrategy] for [JsonArray].
172168
* It can only be used by with [Json] format an its input ([JsonDecoder] and [JsonEncoder]).
173169
*/
174-
@Serializer(forClass = JsonArray::class)
175170
@PublishedApi
176171
internal object JsonArraySerializer : KSerializer<JsonArray> {
177172

formats/protobuf/jvmTest/src/kotlinx/serialization/protobuf/PolymorphicWithJvmClassTest.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ class PolymorphicWithJvmClassTest {
1717
@Serializable
1818
data class DateWrapper(@ProtoNumber(1) @Polymorphic val date: Date)
1919

20-
@Serializer(forClass = Date::class)
2120
object DateSerializer : KSerializer<Date> {
2221
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("java.util.Date", PrimitiveKind.STRING)
2322

0 commit comments

Comments
 (0)