diff --git a/build.gradle b/build.gradle index 60b7e2733..f696639fc 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 91052fe2c..19698c459 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 b2657d656..90c1f28d3 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 018311545..eddfbdf90 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 a6d0d0f41..6fcfa2c0a 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 d3860d21b..553d6358e 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 9c6ba7429..834e59770 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 d2d9985b7..0fe6371e5 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 55e23a13b..fd2831187 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 5c167b93e..dfd4b2c05 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 5c53be0ac..56a7f3d27 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 1eedafae9..6b074b348 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 26d67288f..3611fc27a 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