diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/common/TypeUtil.kt b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/common/TypeUtil.kt index fa888085bf7..5f33c66763f 100644 --- a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/common/TypeUtil.kt +++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/common/TypeUtil.kt @@ -70,7 +70,6 @@ fun AbstractSerialGenerator.getSerialTypeInfo(property: SerializableProperty): S ) KotlinBuiltIns.isString(T) -> SerialTypeInfo(property, "String") KotlinBuiltIns.isUnit(T) -> SerialTypeInfo(property, "Unit", unit = true) - KotlinBuiltIns.isPrimitiveArray(T) -> TODO("primitive arrays are not supported yet") KotlinBuiltIns.isNonPrimitiveArray(T.toClassDescriptor!!) -> { val serializer = property.serializableWith?.toClassDescriptor ?: property.module.findClassAcrossModuleDependencies( referenceArraySerializerId @@ -165,6 +164,14 @@ fun findStandardKotlinTypeSerializer(module: ModuleDescriptor, kType: KotlinType "kotlin.collections.Map", "kotlin.collections.LinkedHashMap", "kotlin.collections.MutableMap" -> "LinkedHashMapSerializer" "kotlin.collections.HashMap" -> "HashMapSerializer" "kotlin.collections.Map.Entry" -> "MapEntrySerializer" + "kotlin.ByteArray" -> "ByteArraySerializer" + "kotlin.ShortArray" -> "ShortArraySerializer" + "kotlin.IntArray" -> "IntArraySerializer" + "kotlin.LongArray" -> "LongArraySerializer" + "kotlin.CharArray" -> "CharArraySerializer" + "kotlin.FloatArray" -> "FloatArraySerializer" + "kotlin.DoubleArray" -> "DoubleArraySerializer" + "kotlin.BooleanArray" -> "BooleanArraySerializer" "java.lang.Boolean" -> "BooleanSerializer" "java.lang.Byte" -> "ByteSerializer" "java.lang.Short" -> "ShortSerializer" diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/jvm/JVMCodegenUtil.kt b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/jvm/JVMCodegenUtil.kt index 72b1cb0acb3..f484da170e4 100644 --- a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/jvm/JVMCodegenUtil.kt +++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/jvm/JVMCodegenUtil.kt @@ -360,7 +360,14 @@ fun AbstractSerialGenerator.getSerialTypeInfo(property: SerializableProperty, ty // reference elements serializer = property.module.findClassAcrossModuleDependencies(referenceArraySerializerId) } - else -> TODO("primitive arrays are not supported yet") + else -> { + serializer = findTypeSerializerOrContext( + property.module, + property.type, + property.descriptor.annotations, + property.descriptor.findPsi() + ) + } // primitive elements are not supported yet } }