@@ -19,15 +19,23 @@ public class PolymorphicModuleBuilder<in Base : Any> @PublishedApi internal cons
19
19
private val baseClass : KClass <Base >,
20
20
private val baseSerializer : KSerializer <Base >? = null
21
21
) {
22
- private val subclasses: MutableList < Pair < KClass <out Base >, KSerializer <out Base >>> = mutableListOf ()
22
+ private val subclasses: MutableMap < KClass <out Base >, KSerializer <out Base >> = mutableMapOf ()
23
23
private var defaultSerializerProvider: ((Base ) -> SerializationStrategy <Base >? )? = null
24
24
private var defaultDeserializerProvider: ((String? ) -> DeserializationStrategy <Base >? )? = null
25
25
26
+
27
+ /* *
28
+ * Registers the child serializers for the sealed [subclass] [serializer] in the resulting module under the [base class][Base].
29
+ */
30
+ public inline fun <reified T : Base > subclassesOf (): Unit =
31
+ subclassesOf(serializer<T >())
32
+
33
+
26
34
/* *
27
- * Registers the subclasses of the given class as subclasses of the outer class. Currently this requires `baseClass`
35
+ * Registers the subclasses of the given class as subclasses of the outer class. This currently requires `baseClass`
28
36
* to be sealed.
29
37
*/
30
- public fun <T : Base > subclassesOf (baseClass : KClass < T >, serializer : KSerializer <T >) {
38
+ public fun <T : Base > subclassesOf (serializer : KSerializer <T >) {
31
39
require(serializer is SealedClassSerializer ) {
32
40
" subClassesOf only supports automatic adding of subclasses of sealed types."
33
41
}
@@ -42,7 +50,7 @@ public class PolymorphicModuleBuilder<in Base : Any> @PublishedApi internal cons
42
50
* Registers a [subclass] [serializer] in the resulting module under the [base class][Base].
43
51
*/
44
52
public fun <T : Base > subclass (subclass : KClass <T >, serializer : KSerializer <T >) {
45
- subclasses.add( subclass to serializer)
53
+ subclasses[ subclass] = serializer
46
54
}
47
55
48
56
/* *
@@ -132,14 +140,8 @@ public inline fun <Base : Any, reified T : Base> PolymorphicModuleBuilder<Base>.
132
140
public inline fun <Base : Any , reified T : Base > PolymorphicModuleBuilder<Base>.subclass (clazz : KClass <T >): Unit =
133
141
subclass(clazz, serializer())
134
142
135
- /* *
136
- * Registers the child serializers for the sealed [subclass] [serializer] in the resulting module under the [base class][Base].
137
- */
138
- public inline fun <Base : Any , reified T : Base > PolymorphicModuleBuilder<Base>.subclassesOf (serializer : KSerializer <T >): Unit =
139
- subclassesOf(T ::class , serializer)
140
-
141
143
/* *
142
144
* Registers the child serializers for the sealed class [T] in the resulting module under the [base class][Base].
143
145
*/
144
146
public inline fun <Base : Any , reified T : Base > PolymorphicModuleBuilder<Base>.subclassesOf (clazz : KClass <T >): Unit =
145
- subclassesOf(clazz, serializer())
147
+ subclassesOf(clazz. serializer())
0 commit comments