summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVsevolod Tolstopyatov <qwwdfsad@gmail.com>2022-06-24 16:43:57 +0200
committerGitHub <noreply@github.com>2022-06-24 17:43:57 +0300
commit605a35faa87534e24482aa00a52a2a71bebd51a3 (patch)
tree91497869a28cc0502a1ecaac9a9b05d4ac747c1d
parent3e8331cf914203571504290bcefcf0080a4a81d9 (diff)
downloadkotlinx.serialization-605a35faa87534e24482aa00a52a2a71bebd51a3.tar.gz
Get rid of @ExperimentalUnsignedTypes on our declarations that levera… (#1962)
* Get rid of @ExperimentalUnsignedTypes on our declarations that leverage non-experimental unsigned types
-rw-r--r--build.gradle3
-rw-r--r--core/commonMain/src/kotlinx/serialization/builtins/BuiltinSerializers.kt4
-rw-r--r--core/commonMain/src/kotlinx/serialization/internal/ValueClasses.kt4
-rw-r--r--docs/builtin-classes.md2
-rw-r--r--formats/json/commonMain/src/kotlinx/serialization/json/JsonElementSerializers.kt2
-rw-r--r--formats/json/commonMain/src/kotlinx/serialization/json/internal/Composers.kt1
-rw-r--r--formats/json/commonMain/src/kotlinx/serialization/json/internal/StreamingJsonDecoder.kt3
-rw-r--r--formats/json/commonMain/src/kotlinx/serialization/json/internal/StreamingJsonEncoder.kt3
-rw-r--r--formats/json/commonMain/src/kotlinx/serialization/json/internal/TreeJsonDecoder.kt1
-rw-r--r--formats/json/commonMain/src/kotlinx/serialization/json/internal/TreeJsonEncoder.kt1
-rw-r--r--formats/json/commonTest/src/kotlinx/serialization/features/inline/EncodeInlineElementTest.kt2
-rw-r--r--formats/json/commonTest/src/kotlinx/serialization/features/inline/InlineClassesTest.kt5
-rw-r--r--formats/json/commonTest/src/kotlinx/serialization/features/inline/UnsignedIntegersTest.kt4
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 <K, V> MapSerializer(
/**
* Returns serializer for [UInt].
*/
-@ExperimentalUnsignedTypes
public fun UInt.Companion.serializer(): KSerializer<UInt> = UIntSerializer
/**
* Returns serializer for [ULong].
*/
-@ExperimentalUnsignedTypes
public fun ULong.Companion.serializer(): KSerializer<ULong> = ULongSerializer
/**
* Returns serializer for [UByte].
*/
-@ExperimentalUnsignedTypes
public fun UByte.Companion.serializer(): KSerializer<UByte> = UByteSerializer
/**
* Returns serializer for [UShort].
*/
-@ExperimentalUnsignedTypes
public fun UShort.Companion.serializer(): KSerializer<UShort> = 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<UInt> {
override val descriptor: SerialDescriptor = InlinePrimitiveDescriptor("kotlin.UInt", Int.serializer())
@@ -24,7 +23,6 @@ internal object UIntSerializer : KSerializer<UInt> {
}
@PublishedApi
-@ExperimentalUnsignedTypes
internal object ULongSerializer : KSerializer<ULong> {
override val descriptor: SerialDescriptor = InlinePrimitiveDescriptor("kotlin.ULong", Long.serializer())
@@ -38,7 +36,6 @@ internal object ULongSerializer : KSerializer<ULong> {
}
@PublishedApi
-@ExperimentalUnsignedTypes
internal object UByteSerializer : KSerializer<UByte> {
override val descriptor: SerialDescriptor = InlinePrimitiveDescriptor("kotlin.UByte", Byte.serializer())
@@ -52,7 +49,6 @@ internal object UByteSerializer : KSerializer<UByte> {
}
@PublishedApi
-@ExperimentalUnsignedTypes
internal object UShortSerializer : KSerializer<UShort> {
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.
<!--- TEST -->
-> 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<JsonLiteral> {
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