From 605a35faa87534e24482aa00a52a2a71bebd51a3 Mon Sep 17 00:00:00 2001 From: Vsevolod Tolstopyatov Date: Fri, 24 Jun 2022 16:43:57 +0200 Subject: =?UTF-8?q?Get=20rid=20of=20@ExperimentalUnsignedTypes=20on=20our?= =?UTF-8?q?=20declarations=20that=20levera=E2=80=A6=20(#1962)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Get rid of @ExperimentalUnsignedTypes on our declarations that leverage non-experimental unsigned types --- build.gradle | 3 +-- .../src/kotlinx/serialization/builtins/BuiltinSerializers.kt | 4 ---- core/commonMain/src/kotlinx/serialization/internal/ValueClasses.kt | 4 ---- docs/builtin-classes.md | 2 -- .../src/kotlinx/serialization/json/JsonElementSerializers.kt | 2 +- .../commonMain/src/kotlinx/serialization/json/internal/Composers.kt | 1 - .../src/kotlinx/serialization/json/internal/StreamingJsonDecoder.kt | 3 +-- .../src/kotlinx/serialization/json/internal/StreamingJsonEncoder.kt | 3 +-- .../src/kotlinx/serialization/json/internal/TreeJsonDecoder.kt | 1 - .../src/kotlinx/serialization/json/internal/TreeJsonEncoder.kt | 1 - .../kotlinx/serialization/features/inline/EncodeInlineElementTest.kt | 2 -- .../src/kotlinx/serialization/features/inline/InlineClassesTest.kt | 5 ----- .../kotlinx/serialization/features/inline/UnsignedIntegersTest.kt | 4 +--- 13 files changed, 5 insertions(+), 30 deletions(-) diff --git a/build.gradle b/build.gradle index 60b7e273..f696639f 100644 --- a/build.gradle +++ b/build.gradle @@ -20,8 +20,7 @@ buildscript { ext.experimentalsInTestEnabled = ["-progressive", "-opt-in=kotlin.Experimental", "-opt-in=kotlin.ExperimentalMultiplatform", "-opt-in=kotlinx.serialization.ExperimentalSerializationApi", - "-opt-in=kotlinx.serialization.InternalSerializationApi", - "-opt-in=kotlin.ExperimentalUnsignedTypes" + "-opt-in=kotlinx.serialization.InternalSerializationApi" ] ext.koverEnabled = property('kover.enabled') ?: true diff --git a/core/commonMain/src/kotlinx/serialization/builtins/BuiltinSerializers.kt b/core/commonMain/src/kotlinx/serialization/builtins/BuiltinSerializers.kt index 91052fe2..19698c45 100644 --- a/core/commonMain/src/kotlinx/serialization/builtins/BuiltinSerializers.kt +++ b/core/commonMain/src/kotlinx/serialization/builtins/BuiltinSerializers.kt @@ -194,25 +194,21 @@ public fun MapSerializer( /** * Returns serializer for [UInt]. */ -@ExperimentalUnsignedTypes public fun UInt.Companion.serializer(): KSerializer = UIntSerializer /** * Returns serializer for [ULong]. */ -@ExperimentalUnsignedTypes public fun ULong.Companion.serializer(): KSerializer = ULongSerializer /** * Returns serializer for [UByte]. */ -@ExperimentalUnsignedTypes public fun UByte.Companion.serializer(): KSerializer = UByteSerializer /** * Returns serializer for [UShort]. */ -@ExperimentalUnsignedTypes public fun UShort.Companion.serializer(): KSerializer = UShortSerializer /** diff --git a/core/commonMain/src/kotlinx/serialization/internal/ValueClasses.kt b/core/commonMain/src/kotlinx/serialization/internal/ValueClasses.kt index b2657d65..90c1f28d 100644 --- a/core/commonMain/src/kotlinx/serialization/internal/ValueClasses.kt +++ b/core/commonMain/src/kotlinx/serialization/internal/ValueClasses.kt @@ -10,7 +10,6 @@ import kotlinx.serialization.descriptors.* import kotlinx.serialization.encoding.* @PublishedApi -@ExperimentalUnsignedTypes internal object UIntSerializer : KSerializer { override val descriptor: SerialDescriptor = InlinePrimitiveDescriptor("kotlin.UInt", Int.serializer()) @@ -24,7 +23,6 @@ internal object UIntSerializer : KSerializer { } @PublishedApi -@ExperimentalUnsignedTypes internal object ULongSerializer : KSerializer { override val descriptor: SerialDescriptor = InlinePrimitiveDescriptor("kotlin.ULong", Long.serializer()) @@ -38,7 +36,6 @@ internal object ULongSerializer : KSerializer { } @PublishedApi -@ExperimentalUnsignedTypes internal object UByteSerializer : KSerializer { override val descriptor: SerialDescriptor = InlinePrimitiveDescriptor("kotlin.UByte", Byte.serializer()) @@ -52,7 +49,6 @@ internal object UByteSerializer : KSerializer { } @PublishedApi -@ExperimentalUnsignedTypes internal object UShortSerializer : KSerializer { override val descriptor: SerialDescriptor = InlinePrimitiveDescriptor("kotlin.UShort", Short.serializer()) diff --git a/docs/builtin-classes.md b/docs/builtin-classes.md index 01831154..eddfbdf9 100644 --- a/docs/builtin-classes.md +++ b/docs/builtin-classes.md @@ -68,8 +68,6 @@ Their natural representation in JSON is used. -> Experimental unsigned numbers as well as other experimental inline classes are not supported by Kotlin Serialization yet. - ### Long numbers diff --git a/formats/json/commonMain/src/kotlinx/serialization/json/JsonElementSerializers.kt b/formats/json/commonMain/src/kotlinx/serialization/json/JsonElementSerializers.kt index a6d0d0f4..6fcfa2c0 100644 --- a/formats/json/commonMain/src/kotlinx/serialization/json/JsonElementSerializers.kt +++ b/formats/json/commonMain/src/kotlinx/serialization/json/JsonElementSerializers.kt @@ -109,7 +109,7 @@ private object JsonLiteralSerializer : KSerializer { override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("kotlinx.serialization.json.JsonLiteral", PrimitiveKind.STRING) - @OptIn(ExperimentalUnsignedTypes::class, ExperimentalSerializationApi::class) + @OptIn(ExperimentalSerializationApi::class) override fun serialize(encoder: Encoder, value: JsonLiteral) { verify(encoder) if (value.isString) { diff --git a/formats/json/commonMain/src/kotlinx/serialization/json/internal/Composers.kt b/formats/json/commonMain/src/kotlinx/serialization/json/internal/Composers.kt index d3860d21..553d6358 100644 --- a/formats/json/commonMain/src/kotlinx/serialization/json/internal/Composers.kt +++ b/formats/json/commonMain/src/kotlinx/serialization/json/internal/Composers.kt @@ -41,7 +41,6 @@ internal open class Composer(@JvmField internal val sb: JsonStringBuilder) { fun printQuoted(value: String): Unit = sb.appendQuoted(value) } -@ExperimentalUnsignedTypes internal class ComposerForUnsignedNumbers(sb: JsonStringBuilder, private val forceQuoting: Boolean) : Composer(sb) { override fun print(v: Int) { if (forceQuoting) printQuoted(v.toUInt().toString()) else print(v.toUInt().toString()) diff --git a/formats/json/commonMain/src/kotlinx/serialization/json/internal/StreamingJsonDecoder.kt b/formats/json/commonMain/src/kotlinx/serialization/json/internal/StreamingJsonDecoder.kt index 9c6ba742..834e5977 100644 --- a/formats/json/commonMain/src/kotlinx/serialization/json/internal/StreamingJsonDecoder.kt +++ b/formats/json/commonMain/src/kotlinx/serialization/json/internal/StreamingJsonDecoder.kt @@ -17,7 +17,7 @@ import kotlin.jvm.* /** * [JsonDecoder] which reads given JSON from [AbstractJsonLexer] field by field. */ -@OptIn(ExperimentalSerializationApi::class, ExperimentalUnsignedTypes::class) +@OptIn(ExperimentalSerializationApi::class) internal open class StreamingJsonDecoder( final override val json: Json, private val mode: WriteMode, @@ -354,7 +354,6 @@ internal open class StreamingJsonDecoder( } @OptIn(ExperimentalSerializationApi::class) -@ExperimentalUnsignedTypes internal class JsonDecoderForUnsignedTypes( private val lexer: AbstractJsonLexer, json: Json diff --git a/formats/json/commonMain/src/kotlinx/serialization/json/internal/StreamingJsonEncoder.kt b/formats/json/commonMain/src/kotlinx/serialization/json/internal/StreamingJsonEncoder.kt index d2d9985b..0fe6371e 100644 --- a/formats/json/commonMain/src/kotlinx/serialization/json/internal/StreamingJsonEncoder.kt +++ b/formats/json/commonMain/src/kotlinx/serialization/json/internal/StreamingJsonEncoder.kt @@ -12,7 +12,6 @@ import kotlinx.serialization.json.* import kotlinx.serialization.modules.* import kotlin.native.concurrent.* -@OptIn(ExperimentalUnsignedTypes::class) @SharedImmutable private val unsignedNumberDescriptors = setOf( UInt.serializer().descriptor, @@ -24,7 +23,7 @@ private val unsignedNumberDescriptors = setOf( internal val SerialDescriptor.isUnsignedNumber: Boolean get() = this.isInline && this in unsignedNumberDescriptors -@OptIn(ExperimentalSerializationApi::class, ExperimentalUnsignedTypes::class) +@OptIn(ExperimentalSerializationApi::class) internal class StreamingJsonEncoder( private val composer: Composer, override val json: Json, diff --git a/formats/json/commonMain/src/kotlinx/serialization/json/internal/TreeJsonDecoder.kt b/formats/json/commonMain/src/kotlinx/serialization/json/internal/TreeJsonDecoder.kt index 55e23a13..fd283118 100644 --- a/formats/json/commonMain/src/kotlinx/serialization/json/internal/TreeJsonDecoder.kt +++ b/formats/json/commonMain/src/kotlinx/serialization/json/internal/TreeJsonDecoder.kt @@ -161,7 +161,6 @@ private sealed class AbstractJsonTreeDecoder( return this as? JsonLiteral ?: throw JsonDecodingException(-1, "Unexpected 'null' when $type was expected") } - @OptIn(ExperimentalUnsignedTypes::class) override fun decodeTaggedInline(tag: String, inlineDescriptor: SerialDescriptor): Decoder = if (inlineDescriptor.isUnsignedNumber) JsonDecoderForUnsignedTypes(StringJsonLexer(getPrimitiveValue(tag).content), json) else super.decodeTaggedInline(tag, inlineDescriptor) diff --git a/formats/json/commonMain/src/kotlinx/serialization/json/internal/TreeJsonEncoder.kt b/formats/json/commonMain/src/kotlinx/serialization/json/internal/TreeJsonEncoder.kt index 5c167b93..dfd4b2c0 100644 --- a/formats/json/commonMain/src/kotlinx/serialization/json/internal/TreeJsonEncoder.kt +++ b/formats/json/commonMain/src/kotlinx/serialization/json/internal/TreeJsonEncoder.kt @@ -101,7 +101,6 @@ private sealed class AbstractJsonTreeEncoder( putElement(tag, JsonPrimitive(value.toString())) } - @OptIn(ExperimentalUnsignedTypes::class) override fun encodeTaggedInline(tag: String, inlineDescriptor: SerialDescriptor): Encoder = if (inlineDescriptor.isUnsignedNumber) object : AbstractEncoder() { override val serializersModule: SerializersModule = json.serializersModule diff --git a/formats/json/commonTest/src/kotlinx/serialization/features/inline/EncodeInlineElementTest.kt b/formats/json/commonTest/src/kotlinx/serialization/features/inline/EncodeInlineElementTest.kt index 5c53be0a..56a7f3d2 100644 --- a/formats/json/commonTest/src/kotlinx/serialization/features/inline/EncodeInlineElementTest.kt +++ b/formats/json/commonTest/src/kotlinx/serialization/features/inline/EncodeInlineElementTest.kt @@ -2,8 +2,6 @@ * Copyright 2017-2022 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ -@file:OptIn(ExperimentalUnsignedTypes::class) - package kotlinx.serialization.features.inline import kotlinx.serialization.* diff --git a/formats/json/commonTest/src/kotlinx/serialization/features/inline/InlineClassesTest.kt b/formats/json/commonTest/src/kotlinx/serialization/features/inline/InlineClassesTest.kt index 1eedafae..6b074b34 100644 --- a/formats/json/commonTest/src/kotlinx/serialization/features/inline/InlineClassesTest.kt +++ b/formats/json/commonTest/src/kotlinx/serialization/features/inline/InlineClassesTest.kt @@ -3,11 +3,6 @@ */ @file:Suppress("INLINE_CLASSES_NOT_SUPPORTED", "SERIALIZER_NOT_FOUND") -@file:OptIn(ExperimentalUnsignedTypes::class) - -/* - * Copyright 2017-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. - */ package kotlinx.serialization.features.inline diff --git a/formats/json/commonTest/src/kotlinx/serialization/features/inline/UnsignedIntegersTest.kt b/formats/json/commonTest/src/kotlinx/serialization/features/inline/UnsignedIntegersTest.kt index 26d67288..3611fc27 100644 --- a/formats/json/commonTest/src/kotlinx/serialization/features/inline/UnsignedIntegersTest.kt +++ b/formats/json/commonTest/src/kotlinx/serialization/features/inline/UnsignedIntegersTest.kt @@ -1,7 +1,5 @@ -@file:Suppress("INLINE_CLASSES_NOT_SUPPORTED", "SERIALIZER_NOT_FOUND") -@file:OptIn(ExperimentalUnsignedTypes::class) /* - * Copyright 2017-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + * Copyright 2017-2022 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ package kotlinx.serialization.features.inline -- cgit v1.2.3