Skip to content

Removed redundant usages of @Serializer annotations #2200

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Feb 24, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,7 @@ class SerializersLookupEnumTest {
@Serializable(with = EnumExternalObjectSerializer::class)
enum class EnumExternalObject

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

override fun serialize(encoder: Encoder, value: EnumExternalObject) {
Expand All @@ -29,11 +28,10 @@ class SerializersLookupEnumTest {
}
}

@Serializable(with = EnumExternalClassSerializer::class)
@Serializable(with = EnumCustomClassSerializer::class)
enum class EnumExternalClass

@Serializer(forClass = EnumExternalClass::class)
class EnumExternalClassSerializer {
class EnumCustomClassSerializer: KSerializer<EnumExternalClass> {
override val descriptor: SerialDescriptor = buildSerialDescriptor("tmp", SerialKind.ENUM)

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

@Test
fun testEnumExternalClass() {
assertIs<EnumExternalClassSerializer>(EnumExternalClass.serializer())
assertIs<EnumExternalClassSerializer>(serializer<EnumExternalClass>())
assertIs<EnumCustomClassSerializer>(EnumExternalClass.serializer())
assertIs<EnumCustomClassSerializer>(serializer<EnumExternalClass>())
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,10 @@ import kotlin.test.*

@Suppress("RemoveExplicitTypeArguments") // This is exactly what's being tested
class SerializersLookupObjectTest {
@Serializable(with = ObjectExternalObjectSerializer::class)
@Serializable(with = ObjectCustomObjectSerializer::class)
object ObjectExternalObject

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

override fun serialize(encoder: Encoder, value: ObjectExternalObject) {
Expand All @@ -27,11 +26,10 @@ class SerializersLookupObjectTest {
}
}

@Serializable(with = ObjectExternalClassSerializer::class)
@Serializable(with = ObjectCustomClassSerializer::class)
object ObjectExternalClass

@Serializer(forClass = ObjectExternalClass::class)
class ObjectExternalClassSerializer {
class ObjectCustomClassSerializer: KSerializer<ObjectExternalClass> {
override val descriptor: SerialDescriptor = buildSerialDescriptor("tmp", StructureKind.OBJECT)

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

@Test
fun testObjectExternalObject() {
assertSame(ObjectExternalObjectSerializer, ObjectExternalObject.serializer())
assertSame(ObjectCustomObjectSerializer, ObjectExternalObject.serializer())
if (!isJsLegacy()) {
assertSame(ObjectExternalObjectSerializer, serializer<ObjectExternalObject>())
assertSame(ObjectCustomObjectSerializer, serializer<ObjectExternalObject>())
}
}

@Test
fun testObjectExternalClass() {
assertIs<ObjectExternalClassSerializer>(ObjectExternalClass.serializer())
assertIs<ObjectCustomClassSerializer>(ObjectExternalClass.serializer())

if (!isJsLegacy()) {
assertIs<ObjectExternalClassSerializer>(serializer<ObjectExternalClass>())
assertIs<ObjectCustomClassSerializer>(serializer<ObjectExternalClass>())
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ class EncodingExtensionsTest {
@Serializable(with = BoxSerializer::class)
class Box(val i: Int)

@Serializer(forClass = Box::class)
object BoxSerializer : KSerializer<Box> {
override val descriptor: SerialDescriptor = buildClassSerialDescriptor("Box") {
element<Int>("i")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@ class EnumSerializationTest : JsonTestBase() {
TWO
}

@Serializer(WithCustom::class)
private class CustomEnumSerializer : KSerializer<WithCustom> {
override val descriptor: SerialDescriptor = buildSerialDescriptor("WithCustom", SerialKind.ENUM) {
element("1", buildSerialDescriptor("WithCustom.1", StructureKind.OBJECT))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,6 @@ class NotNullSerializersCompatibilityOnFileTest {
@Serializable
data class Holder(val nullable: Int?, val nonNullable: Int)

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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ class SerializationForNullableTypeOnFileTest {
@Serializable
data class Holder(val nullable: Int?, val nonNullable: Int)

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

Expand All @@ -34,7 +33,6 @@ class SerializationForNullableTypeOnFileTest {
}
}

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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ public class SerializerForNullableTypeTest : JsonTestBase() {
@Serializable(with = StringHolderSerializer::class)
data class StringHolder(val s: String)

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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,8 @@ import kotlin.test.Test
import kotlin.test.assertEquals

class BinaryPayloadExampleTest {
@Serializable
@Serializable(BinaryPayload.Companion::class)
class BinaryPayload(val req: ByteArray, val res: ByteArray) {
@Serializer(forClass = BinaryPayload::class)
companion object : KSerializer<BinaryPayload> {
override val descriptor: SerialDescriptor = buildClassSerialDescriptor("BinaryPayload") {
element("req", ByteArraySerializer().descriptor)
Expand Down Expand Up @@ -73,6 +72,7 @@ class BinaryPayloadExampleTest {
fun payloadEquivalence() {
val payload1 = BinaryPayload(byteArrayOf(0, 0, 0), byteArrayOf(127, 127))
val s = Json.encodeToString(BinaryPayload.serializer(), payload1)
assertEquals("""{"req":"000000","res":"7F7F"}""", s)
val payload2 = Json.decodeFromString(BinaryPayload.serializer(), s)
assertEquals(payload1, payload2)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ class CheckedData<T : Any>(val data: T, val checkSum: ByteArray) {
}
}

@Serializer(forClass = CheckedData::class)
class CheckedDataSerializer<T : Any>(private val dataSerializer: KSerializer<T>) : KSerializer<CheckedData<T>> {
override val descriptor: SerialDescriptor = buildClassSerialDescriptor("CheckedDataSerializer") {
val dataDescriptor = dataSerializer.descriptor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,7 @@ data class SimpleContainerForUInt(val i: UInt)
@JvmInline
value class MyUInt(val m: Int)

@Serializer(forClass = MyUInt::class)
object MyUIntSerializer {
object MyUIntSerializer: KSerializer<MyUInt> {
override val descriptor = UInt.serializer().descriptor
override fun serialize(encoder: Encoder, value: MyUInt) {
encoder.encodeInline(descriptor).encodeInt(value.m)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ value class ComplexCarrier(val c: IntData)
value class PrimitiveCarrier(val c: String)

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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ class MapLikeSerializerTest : JsonTestBase() {
@Serializable
data class StringPair(val a: String, val b: String)

@Serializer(forClass = StringPair::class)
object StringPairSerializer : KSerializer<StringPair> {

override val descriptor: SerialDescriptor = buildSerialDescriptor("package.StringPair", StructureKind.MAP) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,10 +92,9 @@ class EncodeToDynamicTest {
WITH_SERIALNAME_red
}

@Serializable
@Serializable(MyFancyClass.Companion::class)
data class MyFancyClass(val value: String) {

@Serializer(forClass = MyFancyClass::class)
companion object : KSerializer<MyFancyClass> {

override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("MyFancyClass", PrimitiveKind.STRING)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ import java.text.SimpleDateFormat
import java.util.*
import kotlin.test.assertEquals

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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,10 @@ class SerializerByTypeTest {
@Serializable
data class Data(val l: List<String>, val b: Box<Int>)

@Serializable
@Serializable(WithCustomDefault.Companion::class)
data class WithCustomDefault(val n: Int) {
@Serializer(forClass = WithCustomDefault::class)
companion object {

companion object: KSerializer<WithCustomDefault> {
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("WithCustomDefault", PrimitiveKind.INT)
override fun serialize(encoder: Encoder, value: WithCustomDefault) = encoder.encodeInt(value.n)
override fun deserialize(decoder: Decoder) = WithCustomDefault(decoder.decodeInt())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import kotlinx.serialization.encoding.*
import kotlinx.serialization.json.internal.JsonDecodingException

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

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

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

/**
* External [Serializer] object providing [SerializationStrategy] and [DeserializationStrategy] for [JsonObject].
* Serializer object providing [SerializationStrategy] and [DeserializationStrategy] for [JsonObject].
* It can only be used by with [Json] format an its input ([JsonDecoder] and [JsonEncoder]).
*/
@Serializer(forClass = JsonObject::class)
@PublishedApi
internal object JsonObjectSerializer : KSerializer<JsonObject> {

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

/**
* External [Serializer] object providing [SerializationStrategy] and [DeserializationStrategy] for [JsonArray].
* Serializer object providing [SerializationStrategy] and [DeserializationStrategy] for [JsonArray].
* It can only be used by with [Json] format an its input ([JsonDecoder] and [JsonEncoder]).
*/
@Serializer(forClass = JsonArray::class)
@PublishedApi
internal object JsonArraySerializer : KSerializer<JsonArray> {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ class PolymorphicWithJvmClassTest {
@Serializable
data class DateWrapper(@ProtoNumber(1) @Polymorphic val date: Date)

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

Expand Down