summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbduqodiri Qurbonzoda <a.qurbonzoda@gmail.com>2023-06-23 16:03:55 +0300
committerGitHub <noreply@github.com>2023-06-23 15:03:55 +0200
commitd192d244a7188d24e1dbf2e79ff33ea984e63e04 (patch)
treefcb5b6909363b94b036f32920fbf101a1df9c195
parent39918cb2382b5e069f25d70fbc0a2665074be56c (diff)
downloadkotlinx.serialization-d192d244a7188d24e1dbf2e79ff33ea984e63e04.tar.gz
Fix Kotlin user projects build (#2341)
* Remove @SharedImmutable usages The annotation is deprecated and has no effect. * Suppress animal sniffer error in a data class with boolean property The error is a result of changes in data class hashCode generation. The generated code now uses the static Boolean.hashCode() to calculate hash code of boolean properties. The static function is available only since Java 1.8.
-rw-r--r--build.gradle2
-rw-r--r--core/commonMain/src/kotlinx/serialization/internal/Platform.common.kt1
-rw-r--r--core/commonMain/src/kotlinx/serialization/internal/PluginHelperInterfaces.kt1
-rw-r--r--core/commonMain/src/kotlinx/serialization/internal/Primitives.kt1
-rw-r--r--core/commonMain/src/kotlinx/serialization/internal/Tuples.kt1
-rw-r--r--core/commonMain/src/kotlinx/serialization/modules/SerializersModule.kt1
-rw-r--r--core/commonTest/src/kotlinx/serialization/PolymorphismTestData.kt1
-rw-r--r--core/commonTest/src/kotlinx/serialization/UmbrellaTypes.kt1
-rw-r--r--core/nativeTest/src/kotlinx/serialization/test/CurrentPlatform.kt2
-rw-r--r--formats/cbor/commonTest/src/kotlinx/serialization/PolymorphismTestData.kt1
-rw-r--r--formats/json-tests/commonTest/src/kotlinx/serialization/PolymorphismTestData.kt1
-rw-r--r--formats/json-tests/commonTest/src/kotlinx/serialization/UmbrellaTypes.kt1
-rw-r--r--formats/json-tests/commonTest/src/kotlinx/serialization/json/polymorphic/PolymorphicClasses.kt3
-rw-r--r--formats/json-tests/nativeTest/src/kotlinx/serialization/test/CurrentPlatform.kt3
-rw-r--r--formats/json/commonMain/src/kotlinx/serialization/json/JsonElement.kt2
-rw-r--r--formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonNamesMap.kt2
-rw-r--r--formats/json/commonMain/src/kotlinx/serialization/json/internal/StreamingJsonEncoder.kt1
-rw-r--r--formats/json/commonMain/src/kotlinx/serialization/json/internal/StringOps.kt2
-rw-r--r--formats/protobuf/commonMain/src/kotlinx/serialization/protobuf/internal/SuppressAnimalSniffer.kt14
-rw-r--r--formats/protobuf/commonMain/src/kotlinx/serialization/protobuf/schema/ProtoBufSchemaGenerator.kt1
-rw-r--r--formats/protobuf/commonTest/src/kotlinx/serialization/PolymorphismTestData.kt1
-rw-r--r--formats/protobuf/nativeTest/src/kotlinx/serialization/test/CurrentPlatform.kt4
22 files changed, 17 insertions, 30 deletions
diff --git a/build.gradle b/build.gradle
index 7d912ba6..dffdd2bf 100644
--- a/build.gradle
+++ b/build.gradle
@@ -204,6 +204,8 @@ subprojects {
case "kotlinx-serialization-hocon":
annotationValue = "kotlinx.serialization.hocon.internal.SuppressAnimalSniffer"
break
+ case "kotlinx-serialization-protobuf":
+ annotationValue = "kotlinx.serialization.protobuf.internal.SuppressAnimalSniffer"
}
annotation = annotationValue
}
diff --git a/core/commonMain/src/kotlinx/serialization/internal/Platform.common.kt b/core/commonMain/src/kotlinx/serialization/internal/Platform.common.kt
index e9351853..c16945c9 100644
--- a/core/commonMain/src/kotlinx/serialization/internal/Platform.common.kt
+++ b/core/commonMain/src/kotlinx/serialization/internal/Platform.common.kt
@@ -65,7 +65,6 @@ internal fun SerialDescriptor.cachedSerialNames(): Set<String> {
return result
}
-@SharedImmutable
private val EMPTY_DESCRIPTOR_ARRAY: Array<SerialDescriptor> = arrayOf()
/**
diff --git a/core/commonMain/src/kotlinx/serialization/internal/PluginHelperInterfaces.kt b/core/commonMain/src/kotlinx/serialization/internal/PluginHelperInterfaces.kt
index f613c2ad..61272d29 100644
--- a/core/commonMain/src/kotlinx/serialization/internal/PluginHelperInterfaces.kt
+++ b/core/commonMain/src/kotlinx/serialization/internal/PluginHelperInterfaces.kt
@@ -8,7 +8,6 @@ import kotlinx.serialization.*
import kotlin.jvm.*
import kotlin.native.concurrent.*
-@SharedImmutable
@JvmField
internal val EMPTY_SERIALIZER_ARRAY: Array<KSerializer<*>> = arrayOf()
diff --git a/core/commonMain/src/kotlinx/serialization/internal/Primitives.kt b/core/commonMain/src/kotlinx/serialization/internal/Primitives.kt
index fad4bfc6..2d9c5285 100644
--- a/core/commonMain/src/kotlinx/serialization/internal/Primitives.kt
+++ b/core/commonMain/src/kotlinx/serialization/internal/Primitives.kt
@@ -16,7 +16,6 @@ import kotlin.reflect.*
import kotlin.time.Duration
@OptIn(ExperimentalUnsignedTypes::class)
-@SharedImmutable
private val BUILTIN_SERIALIZERS = mapOf(
String::class to String.serializer(),
Char::class to Char.serializer(),
diff --git a/core/commonMain/src/kotlinx/serialization/internal/Tuples.kt b/core/commonMain/src/kotlinx/serialization/internal/Tuples.kt
index 88e25179..1bd21cbe 100644
--- a/core/commonMain/src/kotlinx/serialization/internal/Tuples.kt
+++ b/core/commonMain/src/kotlinx/serialization/internal/Tuples.kt
@@ -11,7 +11,6 @@ import kotlinx.serialization.descriptors.*
import kotlinx.serialization.encoding.*
import kotlin.native.concurrent.*
-@SharedImmutable
private val NULL = Any()
private const val deprecationMessage =
"This class is used only by the plugin in generated code and should not be used directly. Use corresponding factory functions instead"
diff --git a/core/commonMain/src/kotlinx/serialization/modules/SerializersModule.kt b/core/commonMain/src/kotlinx/serialization/modules/SerializersModule.kt
index d022d121..f01f952a 100644
--- a/core/commonMain/src/kotlinx/serialization/modules/SerializersModule.kt
+++ b/core/commonMain/src/kotlinx/serialization/modules/SerializersModule.kt
@@ -73,7 +73,6 @@ public sealed class SerializersModule {
/**
* A [SerializersModule] which is empty and always returns `null`.
*/
-@SharedImmutable
@Deprecated("Deprecated in the favour of 'EmptySerializersModule()'",
level = DeprecationLevel.WARNING,
replaceWith = ReplaceWith("EmptySerializersModule()"))
diff --git a/core/commonTest/src/kotlinx/serialization/PolymorphismTestData.kt b/core/commonTest/src/kotlinx/serialization/PolymorphismTestData.kt
index 393e2b59..22de3a4d 100644
--- a/core/commonTest/src/kotlinx/serialization/PolymorphismTestData.kt
+++ b/core/commonTest/src/kotlinx/serialization/PolymorphismTestData.kt
@@ -30,7 +30,6 @@ open class PolyBase(val id: Int) {
@Serializable
data class PolyDerived(val s: String) : PolyBase(1)
-@SharedImmutable
val BaseAndDerivedModule = SerializersModule {
polymorphic(PolyBase::class, PolyBase.serializer()) {
subclass(PolyDerived.serializer())
diff --git a/core/commonTest/src/kotlinx/serialization/UmbrellaTypes.kt b/core/commonTest/src/kotlinx/serialization/UmbrellaTypes.kt
index 61e42f61..24e4c520 100644
--- a/core/commonTest/src/kotlinx/serialization/UmbrellaTypes.kt
+++ b/core/commonTest/src/kotlinx/serialization/UmbrellaTypes.kt
@@ -67,7 +67,6 @@ data class ArraysUmbrella(
arrIntData.contentEquals(other.arrIntData)
}
-@SharedImmutable
val umbrellaInstance = TypesUmbrella(
Unit, true, 10, 20, 30, 40, 50.1f, 60.1, 'A', "Str0", Attitude.POSITIVE, IntData(70),
null, null, 11, 21, 31, 41, 51.1f, 61.1, 'B', "Str1", Attitude.NEUTRAL, null,
diff --git a/core/nativeTest/src/kotlinx/serialization/test/CurrentPlatform.kt b/core/nativeTest/src/kotlinx/serialization/test/CurrentPlatform.kt
index 9e51d7f4..2691ce04 100644
--- a/core/nativeTest/src/kotlinx/serialization/test/CurrentPlatform.kt
+++ b/core/nativeTest/src/kotlinx/serialization/test/CurrentPlatform.kt
@@ -5,7 +5,5 @@
package kotlinx.serialization.test
import kotlinx.serialization.test.Platform
-import kotlin.native.concurrent.SharedImmutable
-@SharedImmutable
public actual val currentPlatform: Platform = Platform.NATIVE
diff --git a/formats/cbor/commonTest/src/kotlinx/serialization/PolymorphismTestData.kt b/formats/cbor/commonTest/src/kotlinx/serialization/PolymorphismTestData.kt
index 86aafe42..b4d3c53a 100644
--- a/formats/cbor/commonTest/src/kotlinx/serialization/PolymorphismTestData.kt
+++ b/formats/cbor/commonTest/src/kotlinx/serialization/PolymorphismTestData.kt
@@ -19,7 +19,6 @@ data class SimpleStringInheritor(val s: String, val i: Int) : SimpleAbstract()
@Serializable
data class PolyBox(@Polymorphic val boxed: SimpleAbstract)
-@SharedImmutable
val SimplePolymorphicModule = SerializersModule {
polymorphic(SimpleAbstract::class) {
subclass(SimpleIntInheritor.serializer())
diff --git a/formats/json-tests/commonTest/src/kotlinx/serialization/PolymorphismTestData.kt b/formats/json-tests/commonTest/src/kotlinx/serialization/PolymorphismTestData.kt
index 6d4d42f2..a185ccb7 100644
--- a/formats/json-tests/commonTest/src/kotlinx/serialization/PolymorphismTestData.kt
+++ b/formats/json-tests/commonTest/src/kotlinx/serialization/PolymorphismTestData.kt
@@ -37,7 +37,6 @@ class PolyDefaultWithId(id: Int) : PolyBase(id)
@Serializable
data class PolyDerived(val s: String) : PolyBase(1)
-@SharedImmutable
val BaseAndDerivedModule = SerializersModule {
polymorphic(PolyBase::class, PolyBase.serializer()) {
subclass(PolyDerived.serializer())
diff --git a/formats/json-tests/commonTest/src/kotlinx/serialization/UmbrellaTypes.kt b/formats/json-tests/commonTest/src/kotlinx/serialization/UmbrellaTypes.kt
index 5e6432ea..52ab0f27 100644
--- a/formats/json-tests/commonTest/src/kotlinx/serialization/UmbrellaTypes.kt
+++ b/formats/json-tests/commonTest/src/kotlinx/serialization/UmbrellaTypes.kt
@@ -64,7 +64,6 @@ data class ArraysUmbrella(
arrIntData.contentEquals(other.arrIntData)
}
-@SharedImmutable
val umbrellaInstance = TypesUmbrella(
Unit, true, 10, 20, 30, 40, 50.1f, 60.1, 'A', "Str0", Attitude.POSITIVE, IntData(70),
null, null, 11, 21, 31, 41, 51.1f, 61.1, 'B', "Str1", Attitude.NEUTRAL, null,
diff --git a/formats/json-tests/commonTest/src/kotlinx/serialization/json/polymorphic/PolymorphicClasses.kt b/formats/json-tests/commonTest/src/kotlinx/serialization/json/polymorphic/PolymorphicClasses.kt
index e46de17a..e70d89c3 100644
--- a/formats/json-tests/commonTest/src/kotlinx/serialization/json/polymorphic/PolymorphicClasses.kt
+++ b/formats/json-tests/commonTest/src/kotlinx/serialization/json/polymorphic/PolymorphicClasses.kt
@@ -38,7 +38,6 @@ internal data class OuterBox(@Polymorphic val outerBase: OuterBase, @Polymorphic
@Serializable
internal data class OuterNullableBox(@Polymorphic val outerBase: OuterBase?, @Polymorphic val innerBase: InnerBase?)
-@SharedImmutable
internal val polymorphicTestModule = SerializersModule {
polymorphic(InnerBase::class) {
subclass(InnerImpl.serializer())
@@ -51,13 +50,11 @@ internal val polymorphicTestModule = SerializersModule {
}
}
-@SharedImmutable
internal val polymorphicJson = Json {
serializersModule = polymorphicTestModule
encodeDefaults = true
}
-@SharedImmutable
internal val polymorphicRelaxedJson = Json {
isLenient = true
serializersModule = polymorphicTestModule
diff --git a/formats/json-tests/nativeTest/src/kotlinx/serialization/test/CurrentPlatform.kt b/formats/json-tests/nativeTest/src/kotlinx/serialization/test/CurrentPlatform.kt
index 32806c1f..58249044 100644
--- a/formats/json-tests/nativeTest/src/kotlinx/serialization/test/CurrentPlatform.kt
+++ b/formats/json-tests/nativeTest/src/kotlinx/serialization/test/CurrentPlatform.kt
@@ -4,8 +4,5 @@
package kotlinx.serialization.test
-import kotlin.native.concurrent.SharedImmutable
-
-@SharedImmutable
public actual val currentPlatform: Platform = Platform.NATIVE
diff --git a/formats/json/commonMain/src/kotlinx/serialization/json/JsonElement.kt b/formats/json/commonMain/src/kotlinx/serialization/json/JsonElement.kt
index 01359435..74abf34a 100644
--- a/formats/json/commonMain/src/kotlinx/serialization/json/JsonElement.kt
+++ b/formats/json/commonMain/src/kotlinx/serialization/json/JsonElement.kt
@@ -11,7 +11,6 @@ import kotlinx.serialization.builtins.serializer
import kotlinx.serialization.descriptors.SerialDescriptor
import kotlinx.serialization.internal.InlinePrimitiveDescriptor
import kotlinx.serialization.json.internal.*
-import kotlin.native.concurrent.SharedImmutable
/**
* Class representing single JSON element.
@@ -134,7 +133,6 @@ public fun JsonUnquotedLiteral(value: String?): JsonPrimitive {
}
/** Used as a marker to indicate during encoding that the [JsonEncoder] should use `encodeInline()` */
-@SharedImmutable
internal val jsonUnquotedLiteralDescriptor: SerialDescriptor =
InlinePrimitiveDescriptor("kotlinx.serialization.json.JsonUnquotedLiteral", String.serializer())
diff --git a/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonNamesMap.kt b/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonNamesMap.kt
index 762bacd9..fc9cc19b 100644
--- a/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonNamesMap.kt
+++ b/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonNamesMap.kt
@@ -11,10 +11,8 @@ import kotlinx.serialization.encoding.*
import kotlinx.serialization.json.*
import kotlin.native.concurrent.*
-@SharedImmutable
internal val JsonDeserializationNamesKey = DescriptorSchemaCache.Key<Map<String, Int>>()
-@SharedImmutable
internal val JsonSerializationNamesKey = DescriptorSchemaCache.Key<Array<String>>()
private fun SerialDescriptor.buildDeserializationNamesMap(json: Json): Map<String, Int> {
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 10a464d0..c6f76cb3 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.*
-@SharedImmutable
private val unsignedNumberDescriptors = setOf(
UInt.serializer().descriptor,
ULong.serializer().descriptor,
diff --git a/formats/json/commonMain/src/kotlinx/serialization/json/internal/StringOps.kt b/formats/json/commonMain/src/kotlinx/serialization/json/internal/StringOps.kt
index f253d35a..f488d903 100644
--- a/formats/json/commonMain/src/kotlinx/serialization/json/internal/StringOps.kt
+++ b/formats/json/commonMain/src/kotlinx/serialization/json/internal/StringOps.kt
@@ -13,7 +13,6 @@ private fun toHexChar(i: Int) : Char {
}
@PublishedApi
-@SharedImmutable
internal val ESCAPE_STRINGS: Array<String?> = arrayOfNulls<String>(93).apply {
for (c in 0..0x1f) {
val c1 = toHexChar(c shr 12)
@@ -31,7 +30,6 @@ internal val ESCAPE_STRINGS: Array<String?> = arrayOfNulls<String>(93).apply {
this[0x0c] = "\\f"
}
-@SharedImmutable
internal val ESCAPE_MARKERS: ByteArray = ByteArray(93).apply {
for (c in 0..0x1f) {
this[c] = 1.toByte()
diff --git a/formats/protobuf/commonMain/src/kotlinx/serialization/protobuf/internal/SuppressAnimalSniffer.kt b/formats/protobuf/commonMain/src/kotlinx/serialization/protobuf/internal/SuppressAnimalSniffer.kt
new file mode 100644
index 00000000..35607ec9
--- /dev/null
+++ b/formats/protobuf/commonMain/src/kotlinx/serialization/protobuf/internal/SuppressAnimalSniffer.kt
@@ -0,0 +1,14 @@
+/*
+ * Copyright 2017-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
+ */
+
+package kotlinx.serialization.protobuf.internal
+
+/**
+ * Suppresses Animal Sniffer plugin errors for certain methods.
+ * Such methods include references to Java 8 methods that are not
+ * available in Android API, but can be desugared by R8.
+ */
+@Retention(AnnotationRetention.BINARY)
+@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION)
+internal annotation class SuppressAnimalSniffer \ No newline at end of file
diff --git a/formats/protobuf/commonMain/src/kotlinx/serialization/protobuf/schema/ProtoBufSchemaGenerator.kt b/formats/protobuf/commonMain/src/kotlinx/serialization/protobuf/schema/ProtoBufSchemaGenerator.kt
index 8f326939..b22df626 100644
--- a/formats/protobuf/commonMain/src/kotlinx/serialization/protobuf/schema/ProtoBufSchemaGenerator.kt
+++ b/formats/protobuf/commonMain/src/kotlinx/serialization/protobuf/schema/ProtoBufSchemaGenerator.kt
@@ -433,6 +433,7 @@ public object ProtoBufSchemaGenerator {
}
}
+ @SuppressAnimalSniffer // Boolean.hashCode(boolean) in compiler-generated hashCode implementation
private data class TypeDefinition(
val descriptor: SerialDescriptor,
val isSynthetic: Boolean = false,
diff --git a/formats/protobuf/commonTest/src/kotlinx/serialization/PolymorphismTestData.kt b/formats/protobuf/commonTest/src/kotlinx/serialization/PolymorphismTestData.kt
index 7ef97293..eb6ebe7e 100644
--- a/formats/protobuf/commonTest/src/kotlinx/serialization/PolymorphismTestData.kt
+++ b/formats/protobuf/commonTest/src/kotlinx/serialization/PolymorphismTestData.kt
@@ -46,7 +46,6 @@ data class SimpleStringInheritor(val s: String, val i: Int) : SimpleAbstract()
@Serializable
data class PolyBox(@Polymorphic val boxed: SimpleAbstract)
-@SharedImmutable
val SimplePolymorphicModule = SerializersModule {
polymorphic(SimpleAbstract::class) {
subclass(SimpleIntInheritor.serializer())
diff --git a/formats/protobuf/nativeTest/src/kotlinx/serialization/test/CurrentPlatform.kt b/formats/protobuf/nativeTest/src/kotlinx/serialization/test/CurrentPlatform.kt
index 36221960..badc7b03 100644
--- a/formats/protobuf/nativeTest/src/kotlinx/serialization/test/CurrentPlatform.kt
+++ b/formats/protobuf/nativeTest/src/kotlinx/serialization/test/CurrentPlatform.kt
@@ -5,8 +5,4 @@
package kotlinx.serialization.test
-import kotlin.native.concurrent.SharedImmutable
-
-
-@SharedImmutable
public actual val currentPlatform: Platform = Platform.NATIVE