From 0bf7e3b91e308f3eb98bb3c068505ebf9fcb6914 Mon Sep 17 00:00:00 2001 From: Leonid Startsev Date: Thu, 22 Sep 2022 16:30:52 +0200 Subject: [PATCH] Deprecate .isNullable in SerialDescriptor builder because it wasn't working properly and better alternative exists. Fixes #1929 --- .../kotlinx/serialization/descriptors/SerialDescriptors.kt | 1 + .../kotlinx/serialization/SerialDescriptorBuilderTest.kt | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/core/commonMain/src/kotlinx/serialization/descriptors/SerialDescriptors.kt b/core/commonMain/src/kotlinx/serialization/descriptors/SerialDescriptors.kt index a461ca6f2..e82bb8f56 100644 --- a/core/commonMain/src/kotlinx/serialization/descriptors/SerialDescriptors.kt +++ b/core/commonMain/src/kotlinx/serialization/descriptors/SerialDescriptors.kt @@ -240,6 +240,7 @@ public class ClassSerialDescriptorBuilder internal constructor( * in its [KSerializer] type parameter and handle nulls during encoding and decoding. */ @ExperimentalSerializationApi + @Deprecated("isNullable inside buildSerialDescriptor is deprecated. Please use SerialDescriptor.nullable extension on a builder result.", level = DeprecationLevel.ERROR) public var isNullable: Boolean = false /** diff --git a/core/commonTest/src/kotlinx/serialization/SerialDescriptorBuilderTest.kt b/core/commonTest/src/kotlinx/serialization/SerialDescriptorBuilderTest.kt index 78b015b5b..1ff2a7ba4 100644 --- a/core/commonTest/src/kotlinx/serialization/SerialDescriptorBuilderTest.kt +++ b/core/commonTest/src/kotlinx/serialization/SerialDescriptorBuilderTest.kt @@ -87,4 +87,11 @@ class SerialDescriptorBuilderTest { assertFailsWith { PrimitiveSerialDescriptor(" ", PrimitiveKind.STRING) } assertFailsWith { PrimitiveSerialDescriptor("\t", PrimitiveKind.STRING) } } + + @Test + fun testNullableBuild() { + val descriptor = buildClassSerialDescriptor("my.Simple") {}.nullable + assertTrue(descriptor.isNullable) + assertEquals("my.Simple?", descriptor.serialName) + } }