[Serialization] Add wasm target platform to serialization plugin

This commit is contained in:
Igor Yakovlev
2023-03-28 20:16:15 +02:00
committed by Space Team
parent e990c8efd2
commit 8cb1fca299
3 changed files with 6 additions and 3 deletions
@@ -25,6 +25,7 @@ import org.jetbrains.kotlin.ir.types.*
import org.jetbrains.kotlin.ir.util.*
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.platform.isJs
import org.jetbrains.kotlin.platform.isWasm
import org.jetbrains.kotlin.platform.konan.isNative
import org.jetbrains.kotlinx.serialization.compiler.extensions.SerializationPluginContext
import org.jetbrains.kotlinx.serialization.compiler.fir.SerializationPluginKey
@@ -186,7 +187,7 @@ fun IrClass.findSerializableSyntheticConstructor(): IrConstructorSymbol? {
}
internal fun IrClass.needSerializerFactory(compilerContext: SerializationPluginContext): Boolean {
if (!(compilerContext.platform?.isNative() == true || compilerContext.platform.isJs())) return false
if (!(compilerContext.platform?.isNative() == true || compilerContext.platform.isJs() || compilerContext.platform.isWasm())) return false
val serializableClass = getSerializableClassDescriptorByCompanion(this) ?: return false
if (serializableClass.isSerializableObject) return true
if (serializableClass.isSerializableEnum()) return true
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.descriptors.annotations.Annotations
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.platform.isJs
import org.jetbrains.kotlin.platform.isWasm
import org.jetbrains.kotlin.platform.konan.isNative
import org.jetbrains.kotlin.psi.KtAnnotationEntry
import org.jetbrains.kotlin.resolve.descriptorUtil.annotationClass
@@ -267,7 +268,7 @@ fun getSerializableClassDescriptorByCompanion(thisDescriptor: ClassDescriptor):
}
fun ClassDescriptor.needSerializerFactory(): Boolean {
if (!(this.platform?.isNative() == true || this.platform.isJs())) return false
if (!(this.platform?.isNative() == true || this.platform.isJs() || this.platform.isWasm())) return false
val serializableClass = getSerializableClassDescriptorByCompanion(this) ?: return false
if (serializableClass.isSerializableObject) return true
if (serializableClass.isSerializableEnum()) return true
@@ -37,6 +37,7 @@ import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.name.SpecialNames
import org.jetbrains.kotlin.platform.isJs
import org.jetbrains.kotlin.platform.isWasm
import org.jetbrains.kotlin.platform.konan.isNative
import org.jetbrains.kotlinx.serialization.compiler.resolve.SerialEntityNames
import org.jetbrains.kotlinx.serialization.compiler.resolve.SerialEntityNames.SERIALIZER_FACTORY_INTERFACE_NAME
@@ -311,7 +312,7 @@ class SerializationFirResolveExtension(session: FirSession) : FirDeclarationGene
context(FirSession)
private val FirClassSymbol<*>.companionNeedsSerializerFactory: Boolean
get() {
if (!(moduleData.platform.isNative() || moduleData.platform.isJs())) return false
if (!(moduleData.platform.isNative() || moduleData.platform.isJs() || moduleData.platform.isWasm())) return false
if (isSerializableObject) return true
if (isSerializableEnum) return true
if (isAbstractOrSealedSerializableClass) return true