[kotlin-tooling-core] Allow nullable extra values
The change is binary compatible, but not source compatible. Potential clients like Google might need to adapt a potential `IdeaKotlinExtrasSerializationExtension` implementaiton. Right now, no such implementation is known
This commit is contained in:
committed by
Space Team
parent
622a88ff26
commit
704379934e
+3
-3
@@ -18,10 +18,10 @@ import org.jetbrains.kotlin.tooling.core.Extras
|
||||
* inside the implementation of the given [IdeaKotlinExtrasSerializer]
|
||||
*/
|
||||
interface IdeaKotlinExtrasSerializationExtension {
|
||||
fun <T : Any> serializer(key: Extras.Key<T>): IdeaKotlinExtrasSerializer<T>?
|
||||
fun <T> serializer(key: Extras.Key<T>): IdeaKotlinExtrasSerializer<T>?
|
||||
|
||||
object Empty : IdeaKotlinExtrasSerializationExtension {
|
||||
override fun <T : Any> serializer(key: Extras.Key<T>): IdeaKotlinExtrasSerializer<T>? = null
|
||||
override fun <T> serializer(key: Extras.Key<T>): IdeaKotlinExtrasSerializer<T>? = null
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@ private class IdeaKotlinExtrasSerializationExtensionBuilderImpl : IdeaKotlinExtr
|
||||
private class IdeaKotlinExtrasSerializationExtensionImpl(
|
||||
private val map: Map<Extras.Key<*>, IdeaKotlinExtrasSerializer<*>>
|
||||
) : IdeaKotlinExtrasSerializationExtension {
|
||||
override fun <T : Any> serializer(key: Extras.Key<T>): IdeaKotlinExtrasSerializer<T>? {
|
||||
override fun <T> serializer(key: Extras.Key<T>): IdeaKotlinExtrasSerializer<T>? {
|
||||
@Suppress("unchecked_cast")
|
||||
return map[key] as? IdeaKotlinExtrasSerializer<T>
|
||||
}
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.gradle.idea.serialize
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
|
||||
interface IdeaKotlinExtrasSerializer<T : Any> {
|
||||
interface IdeaKotlinExtrasSerializer<T> {
|
||||
fun serialize(context: IdeaKotlinSerializationContext, value: T): ByteArray?
|
||||
fun deserialize(context: IdeaKotlinSerializationContext, data: ByteArray): T?
|
||||
|
||||
|
||||
+1
-1
@@ -16,7 +16,7 @@ object TestIdeaExtrasSerializationExtension : IdeaKotlinExtrasSerializationExten
|
||||
val ignoredStringKey = extrasKeyOf<String>("ignored")
|
||||
val anySerializableKey = extrasKeyOf<Any>("serializable")
|
||||
|
||||
override fun <T : Any> serializer(key: Extras.Key<T>): IdeaKotlinExtrasSerializer<T>? = when {
|
||||
override fun <T> serializer(key: Extras.Key<T>): IdeaKotlinExtrasSerializer<T>? = when {
|
||||
key == ignoredStringKey -> null
|
||||
key == anySerializableKey -> IdeaKotlinExtrasSerializer.javaIoSerializable<Any>()
|
||||
key.type == extrasTypeOf<String>() -> IdeaKotlinStringExtrasSerializer
|
||||
|
||||
Reference in New Issue
Block a user