From 7d2c59fb70a926dfc389fcd064db5898d70cd6f8 Mon Sep 17 00:00:00 2001 From: Leonid Startsev Date: Tue, 19 Feb 2019 14:32:05 +0300 Subject: [PATCH] Fix missing optionality of property when generating descriptor in Native --- .../compiler/backend/ir/SerializerIrGenerator.kt | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializerIrGenerator.kt b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializerIrGenerator.kt index 220f17933c2..f5f54818bd2 100644 --- a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializerIrGenerator.kt +++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializerIrGenerator.kt @@ -91,14 +91,17 @@ class SerializerIrGenerator(val irClass: IrClass, override val compilerContext: nameHint = "serialDesc" ) - fun addFieldCall(fieldName: String) = - irCall(addFuncS, type = compilerContext.irBuiltIns.unitType).apply { - dispatchReceiver = irGet(localDesc) - }.mapValueParameters { irString(fieldName) } + fun addFieldCall(prop: SerializableProperty) = irInvoke( + irGet(localDesc), + addFuncS, + irString(prop.name), + irBoolean(prop.optional), + typeHint = compilerContext.irBuiltIns.unitType + ) for (classProp in serializableProperties) { if (classProp.transient) continue - +addFieldCall(classProp.name) + +addFieldCall(classProp) // add property annotations copySerialInfoAnnotationsToDescriptor( classProp.irField.correspondingProperty?.annotations.orEmpty(),