summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVsevolod Tolstopyatov <qwwdfsad@gmail.com>2020-07-08 15:19:21 +0300
committerVsevolod Tolstopyatov <qwwdfsad@gmail.com>2020-07-09 11:17:34 -0700
commit5a991a6d6e768e678eefba159796aef0a4a8b396 (patch)
tree3fbf80e8b2c93df42d7b09598d3fada23d271ca5
parentaac42459d9b5725847965a6f83a8b0e247ae77ad (diff)
downloadkotlinx.serialization-5a991a6d6e768e678eefba159796aef0a4a8b396.tar.gz
[API stabilization] Builtin package stabilization
* Deprecate redundant extensions * Merge all serializers into single file * Extract AbstractDecoder and AbstractEncoder to a separate package
-rw-r--r--formats/cbor/commonMain/src/kotlinx/serialization/cbor/Cbor.kt2
-rw-r--r--formats/cbor/jvmTest/src/kotlinx/serialization/cbor/CborCompatibilityTest.kt18
-rw-r--r--formats/protobuf/commonTest/src/kotlinx/serialization/protobuf/CustomizedSerializableTestClasses.kt13
-rw-r--r--runtime/api/kotlinx-serialization-runtime.api101
-rw-r--r--runtime/commonMain/src/kotlinx/serialization/Migrations.kt9
-rw-r--r--runtime/commonMain/src/kotlinx/serialization/builtins/BuiltinSerializers.kt139
-rw-r--r--runtime/commonMain/src/kotlinx/serialization/builtins/BuiltinsMigrations.kt31
-rw-r--r--runtime/commonMain/src/kotlinx/serialization/builtins/CollectionSerializers.kt42
-rw-r--r--runtime/commonMain/src/kotlinx/serialization/builtins/PrimitiveSerializers.kt136
-rw-r--r--runtime/commonMain/src/kotlinx/serialization/encoding/AbstractDecoder.kt (renamed from runtime/commonMain/src/kotlinx/serialization/builtins/AbstractDecoder.kt)3
-rw-r--r--runtime/commonMain/src/kotlinx/serialization/encoding/AbstractEncoder.kt (renamed from runtime/commonMain/src/kotlinx/serialization/builtins/AbstractEncoder.kt)3
-rw-r--r--runtime/commonMain/src/kotlinx/serialization/json/internal/StreamingJsonDecoder.kt2
-rw-r--r--runtime/commonMain/src/kotlinx/serialization/json/internal/StreamingJsonEncoder.kt2
-rw-r--r--runtime/commonTest/src/kotlinx/serialization/BasicTypesSerializationTest.kt2
-rw-r--r--runtime/commonTest/src/kotlinx/serialization/UnknownElementIndexTest.kt2
-rw-r--r--runtime/commonTest/src/kotlinx/serialization/features/SealedClassesSerializationTest.kt12
-rw-r--r--runtime/commonTest/src/kotlinx/serialization/json/JsonCustomSerializersTest.kt16
-rw-r--r--runtime/commonTest/src/kotlinx/serialization/json/JsonTransformingSerializerTest.kt2
-rw-r--r--runtime/jsMain/src/kotlinx/serialization/DynamicObjectSerializer.kt8
-rw-r--r--runtime/jsTest/src/kotlinx/serialization/DynamicSerializerTest.kt2
-rw-r--r--runtime/jvmTest/src/kotlinx/serialization/SerializationMethodInvocationOrderTest.kt2
-rw-r--r--runtime/jvmTest/src/kotlinx/serialization/SerializeFlatTest.kt2
-rw-r--r--runtime/jvmTest/src/kotlinx/serialization/features/JsonUpdateCustomTest.kt2
23 files changed, 273 insertions, 278 deletions
diff --git a/formats/cbor/commonMain/src/kotlinx/serialization/cbor/Cbor.kt b/formats/cbor/commonMain/src/kotlinx/serialization/cbor/Cbor.kt
index 95489de6..ccb0c1c3 100644
--- a/formats/cbor/commonMain/src/kotlinx/serialization/cbor/Cbor.kt
+++ b/formats/cbor/commonMain/src/kotlinx/serialization/cbor/Cbor.kt
@@ -6,9 +6,9 @@ package kotlinx.serialization.cbor
import kotlinx.serialization.*
import kotlinx.serialization.CompositeDecoder.Companion.READ_DONE
-import kotlinx.serialization.builtins.*
import kotlinx.serialization.cbor.internal.ByteArrayInput
import kotlinx.serialization.cbor.internal.ByteArrayOutput
+import kotlinx.serialization.encoding.*
import kotlinx.serialization.modules.*
import kotlin.experimental.*
diff --git a/formats/cbor/jvmTest/src/kotlinx/serialization/cbor/CborCompatibilityTest.kt b/formats/cbor/jvmTest/src/kotlinx/serialization/cbor/CborCompatibilityTest.kt
index 76248f8b..4c599369 100644
--- a/formats/cbor/jvmTest/src/kotlinx/serialization/cbor/CborCompatibilityTest.kt
+++ b/formats/cbor/jvmTest/src/kotlinx/serialization/cbor/CborCompatibilityTest.kt
@@ -4,11 +4,11 @@
package kotlinx.serialization.cbor
-import com.upokecenter.cbor.CBORObject
+import com.upokecenter.cbor.*
import kotlinx.serialization.*
import kotlinx.serialization.builtins.*
import org.junit.Test
-import kotlin.test.assertEquals
+import kotlin.test.*
class CborCompatibilityTest {
@@ -43,11 +43,13 @@ class CborCompatibilityTest {
@Test
fun basicListFromAnotherLibrary() {
- compare(listOf(
- SomeClass(1),
- SomeClass(2),
- SomeClass(3)
- ), SomeClass.serializer().list)
+ compare(
+ listOf(
+ SomeClass(1),
+ SomeClass(2),
+ SomeClass(3)
+ ), ListSerializer(SomeClass.serializer())
+ )
}
@Test
@@ -71,7 +73,7 @@ class CborCompatibilityTest {
30,
mapOf("40" to IntData(40), "50" to IntData(50))
)
- val serial = SomeComplexClass.serializer(Int.serializer().list)
+ val serial = SomeComplexClass.serializer(ListSerializer(Int.serializer()))
compare(obj, serial)
}
}
diff --git a/formats/protobuf/commonTest/src/kotlinx/serialization/protobuf/CustomizedSerializableTestClasses.kt b/formats/protobuf/commonTest/src/kotlinx/serialization/protobuf/CustomizedSerializableTestClasses.kt
index 4f8b9b98..6c307e55 100644
--- a/formats/protobuf/commonTest/src/kotlinx/serialization/protobuf/CustomizedSerializableTestClasses.kt
+++ b/formats/protobuf/commonTest/src/kotlinx/serialization/protobuf/CustomizedSerializableTestClasses.kt
@@ -49,7 +49,7 @@ data class CList2(@ProtoId(1) val d: Int = 5, @ProtoId(2) val c: List<C>) {
companion object: KSerializer<CList2> {
override fun serialize(encoder: Encoder, value: CList2) {
val elemOutput = encoder.beginStructure(descriptor)
- elemOutput.encodeSerializableElement(descriptor, 1, C.list, value.c)
+ elemOutput.encodeSerializableElement(descriptor, 1, ListSerializer(C), value.c)
if (value.d != 5) elemOutput.encodeIntElement(descriptor, 0, value.d)
elemOutput.endStructure(descriptor)
}
@@ -62,7 +62,7 @@ data class CList3(@ProtoId(1) val e: List<C> = emptyList(), @ProtoId(2) val f: I
companion object: KSerializer<CList3> {
override fun serialize(encoder: Encoder, value: CList3) {
val elemOutput = encoder.beginStructure(descriptor)
- if (value.e.isNotEmpty()) elemOutput.encodeSerializableElement(descriptor, 0, C.list, value.e)
+ if (value.e.isNotEmpty()) elemOutput.encodeSerializableElement(descriptor, 0, ListSerializer(C), value.e)
elemOutput.encodeIntElement(descriptor, 1, value.f)
elemOutput.endStructure(descriptor)
}
@@ -76,7 +76,7 @@ data class CList4(@ProtoId(1) val g: List<C> = emptyList(), @ProtoId(2) val h: I
override fun serialize(encoder: Encoder, value: CList4) {
val elemOutput = encoder.beginStructure(descriptor)
elemOutput.encodeIntElement(descriptor, 1, value.h)
- if (value.g.isNotEmpty()) elemOutput.encodeSerializableElement(descriptor, 0, C.list, value.g)
+ if (value.g.isNotEmpty()) elemOutput.encodeSerializableElement(descriptor, 0, ListSerializer(C), value.g)
elemOutput.endStructure(descriptor)
}
}
@@ -89,8 +89,11 @@ data class CList5(@ProtoId(1) val g: List<Int> = emptyList(), @ProtoId(2) val h:
override fun serialize(encoder: Encoder, value: CList5) {
val elemOutput = encoder.beginStructure(descriptor)
elemOutput.encodeIntElement(descriptor, 1, value.h)
- if (value.g.isNotEmpty()) elemOutput.encodeSerializableElement(descriptor, 0, Int.serializer().list,
- value.g)
+ if (value.g.isNotEmpty()) elemOutput.encodeSerializableElement(
+ descriptor, 0,
+ ListSerializer(Int.serializer()),
+ value.g
+ )
elemOutput.endStructure(descriptor)
}
}
diff --git a/runtime/api/kotlinx-serialization-runtime.api b/runtime/api/kotlinx-serialization-runtime.api
index 92424972..e7beec7f 100644
--- a/runtime/api/kotlinx-serialization-runtime.api
+++ b/runtime/api/kotlinx-serialization-runtime.api
@@ -473,7 +473,53 @@ public abstract interface annotation class kotlinx/serialization/UseSerializers
public abstract fun serializerClasses ()[Ljava/lang/Class;
}
-public abstract class kotlinx/serialization/builtins/AbstractDecoder : kotlinx/serialization/CompositeDecoder, kotlinx/serialization/Decoder {
+public final class kotlinx/serialization/builtins/BuiltinSerializersKt {
+ public static final fun ArraySerializer (Lkotlin/reflect/KClass;Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;
+ public static final fun BooleanArraySerializer ()Lkotlinx/serialization/KSerializer;
+ public static final fun ByteArraySerializer ()Lkotlinx/serialization/KSerializer;
+ public static final fun CharArraySerializer ()Lkotlinx/serialization/KSerializer;
+ public static final fun DoubleArraySerializer ()Lkotlinx/serialization/KSerializer;
+ public static final fun FloatArraySerializer ()Lkotlinx/serialization/KSerializer;
+ public static final fun IntArraySerializer ()Lkotlinx/serialization/KSerializer;
+ public static final fun ListSerializer (Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;
+ public static final fun LongArraySerializer ()Lkotlinx/serialization/KSerializer;
+ public static final fun MapEntrySerializer (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;
+ public static final fun MapSerializer (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;
+ public static final fun PairSerializer (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;
+ public static final fun SetSerializer (Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;
+ public static final fun ShortArraySerializer ()Lkotlinx/serialization/KSerializer;
+ public static final fun TripleSerializer (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;
+ public static final fun getNullable (Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;
+ public static final fun serializer (Lkotlin/Unit;)Lkotlinx/serialization/KSerializer;
+ public static final fun serializer (Lkotlin/jvm/internal/BooleanCompanionObject;)Lkotlinx/serialization/KSerializer;
+ public static final fun serializer (Lkotlin/jvm/internal/ByteCompanionObject;)Lkotlinx/serialization/KSerializer;
+ public static final fun serializer (Lkotlin/jvm/internal/CharCompanionObject;)Lkotlinx/serialization/KSerializer;
+ public static final fun serializer (Lkotlin/jvm/internal/DoubleCompanionObject;)Lkotlinx/serialization/KSerializer;
+ public static final fun serializer (Lkotlin/jvm/internal/FloatCompanionObject;)Lkotlinx/serialization/KSerializer;
+ public static final fun serializer (Lkotlin/jvm/internal/IntCompanionObject;)Lkotlinx/serialization/KSerializer;
+ public static final fun serializer (Lkotlin/jvm/internal/LongCompanionObject;)Lkotlinx/serialization/KSerializer;
+ public static final fun serializer (Lkotlin/jvm/internal/ShortCompanionObject;)Lkotlinx/serialization/KSerializer;
+ public static final fun serializer (Lkotlin/jvm/internal/StringCompanionObject;)Lkotlinx/serialization/KSerializer;
+}
+
+public final class kotlinx/serialization/builtins/BuiltinsMigrationsKt {
+ public static final fun UnitSerializer ()Lkotlinx/serialization/KSerializer;
+ public static final fun getList (Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;
+ public static final fun getSet (Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;
+}
+
+public final class kotlinx/serialization/builtins/LongAsStringSerializer : kotlinx/serialization/KSerializer {
+ public static final field INSTANCE Lkotlinx/serialization/builtins/LongAsStringSerializer;
+ public fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Long;
+ public synthetic fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Object;
+ public fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+ public fun patch (Lkotlinx/serialization/Decoder;J)Ljava/lang/Long;
+ public synthetic fun patch (Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
+ public fun serialize (Lkotlinx/serialization/Encoder;J)V
+ public synthetic fun serialize (Lkotlinx/serialization/Encoder;Ljava/lang/Object;)V
+}
+
+public abstract class kotlinx/serialization/encoding/AbstractDecoder : kotlinx/serialization/CompositeDecoder, kotlinx/serialization/Decoder {
public fun <init> ()V
public fun beginStructure (Lkotlinx/serialization/SerialDescriptor;)Lkotlinx/serialization/CompositeDecoder;
public fun beginStructure (Lkotlinx/serialization/SerialDescriptor;[Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/CompositeDecoder;
@@ -503,7 +549,7 @@ public abstract class kotlinx/serialization/builtins/AbstractDecoder : kotlinx/s
public final fun decodeSerializableElement (Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;
public fun decodeSerializableValue (Lkotlinx/serialization/DeserializationStrategy;)Ljava/lang/Object;
public fun decodeSerializableValue (Lkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;
- public static synthetic fun decodeSerializableValue$default (Lkotlinx/serialization/builtins/AbstractDecoder;Lkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;ILjava/lang/Object;)Ljava/lang/Object;
+ public static synthetic fun decodeSerializableValue$default (Lkotlinx/serialization/encoding/AbstractDecoder;Lkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;ILjava/lang/Object;)Ljava/lang/Object;
public fun decodeShort ()S
public final fun decodeShortElement (Lkotlinx/serialization/SerialDescriptor;I)S
public fun decodeString ()Ljava/lang/String;
@@ -520,7 +566,7 @@ public abstract class kotlinx/serialization/builtins/AbstractDecoder : kotlinx/s
public fun updateSerializableValue (Lkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;
}
-public abstract class kotlinx/serialization/builtins/AbstractEncoder : kotlinx/serialization/CompositeEncoder, kotlinx/serialization/Encoder {
+public abstract class kotlinx/serialization/encoding/AbstractEncoder : kotlinx/serialization/CompositeEncoder, kotlinx/serialization/Encoder {
public fun <init> ()V
public fun beginCollection (Lkotlinx/serialization/SerialDescriptor;I)Lkotlinx/serialization/CompositeEncoder;
public fun beginCollection (Lkotlinx/serialization/SerialDescriptor;I[Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/CompositeEncoder;
@@ -560,55 +606,6 @@ public abstract class kotlinx/serialization/builtins/AbstractEncoder : kotlinx/s
public fun shouldEncodeElementDefault (Lkotlinx/serialization/SerialDescriptor;I)Z
}
-public final class kotlinx/serialization/builtins/BuiltinSerializersKt {
- public static final fun MapEntrySerializer (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;
- public static final fun PairSerializer (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;
- public static final fun TripleSerializer (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;
- public static final fun getNullable (Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;
-}
-
-public final class kotlinx/serialization/builtins/CollectionSerializersKt {
- public static final fun ListSerializer (Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;
- public static final fun MapSerializer (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;
- public static final fun SetSerializer (Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;
- public static final fun getList (Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;
- public static final fun getSet (Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;
-}
-
-public final class kotlinx/serialization/builtins/LongAsStringSerializer : kotlinx/serialization/KSerializer {
- public static final field INSTANCE Lkotlinx/serialization/builtins/LongAsStringSerializer;
- public fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Long;
- public synthetic fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Object;
- public fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
- public fun patch (Lkotlinx/serialization/Decoder;J)Ljava/lang/Long;
- public synthetic fun patch (Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
- public fun serialize (Lkotlinx/serialization/Encoder;J)V
- public synthetic fun serialize (Lkotlinx/serialization/Encoder;Ljava/lang/Object;)V
-}
-
-public final class kotlinx/serialization/builtins/PrimitiveSerializersKt {
- public static final fun ArraySerializer (Lkotlin/reflect/KClass;Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;
- public static final fun BooleanArraySerializer ()Lkotlinx/serialization/KSerializer;
- public static final fun ByteArraySerializer ()Lkotlinx/serialization/KSerializer;
- public static final fun CharArraySerializer ()Lkotlinx/serialization/KSerializer;
- public static final fun DoubleArraySerializer ()Lkotlinx/serialization/KSerializer;
- public static final fun FloatArraySerializer ()Lkotlinx/serialization/KSerializer;
- public static final fun IntArraySerializer ()Lkotlinx/serialization/KSerializer;
- public static final fun LongArraySerializer ()Lkotlinx/serialization/KSerializer;
- public static final fun ShortArraySerializer ()Lkotlinx/serialization/KSerializer;
- public static final fun UnitSerializer ()Lkotlinx/serialization/KSerializer;
- public static final fun serializer (Lkotlin/Unit;)Lkotlinx/serialization/KSerializer;
- public static final fun serializer (Lkotlin/jvm/internal/BooleanCompanionObject;)Lkotlinx/serialization/KSerializer;
- public static final fun serializer (Lkotlin/jvm/internal/ByteCompanionObject;)Lkotlinx/serialization/KSerializer;
- public static final fun serializer (Lkotlin/jvm/internal/CharCompanionObject;)Lkotlinx/serialization/KSerializer;
- public static final fun serializer (Lkotlin/jvm/internal/DoubleCompanionObject;)Lkotlinx/serialization/KSerializer;
- public static final fun serializer (Lkotlin/jvm/internal/FloatCompanionObject;)Lkotlinx/serialization/KSerializer;
- public static final fun serializer (Lkotlin/jvm/internal/IntCompanionObject;)Lkotlinx/serialization/KSerializer;
- public static final fun serializer (Lkotlin/jvm/internal/LongCompanionObject;)Lkotlinx/serialization/KSerializer;
- public static final fun serializer (Lkotlin/jvm/internal/ShortCompanionObject;)Lkotlinx/serialization/KSerializer;
- public static final fun serializer (Lkotlin/jvm/internal/StringCompanionObject;)Lkotlinx/serialization/KSerializer;
-}
-
public abstract class kotlinx/serialization/internal/AbstractCollectionSerializer : kotlinx/serialization/KSerializer {
protected abstract fun builder ()Ljava/lang/Object;
protected abstract fun builderSize (Ljava/lang/Object;)I
diff --git a/runtime/commonMain/src/kotlinx/serialization/Migrations.kt b/runtime/commonMain/src/kotlinx/serialization/Migrations.kt
index 38e8a044..65f54cff 100644
--- a/runtime/commonMain/src/kotlinx/serialization/Migrations.kt
+++ b/runtime/commonMain/src/kotlinx/serialization/Migrations.kt
@@ -5,6 +5,7 @@
package kotlinx.serialization
import kotlinx.serialization.builtins.*
+import kotlinx.serialization.encoding.*
import kotlinx.serialization.internal.*
import kotlinx.serialization.modules.*
import kotlin.internal.*
@@ -71,13 +72,13 @@ public val <K, V> Pair<KSerializer<K>, KSerializer<V>>.map: KSerializer<Map<K, V
@Deprecated(
"Renamed to AbstractEncoder",
- replaceWith = ReplaceWith("AbstractEncoder", imports = ["kotlinx.serialization.builtins.AbstractEncoder"])
+ replaceWith = ReplaceWith("AbstractEncoder", imports = ["kotlinx.serialization.encoding.AbstractEncoder"])
)
public typealias ElementValueEncoder = AbstractEncoder
@Deprecated(
"Renamed to AbstractDecoder",
- replaceWith = ReplaceWith("AbstractDecoder", imports = ["kotlinx.serialization.builtins.AbstractDecoder"])
+ replaceWith = ReplaceWith("AbstractDecoder", imports = ["kotlinx.serialization.encoding.AbstractDecoder"])
)
public typealias ElementValueDecoder = AbstractDecoder
@@ -110,7 +111,7 @@ public annotation class SerialId @Deprecated(
@Deprecated(level = DeprecationLevel.WARNING, message = "Use default parse overload instead", replaceWith = ReplaceWith("parse(objects)"))
public inline fun <reified T : Any> StringFormat.parseList(objects: String): List<T> =
- decodeFromString(context.getContextualOrDefault<T>().list, objects)
+ decodeFromString(ListSerializer(context.getContextualOrDefault<T>()), objects)
@Deprecated(
level = DeprecationLevel.WARNING,
@@ -129,7 +130,7 @@ public inline fun <reified K : Any, reified V : Any> StringFormat.parseMap(map:
replaceWith = ReplaceWith("encodeToString(objects)")
)
public inline fun <reified T : Any> StringFormat.stringify(objects: List<T>): String =
- encodeToString(context.getContextualOrDefault<T>().list, objects)
+ encodeToString(ListSerializer(context.getContextualOrDefault<T>()), objects)
@LowPriorityInOverloadResolution
@Deprecated(
diff --git a/runtime/commonMain/src/kotlinx/serialization/builtins/BuiltinSerializers.kt b/runtime/commonMain/src/kotlinx/serialization/builtins/BuiltinSerializers.kt
index 7b0875ba..bb7dcdc2 100644
--- a/runtime/commonMain/src/kotlinx/serialization/builtins/BuiltinSerializers.kt
+++ b/runtime/commonMain/src/kotlinx/serialization/builtins/BuiltinSerializers.kt
@@ -7,6 +7,7 @@ package kotlinx.serialization.builtins
import kotlinx.serialization.*
import kotlinx.serialization.internal.*
+import kotlin.reflect.*
/**
* Returns a nullable serializer for the given serializer of non-null type.
@@ -47,3 +48,141 @@ public fun <A, B, C> TripleSerializer(
cSerializer: KSerializer<C>
): KSerializer<Triple<A, B, C>> = kotlinx.serialization.internal.TripleSerializer(aSerializer, bSerializer, cSerializer)
+/**
+ * Returns serializer for [Char] with [descriptor][SerialDescriptor] of [PrimitiveKind.CHAR] kind.
+ */
+public fun Char.Companion.serializer(): KSerializer<Char> = CharSerializer
+
+/**
+ * Returns serializer for [CharArray] with [descriptor][SerialDescriptor] of [StructureKind.LIST] kind.
+ * Each element of the array is serialized one by one with [Char.Companion.serializer].
+ */
+@Suppress("UNCHECKED_CAST")
+public fun CharArraySerializer(): KSerializer<CharArray> = CharArraySerializer
+
+/**
+ * Returns serializer for [Byte] with [descriptor][SerialDescriptor] of [PrimitiveKind.BYTE] kind.
+ */
+public fun Byte.Companion.serializer(): KSerializer<Byte> = ByteSerializer
+
+/**
+ * Returns serializer for [ByteArray] with [descriptor][SerialDescriptor] of [StructureKind.LIST] kind.
+ * Each element of the array is serialized one by one with [Byte.Companion.serializer].
+ */
+public fun ByteArraySerializer(): KSerializer<ByteArray> = ByteArraySerializer
+
+/**
+ * Returns serializer for [Short] with [descriptor][SerialDescriptor] of [PrimitiveKind.SHORT] kind.
+ */
+public fun Short.Companion.serializer(): KSerializer<Short> = ShortSerializer
+
+/**
+ * Returns serializer for [ShortArray] with [descriptor][SerialDescriptor] of [StructureKind.LIST] kind.
+ * Each element of the array is serialized one by one with [Short.Companion.serializer].
+ */
+public fun ShortArraySerializer(): KSerializer<ShortArray> = ShortArraySerializer
+
+/**
+ * Returns serializer for [Int] with [descriptor][SerialDescriptor] of [PrimitiveKind.INT] kind.
+ */
+public fun Int.Companion.serializer(): KSerializer<Int> = IntSerializer
+
+/**
+ * Returns serializer for [IntArray] with [descriptor][SerialDescriptor] of [StructureKind.LIST] kind.
+ * Each element of the array is serialized one by one with [Int.Companion.serializer].
+ */
+public fun IntArraySerializer(): KSerializer<IntArray> = IntArraySerializer
+
+/**
+ * Returns serializer for [Long] with [descriptor][SerialDescriptor] of [PrimitiveKind.LONG] kind.
+ */
+public fun Long.Companion.serializer(): KSerializer<Long> = LongSerializer
+
+/**
+ * Returns serializer for [LongArray] with [descriptor][SerialDescriptor] of [StructureKind.LIST] kind.
+ * Each element of the array is serialized one by one with [Long.Companion.serializer].
+ */
+public fun LongArraySerializer(): KSerializer<LongArray> = LongArraySerializer
+
+/**
+ * Returns serializer for [Float] with [descriptor][SerialDescriptor] of [PrimitiveKind.FLOAT] kind.
+ */
+public fun Float.Companion.serializer(): KSerializer<Float> = FloatSerializer
+
+/**
+ * Returns serializer for [FloatArray] with [descriptor][SerialDescriptor] of [StructureKind.LIST] kind.
+ * Each element of the array is serialized one by one with [Float.Companion.serializer].
+ */
+public fun FloatArraySerializer(): KSerializer<FloatArray> = FloatArraySerializer
+
+/**
+ * Returns serializer for [Double] with [descriptor][SerialDescriptor] of [PrimitiveKind.DOUBLE] kind.
+ */
+public fun Double.Companion.serializer(): KSerializer<Double> = DoubleSerializer
+
+/**
+ * Returns serializer for [DoubleArray] with [descriptor][SerialDescriptor] of [StructureKind.LIST] kind.
+ * Each element of the array is serialized one by one with [Double.Companion.serializer].
+ */
+public fun DoubleArraySerializer(): KSerializer<DoubleArray> = DoubleArraySerializer
+
+/**
+ * Returns serializer for [Boolean] with [descriptor][SerialDescriptor] of [PrimitiveKind.BOOLEAN] kind.
+ */
+public fun Boolean.Companion.serializer(): KSerializer<Boolean> = BooleanSerializer
+
+/**
+ * Returns serializer for [BooleanArray] with [descriptor][SerialDescriptor] of [StructureKind.LIST] kind.
+ * Each element of the array is serialized one by one with [Boolean.Companion.serializer].
+ */
+public fun BooleanArraySerializer(): KSerializer<BooleanArray> = BooleanArraySerializer
+
+/**
+ * Returns serializer for [Unit] with [descriptor][SerialDescriptor] of [StructureKind.OBJECT] kind.
+ */
+@Suppress("unused")
+public fun Unit.serializer(): KSerializer<Unit> = UnitSerializer
+
+/**
+ * Returns serializer for [String] with [descriptor][SerialDescriptor] of [PrimitiveKind.STRING] kind.
+ */
+public fun String.Companion.serializer(): KSerializer<String> = StringSerializer
+
+/**
+ * Returns serializer for reference [Array] of type [E] with [descriptor][SerialDescriptor] of [StructureKind.LIST] kind.
+ * Each element of the array is serialized with the given [elementSerializer].
+ */
+@Suppress("UNCHECKED_CAST")
+public inline fun <reified T : Any, reified E : T?> ArraySerializer(elementSerializer: KSerializer<E>): KSerializer<Array<E>> =
+ ArraySerializer<T, E>(T::class, elementSerializer)
+
+/**
+ * Returns serializer for reference [Array] of type [E] with [descriptor][SerialDescriptor] of [StructureKind.LIST] kind.
+ * Each element of the array is serialized with the given [elementSerializer].
+ */
+public fun <T : Any, E : T?> ArraySerializer(
+ kClass: KClass<T>,
+ elementSerializer: KSerializer<E>
+): KSerializer<Array<E>> = ReferenceArraySerializer<T, E>(kClass, elementSerializer)
+
+/**
+ * Creates a serializer for [`List<T>`][List] for the given serializer of type [T].
+ */
+public fun <T> ListSerializer(elementSerializer: KSerializer<T>): KSerializer<List<T>> =
+ ArrayListSerializer(elementSerializer)
+
+/**
+ * Creates a serializer for [`Set<T>`][Set] for the given serializer of type [T].
+ */
+public fun <T> SetSerializer(elementSerializer: KSerializer<T>): KSerializer<Set<T>> =
+ LinkedHashSetSerializer(elementSerializer)
+
+/**
+ * Creates a serializer for [`Map<K, V>`][Map] for the given serializers for
+ * its ket type [K] and value type [V].
+ */
+public fun <K, V> MapSerializer(
+ keySerializer: KSerializer<K>,
+ valueSerializer: KSerializer<V>
+): KSerializer<Map<K, V>> = LinkedHashMapSerializer(keySerializer, valueSerializer)
+
diff --git a/runtime/commonMain/src/kotlinx/serialization/builtins/BuiltinsMigrations.kt b/runtime/commonMain/src/kotlinx/serialization/builtins/BuiltinsMigrations.kt
new file mode 100644
index 00000000..689e4af7
--- /dev/null
+++ b/runtime/commonMain/src/kotlinx/serialization/builtins/BuiltinsMigrations.kt
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2017-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
+ */
+
+package kotlinx.serialization.builtins
+
+import kotlinx.serialization.*
+import kotlinx.serialization.internal.*
+
+@Deprecated(
+ message = "Deprecated in the favour of Unit.serializer() extension",
+ level = DeprecationLevel.ERROR,
+ replaceWith = ReplaceWith("Unit.serializer()", imports = ["kotlinx.serialization.builtins.serializer"])
+)
+public fun UnitSerializer(): KSerializer<Unit> = Unit.serializer()
+
+@Deprecated(
+ message = "Deprecated during serialization 1.0 API stabilization",
+ level = DeprecationLevel.ERROR,
+ replaceWith = ReplaceWith("ListSerializer(this)")
+)
+public val <T> KSerializer<T>.list: KSerializer<List<T>>
+ get() = ListSerializer(this)
+
+@Deprecated(
+ message = "Deprecated during serialization 1.0 API stabilization",
+ level = DeprecationLevel.ERROR,
+ replaceWith = ReplaceWith("SetSerializer(this)")
+)
+public val <T> KSerializer<T>.set: KSerializer<Set<T>>
+ get() = SetSerializer(this)
diff --git a/runtime/commonMain/src/kotlinx/serialization/builtins/CollectionSerializers.kt b/runtime/commonMain/src/kotlinx/serialization/builtins/CollectionSerializers.kt
deleted file mode 100644
index 5fc70fc0..00000000
--- a/runtime/commonMain/src/kotlinx/serialization/builtins/CollectionSerializers.kt
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2017-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
- */
-@file:Suppress("DEPRECATION_ERROR", "FunctionName")
-
-package kotlinx.serialization.builtins
-
-import kotlinx.serialization.*
-import kotlinx.serialization.internal.*
-
-/**
- * Creates a serializer for [`List<T>`][List] for the given serializer of type [T].
- */
-public val <T> KSerializer<T>.list: KSerializer<List<T>>
- get() = ArrayListSerializer(this)
-
-/**
- * Creates a serializer for [`List<T>`][List] for the given serializer of type [T].
- */
-public fun <T> ListSerializer(elementSerializer: KSerializer<T>): KSerializer<List<T>> =
- ArrayListSerializer(elementSerializer)
-
-/**
- * Creates a serializer for [`Set<T>`][Set] for the given serializer of type [T].
- */
-public val <T> KSerializer<T>.set: KSerializer<Set<T>>
- get() = LinkedHashSetSerializer(this)
-
-/**
- * Creates a serializer for [`Set<T>`][Set] for the given serializer of type [T].
- */
-public fun <T> SetSerializer(elementSerializer: KSerializer<T>): KSerializer<Set<T>> =
- LinkedHashSetSerializer(elementSerializer)
-
-/**
- * Creates a serializer for [`Map<K, V>`][Map] for the given serializers for
- * its ket type [K] and value type [V].
- */
-public fun <K, V> MapSerializer(
- keySerializer: KSerializer<K>,
- valueSerializer: KSerializer<V>
-): KSerializer<Map<K, V>> = LinkedHashMapSerializer(keySerializer, valueSerializer)
diff --git a/runtime/commonMain/src/kotlinx/serialization/builtins/PrimitiveSerializers.kt b/runtime/commonMain/src/kotlinx/serialization/builtins/PrimitiveSerializers.kt
deleted file mode 100644
index 8bb0952d..00000000
--- a/runtime/commonMain/src/kotlinx/serialization/builtins/PrimitiveSerializers.kt
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Copyright 2017-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
- */
-@file:Suppress("DEPRECATION_ERROR", "FunctionName")
-
-package kotlinx.serialization.builtins
-
-import kotlinx.serialization.*
-import kotlinx.serialization.internal.*
-import kotlin.reflect.*
-
-/**
- * Returns serializer for [Char] with [descriptor][SerialDescriptor] of [PrimitiveKind.CHAR] kind.
- */
-public fun Char.Companion.serializer(): KSerializer<Char> = kotlinx.serialization.internal.CharSerializer
-
-/**
- * Returns serializer for [CharArray] with [descriptor][SerialDescriptor] of [StructureKind.LIST] kind.
- * Each element of the array is serialized one by one with [Char.Companion.serializer].
- */
-@Suppress("UNCHECKED_CAST")
-public fun CharArraySerializer(): KSerializer<CharArray> = CharArraySerializer
-
-/**
- * Returns serializer for [Byte] with [descriptor][SerialDescriptor] of [PrimitiveKind.BYTE] kind.
- */
-public fun Byte.Companion.serializer(): KSerializer<Byte> = kotlinx.serialization.internal.ByteSerializer
-
-/**
- * Returns serializer for [ByteArray] with [descriptor][SerialDescriptor] of [StructureKind.LIST] kind.
- * Each element of the array is serialized one by one with [Byte.Companion.serializer].
- */
-public fun ByteArraySerializer(): KSerializer<ByteArray> = ByteArraySerializer
-
-/**
- * Returns serializer for [Short] with [descriptor][SerialDescriptor] of [PrimitiveKind.SHORT] kind.
- */
-public fun Short.Companion.serializer(): KSerializer<Short> = kotlinx.serialization.internal.ShortSerializer
-
-/**
- * Returns serializer for [ShortArray] with [descriptor][SerialDescriptor] of [StructureKind.LIST] kind.
- * Each element of the array is serialized one by one with [Short.Companion.serializer].
- */
-public fun ShortArraySerializer(): KSerializer<ShortArray> = ShortArraySerializer
-
-/**
- * Returns serializer for [Int] with [descriptor][SerialDescriptor] of [PrimitiveKind.INT] kind.
- */
-public fun Int.Companion.serializer(): KSerializer<Int> = kotlinx.serialization.internal.IntSerializer
-
-/**
- * Returns serializer for [IntArray] with [descriptor][SerialDescriptor] of [StructureKind.LIST] kind.
- * Each element of the array is serialized one by one with [Int.Companion.serializer].
- */
-public fun IntArraySerializer(): KSerializer<IntArray> = IntArraySerializer
-
-/**
- * Returns serializer for [Long] with [descriptor][SerialDescriptor] of [PrimitiveKind.LONG] kind.
- */
-public fun Long.Companion.serializer(): KSerializer<Long> = kotlinx.serialization.internal.LongSerializer
-
-/**
- * Returns serializer for [LongArray] with [descriptor][SerialDescriptor] of [StructureKind.LIST] kind.
- * Each element of the array is serialized one by one with [Long.Companion.serializer].
- */
-public fun LongArraySerializer(): KSerializer<LongArray> = LongArraySerializer
-
-/**
- * Returns serializer for [Float] with [descriptor][SerialDescriptor] of [PrimitiveKind.FLOAT] kind.
- */
-public fun Float.Companion.serializer(): KSerializer<Float> = kotlinx.serialization.internal.FloatSerializer
-
-/**
- * Returns serializer for [FloatArray] with [descriptor][SerialDescriptor] of [StructureKind.LIST] kind.
- * Each element of the array is serialized one by one with [Float.Companion.serializer].
- */
-public fun FloatArraySerializer(): KSerializer<FloatArray> = FloatArraySerializer
-
-/**
- * Returns serializer for [Double] with [descriptor][SerialDescriptor] of [PrimitiveKind.DOUBLE] kind.
- */
-public fun Double.Companion.serializer(): KSerializer<Double> = kotlinx.serialization.internal.DoubleSerializer
-
-/**
- * Returns serializer for [DoubleArray] with [descriptor][SerialDescriptor] of [StructureKind.LIST] kind.
- * Each element of the array is serialized one by one with [Double.Companion.serializer].
- */
-public fun DoubleArraySerializer(): KSerializer<DoubleArray> = DoubleArraySerializer
-
-/**
- * Returns serializer for [Boolean] with [descriptor][SerialDescriptor] of [PrimitiveKind.BOOLEAN] kind.
- */
-public fun Boolean.Companion.serializer(): KSerializer<Boolean> = kotlinx.serialization.internal.BooleanSerializer
-
-/**
- * Returns serializer for [BooleanArray] with [descriptor][SerialDescriptor] of [StructureKind.LIST] kind.
- * Each element of the array is serialized one by one with [Boolean.Companion.serializer].
- */
-public fun BooleanArraySerializer(): KSerializer<BooleanArray> = BooleanArraySerializer
-
-/**
- * Returns serializer for [Unit] with [descriptor][SerialDescriptor] of [StructureKind.OBJECT] kind.
- */
-@Deprecated(
- message = "Deprecated in the favour of Unit.serializer() extension",
- level = DeprecationLevel.ERROR,
- replaceWith = ReplaceWith("Unit.serializer()", imports = ["kotlinx.serialization.builtins.serializer"])
-)
-public fun UnitSerializer(): KSerializer<Unit> = kotlinx.serialization.internal.UnitSerializer
-
-/**
- * Returns serializer for [Unit] with [descriptor][SerialDescriptor] of [StructureKind.OBJECT] kind.
- */
-public fun Unit.serializer(): KSerializer<Unit> = kotlinx.serialization.internal.UnitSerializer
-
-/**
- * Returns serializer for [String] with [descriptor][SerialDescriptor] of [PrimitiveKind.STRING] kind.
- */
-public fun String.Companion.serializer(): KSerializer<String> = kotlinx.serialization.internal.StringSerializer
-
-/**
- * Returns serializer for reference [Array] of type [E] with [descriptor][SerialDescriptor] of [StructureKind.LIST] kind.
- * Each element of the array is serialized with the given [elementSerializer].
- */
-@Suppress("UNCHECKED_CAST")
-public inline fun <reified T : Any, reified E : T?> ArraySerializer(elementSerializer: KSerializer<E>): KSerializer<Array<E>> =
- ArraySerializer<T, E>(T::class, elementSerializer)
-
-/**
- * Returns serializer for reference [Array] of type [E] with [descriptor][SerialDescriptor] of [StructureKind.LIST] kind.
- * Each element of the array is serialized with the given [elementSerializer].
- */
-public fun <T : Any, E : T?> ArraySerializer(
- kClass: KClass<T>,
- elementSerializer: KSerializer<E>
-): KSerializer<Array<E>> = ReferenceArraySerializer<T, E>(kClass, elementSerializer)
diff --git a/runtime/commonMain/src/kotlinx/serialization/builtins/AbstractDecoder.kt b/runtime/commonMain/src/kotlinx/serialization/encoding/AbstractDecoder.kt
index 07bbe13e..5dd6ddb5 100644
--- a/runtime/commonMain/src/kotlinx/serialization/builtins/AbstractDecoder.kt
+++ b/runtime/commonMain/src/kotlinx/serialization/encoding/AbstractDecoder.kt
@@ -2,9 +2,10 @@
* Copyright 2017-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
*/
-package kotlinx.serialization.builtins
+package kotlinx.serialization.encoding
import kotlinx.serialization.*
+import kotlinx.serialization.builtins.*
import kotlinx.serialization.modules.*
/**
diff --git a/runtime/commonMain/src/kotlinx/serialization/builtins/AbstractEncoder.kt b/runtime/commonMain/src/kotlinx/serialization/encoding/AbstractEncoder.kt
index 3450755a..1fe836f2 100644
--- a/runtime/commonMain/src/kotlinx/serialization/builtins/AbstractEncoder.kt
+++ b/runtime/commonMain/src/kotlinx/serialization/encoding/AbstractEncoder.kt
@@ -2,9 +2,10 @@
* Copyright 2017-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
*/
-package kotlinx.serialization.builtins
+package kotlinx.serialization.encoding
import kotlinx.serialization.*
+import kotlinx.serialization.builtins.*
import kotlinx.serialization.modules.*
/**
diff --git a/runtime/commonMain/src/kotlinx/serialization/json/internal/StreamingJsonDecoder.kt b/runtime/commonMain/src/kotlinx/serialization/json/internal/StreamingJsonDecoder.kt
index df0e54ce..57696c53 100644
--- a/runtime/commonMain/src/kotlinx/serialization/json/internal/StreamingJsonDecoder.kt
+++ b/runtime/commonMain/src/kotlinx/serialization/json/internal/StreamingJsonDecoder.kt
@@ -6,7 +6,7 @@ package kotlinx.serialization.json.internal
import kotlinx.serialization.*
import kotlinx.serialization.CompositeDecoder.Companion.UNKNOWN_NAME
-import kotlinx.serialization.builtins.*
+import kotlinx.serialization.encoding.*
import kotlinx.serialization.json.*
import kotlinx.serialization.modules.*
import kotlin.jvm.*
diff --git a/runtime/commonMain/src/kotlinx/serialization/json/internal/StreamingJsonEncoder.kt b/runtime/commonMain/src/kotlinx/serialization/json/internal/StreamingJsonEncoder.kt
index 75c6172a..6b03c028 100644
--- a/runtime/commonMain/src/kotlinx/serialization/json/internal/StreamingJsonEncoder.kt
+++ b/runtime/commonMain/src/kotlinx/serialization/json/internal/StreamingJsonEncoder.kt
@@ -5,7 +5,7 @@
package kotlinx.serialization.json.internal
import kotlinx.serialization.*
-import kotlinx.serialization.builtins.*
+import kotlinx.serialization.encoding.*
import kotlinx.serialization.json.*
import kotlinx.serialization.modules.*
import kotlin.jvm.*
diff --git a/runtime/commonTest/src/kotlinx/serialization/BasicTypesSerializationTest.kt b/runtime/commonTest/src/kotlinx/serialization/BasicTypesSerializationTest.kt
index 1672bb3c..9cbf0a01 100644
--- a/runtime/commonTest/src/kotlinx/serialization/BasicTypesSerializationTest.kt
+++ b/runtime/commonTest/src/kotlinx/serialization/BasicTypesSerializationTest.kt
@@ -5,7 +5,7 @@
package kotlinx.serialization
import kotlinx.serialization.CompositeDecoder.Companion.READ_DONE
-import kotlinx.serialization.builtins.*
+import kotlinx.serialization.encoding.*
import kotlin.test.*
/*
diff --git a/runtime/commonTest/src/kotlinx/serialization/UnknownElementIndexTest.kt b/runtime/commonTest/src/kotlinx/serialization/UnknownElementIndexTest.kt
index 03a0fab7..25da54e0 100644
--- a/runtime/commonTest/src/kotlinx/serialization/UnknownElementIndexTest.kt
+++ b/runtime/commonTest/src/kotlinx/serialization/UnknownElementIndexTest.kt
@@ -5,7 +5,7 @@
package kotlinx.serialization
import kotlinx.serialization.CompositeDecoder.Companion.UNKNOWN_NAME
-import kotlinx.serialization.builtins.*
+import kotlinx.serialization.encoding.*
import kotlinx.serialization.json.Json
import kotlin.test.Test
import kotlin.test.assertFailsWith
diff --git a/runtime/commonTest/src/kotlinx/serialization/features/SealedClassesSerializationTest.kt b/runtime/commonTest/src/kotlinx/serialization/features/SealedClassesSerializationTest.kt
index 7d9ef1e8..75296c1d 100644
--- a/runtime/commonTest/src/kotlinx/serialization/features/SealedClassesSerializationTest.kt
+++ b/runtime/commonTest/src/kotlinx/serialization/features/SealedClassesSerializationTest.kt
@@ -169,7 +169,7 @@ class SealedClassesSerializationTest : JsonTestBase() {
)
val expected =
"""[{"type":"SealedProtocol.StringMessage","description":"string message","message":"foo"},{"type":"SealedProtocol.IntMessage","description":"int message","message":42},{"type":"SealedProtocol.ErrorMessage","error":"requesting termination"},{"type":"EOF"}]"""
- assertJsonFormAndRestored(SealedProtocol.serializer().list, messages, expected, json)
+ assertJsonFormAndRestored(ListSerializer(SealedProtocol.serializer()), messages, expected, json)
}
@Test
@@ -193,7 +193,7 @@ class SealedClassesSerializationTest : JsonTestBase() {
)
val expected =
"""[{"type":"ProtocolWithAbstractClass.Message.StringMessage","description":"string message","message":"foo"},{"type":"ProtocolWithAbstractClass.Message.IntMessage","description":"int message","message":42},{"type":"ProtocolWithAbstractClass.ErrorMessage","error":"requesting termination"},{"type":"EOF"}]"""
- assertJsonFormAndRestored(ProtocolWithAbstractClass.serializer().list, messages, expected, json)
+ assertJsonFormAndRestored(ListSerializer(ProtocolWithAbstractClass.serializer()), messages, expected, json)
}
@Test
@@ -206,7 +206,7 @@ class SealedClassesSerializationTest : JsonTestBase() {
)
val expected =
"""[{"type":"ProtocolWithSealedClass.Message.StringMessage","description":"string message","message":"foo"},{"type":"ProtocolWithSealedClass.Message.IntMessage","description":"int message","message":42},{"type":"ProtocolWithSealedClass.ErrorMessage","error":"requesting termination"},{"type":"EOF"}]"""
- assertJsonFormAndRestored(ProtocolWithSealedClass.serializer().list, messages, expected, json)
+ assertJsonFormAndRestored(ListSerializer(ProtocolWithSealedClass.serializer()), messages, expected, json)
}
@Test
@@ -218,8 +218,8 @@ class SealedClassesSerializationTest : JsonTestBase() {
val expected =
"""[{"type":"ProtocolWithSealedClass.Message.StringMessage","description":"string message","message":"foo"},{"type":"ProtocolWithSealedClass.Message.IntMessage","description":"int message","message":42}]"""
- assertJsonFormAndRestored(ProtocolWithSealedClass.serializer().list, messages, expected, json)
- assertJsonFormAndRestored(ProtocolWithSealedClass.Message.serializer().list, messages, expected, json)
+ assertJsonFormAndRestored(ListSerializer(ProtocolWithSealedClass.serializer()), messages, expected, json)
+ assertJsonFormAndRestored(ListSerializer(ProtocolWithSealedClass.Message.serializer()), messages, expected, json)
}
@Test
@@ -233,6 +233,6 @@ class SealedClassesSerializationTest : JsonTestBase() {
val expected =
"""[["ProtocolWithGenericClass.Message",{"description":"string message","message":["kotlin.String","foo"]}],["ProtocolWithGenericClass.Message",{"description":"int message","message":["kotlin.Int",42]}],["ProtocolWithGenericClass.ErrorMessage",{"error":"requesting termination"}],["EOF",{}]]"""
val json = Json(JsonConfiguration.Default.copy(useArrayPolymorphism = true))
- assertJsonFormAndRestored(ProtocolWithGenericClass.serializer().list, messages, expected, json)
+ assertJsonFormAndRestored(ListSerializer(ProtocolWithGenericClass.serializer()), messages, expected, json)
}
}
diff --git a/runtime/commonTest/src/kotlinx/serialization/json/JsonCustomSerializersTest.kt b/runtime/commonTest/src/kotlinx/serialization/json/JsonCustomSerializersTest.kt
index 5b05c5a9..0e5b4c78 100644
--- a/runtime/commonTest/src/kotlinx/serialization/json/JsonCustomSerializersTest.kt
+++ b/runtime/commonTest/src/kotlinx/serialization/json/JsonCustomSerializersTest.kt
@@ -59,7 +59,7 @@ class JsonCustomSerializersTest : JsonTestBase() {
companion object : KSerializer<CList2> {
override fun serialize(encoder: Encoder, value: CList2) {
val elemOutput = encoder.beginStructure(descriptor)
- elemOutput.encodeSerializableElement(descriptor, 1, C.list, value.c)
+ elemOutput.encodeSerializableElement(descriptor, 1, ListSerializer(C), value.c)
if (value.d != 5) elemOutput.encodeIntElement(descriptor, 0, value.d)
elemOutput.endStructure(descriptor)
}
@@ -72,7 +72,7 @@ class JsonCustomSerializersTest : JsonTestBase() {
companion object : KSerializer<CList3> {
override fun serialize(encoder: Encoder, value: CList3) {
val elemOutput = encoder.beginStructure(descriptor)
- if (value.e.isNotEmpty()) elemOutput.encodeSerializableElement(descriptor, 0, C.list, value.e)
+ if (value.e.isNotEmpty()) elemOutput.encodeSerializableElement(descriptor, 0, ListSerializer(C), value.e)
elemOutput.encodeIntElement(descriptor, 1, value.f)
elemOutput.endStructure(descriptor)
}
@@ -86,7 +86,7 @@ class JsonCustomSerializersTest : JsonTestBase() {
override fun serialize(encoder: Encoder, value: CList4) {
val elemOutput = encoder.beginStructure(descriptor)
elemOutput.encodeIntElement(descriptor, 1, value.h)
- if (value.g.isNotEmpty()) elemOutput.encodeSerializableElement(descriptor, 0, C.list, value.g)
+ if (value.g.isNotEmpty()) elemOutput.encodeSerializableElement(descriptor, 0, ListSerializer(C), value.g)
elemOutput.endStructure(descriptor)
}
}
@@ -100,7 +100,7 @@ class JsonCustomSerializersTest : JsonTestBase() {
val elemOutput = encoder.beginStructure(descriptor)
elemOutput.encodeIntElement(descriptor, 1, value.h)
if (value.g.isNotEmpty()) elemOutput.encodeSerializableElement(
- descriptor, 0, Int.serializer().list,
+ descriptor, 0, ListSerializer(Int.serializer()),
value.g
)
elemOutput.endStructure(descriptor)
@@ -148,7 +148,7 @@ class JsonCustomSerializersTest : JsonTestBase() {
fun testWriteCustomListRootLevel() = parametrizedTest { useStreaming ->
val obj = listOf(B(1), B(2), B(3))
val j = createJsonWithB()
- val s = j.encodeToString(BSerializer.list, obj, useStreaming)
+ val s = j.encodeToString(ListSerializer(BSerializer), obj, useStreaming)
assertEquals("[1,2,3]", s)
}
@@ -156,7 +156,7 @@ class JsonCustomSerializersTest : JsonTestBase() {
fun testReadCustomListRootLevel() = parametrizedTest { useStreaming ->
val obj = listOf(B(1), B(2), B(3))
val j = createJsonWithB()
- val bs = j.decodeFromString(BSerializer.list, "[1,2,3]", useStreaming)
+ val bs = j.decodeFromString(ListSerializer(BSerializer), "[1,2,3]", useStreaming)
assertEquals(obj, bs)
}
@@ -191,7 +191,7 @@ class JsonCustomSerializersTest : JsonTestBase() {
@Test
fun testWriteListOfOptional() = parametrizedTest { useStreaming ->
val obj = listOf(C(a = 1), C(b = 2), C(3, 4))
- val s = default.encodeToString(C.list, obj, useStreaming)
+ val s = default.encodeToString(ListSerializer(C), obj, useStreaming)
assertEquals("""[{"b":42,"a":1},{"b":2},{"b":4,"a":3}]""", s)
}
@@ -199,7 +199,7 @@ class JsonCustomSerializersTest : JsonTestBase() {
fun testReadListOfOptional() = parametrizedTest { useStreaming ->
val obj = listOf(C(a = 1), C(b = 2), C(3, 4))
val j = """[{"b":42,"a":1},{"b":2},{"b":4,"a":3}]"""
- val s = default.decodeFromString(C.list, j, useStreaming)
+ val s = default.decodeFromString(ListSerializer<kotlinx.serialization.json.JsonCustomSerializersTest.C>(C), j, useStreaming)
assertEquals(obj, s)
}
diff --git a/runtime/commonTest/src/kotlinx/serialization/json/JsonTransformingSerializerTest.kt b/runtime/commonTest/src/kotlinx/serialization/json/JsonTransformingSerializerTest.kt
index 1ba3c352..5e8188c6 100644
--- a/runtime/commonTest/src/kotlinx/serialization/json/JsonTransformingSerializerTest.kt
+++ b/runtime/commonTest/src/kotlinx/serialization/json/JsonTransformingSerializerTest.kt
@@ -19,7 +19,7 @@ class JsonTransformingSerializerTest : JsonTestBase() {
)
object WrappingJsonListSerializer :
- JsonTransformingSerializer<List<StringData>>(StringData.serializer().list, "WrappingList") {
+ JsonTransformingSerializer<List<StringData>>(ListSerializer(StringData.serializer()), "WrappingList") {
override fun readTransform(element: JsonElement): JsonElement =
if (element !is JsonArray) JsonArray(listOf(element)) else element
}
diff --git a/runtime/jsMain/src/kotlinx/serialization/DynamicObjectSerializer.kt b/runtime/jsMain/src/kotlinx/serialization/DynamicObjectSerializer.kt
index 1fa94df7..675b8393 100644
--- a/runtime/jsMain/src/kotlinx/serialization/DynamicObjectSerializer.kt
+++ b/runtime/jsMain/src/kotlinx/serialization/DynamicObjectSerializer.kt
@@ -1,8 +1,7 @@
package kotlinx.serialization
-import kotlinx.serialization.builtins.AbstractEncoder
-import kotlinx.serialization.builtins.list
-import kotlinx.serialization.builtins.nullable
+import kotlinx.serialization.builtins.*
+import kotlinx.serialization.encoding.AbstractEncoder
import kotlinx.serialization.json.JsonConfiguration
import kotlinx.serialization.json.internal.BEGIN_LIST
import kotlinx.serialization.json.internal.BEGIN_OBJ
@@ -10,7 +9,6 @@ import kotlinx.serialization.json.internal.END_LIST
import kotlinx.serialization.json.internal.END_OBJ
import kotlinx.serialization.modules.EmptyModule
import kotlinx.serialization.modules.SerialModule
-import kotlinx.serialization.modules.getContextualOrDefault
import kotlin.math.abs
import kotlin.math.floor
@@ -56,7 +54,7 @@ public class DynamicObjectSerializer @OptIn(UnstableDefault::class) constructor(
serialize(serializer(), obj)
public inline fun <reified T : Any> serialize(obj: List<T?>): dynamic =
- serialize(serializer<T>().nullable.list, obj)
+ serialize(ListSerializer(serializer<T>().nullable), obj)
}
private class DynamicObjectEncoder(val configuration: JsonConfiguration, val encodeNullAsUndefined: Boolean) :
diff --git a/runtime/jsTest/src/kotlinx/serialization/DynamicSerializerTest.kt b/runtime/jsTest/src/kotlinx/serialization/DynamicSerializerTest.kt
index c2d7cf2b..30de178f 100644
--- a/runtime/jsTest/src/kotlinx/serialization/DynamicSerializerTest.kt
+++ b/runtime/jsTest/src/kotlinx/serialization/DynamicSerializerTest.kt
@@ -145,7 +145,7 @@ class DynamicSerializerTest {
@Test
fun listTest() {
- assertDynamicForm(listOf(1, 2, 3, 44), serializer = Int.serializer().list) { data, serialized ->
+ assertDynamicForm(listOf(1, 2, 3, 44), serializer = ListSerializer(Int.serializer())) { data, serialized ->
assertNotNull(serialized.length, "length property should exist")
assertEquals(data.size, serialized.length)
diff --git a/runtime/jvmTest/src/kotlinx/serialization/SerializationMethodInvocationOrderTest.kt b/runtime/jvmTest/src/kotlinx/serialization/SerializationMethodInvocationOrderTest.kt
index 5e245383..ee5fb3ea 100644
--- a/runtime/jvmTest/src/kotlinx/serialization/SerializationMethodInvocationOrderTest.kt
+++ b/runtime/jvmTest/src/kotlinx/serialization/SerializationMethodInvocationOrderTest.kt
@@ -4,7 +4,7 @@
package kotlinx.serialization
-import kotlinx.serialization.builtins.*
+import kotlinx.serialization.encoding.*
import org.junit.Test
import kotlin.test.*
diff --git a/runtime/jvmTest/src/kotlinx/serialization/SerializeFlatTest.kt b/runtime/jvmTest/src/kotlinx/serialization/SerializeFlatTest.kt
index f62896e6..be73b6c3 100644
--- a/runtime/jvmTest/src/kotlinx/serialization/SerializeFlatTest.kt
+++ b/runtime/jvmTest/src/kotlinx/serialization/SerializeFlatTest.kt
@@ -4,7 +4,7 @@
package kotlinx.serialization
-import kotlinx.serialization.builtins.*
+import kotlinx.serialization.encoding.*
import org.junit.Test
import kotlin.test.*
diff --git a/runtime/jvmTest/src/kotlinx/serialization/features/JsonUpdateCustomTest.kt b/runtime/jvmTest/src/kotlinx/serialization/features/JsonUpdateCustomTest.kt
index 493812cb..270b5d0d 100644
--- a/runtime/jvmTest/src/kotlinx/serialization/features/JsonUpdateCustomTest.kt
+++ b/runtime/jvmTest/src/kotlinx/serialization/features/JsonUpdateCustomTest.kt
@@ -46,7 +46,7 @@ class JsonUpdateCustomTest : JsonTestBase() {
@Test
fun canUpdateValuesInMap() {
- val parsed = json.decodeFromString(WrappedMap.serializer(Int.serializer().list), """{"mp": { "x" : [23], "x" : [42], "y": [4] }}""")
+ val parsed = json.decodeFromString(WrappedMap.serializer(ListSerializer(Int.serializer())), """{"mp": { "x" : [23], "x" : [42], "y": [4] }}""")
assertEquals(WrappedMap(mapOf("x" to listOf(42), "y" to listOf(4))), parsed)
}
}