diff --git a/plugins/kotlinx-serialization/kotlinx-serialization.backend/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializationJvmIrIntrinsicSupport.kt b/plugins/kotlinx-serialization/kotlinx-serialization.backend/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializationJvmIrIntrinsicSupport.kt index 871743207f5..f0b43dab6de 100644 --- a/plugins/kotlinx-serialization/kotlinx-serialization.backend/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializationJvmIrIntrinsicSupport.kt +++ b/plugins/kotlinx-serialization/kotlinx-serialization.backend/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializationJvmIrIntrinsicSupport.kt @@ -160,7 +160,7 @@ class SerializationJvmIrIntrinsicSupport( } override val runtimeHasEnumSerializerFactoryFunctions: Boolean - get() = currentVersion != null && currentVersion!! > ApiVersion.parse("1.4.0")!! + get() = currentVersion != null && currentVersion!! >= ApiVersion.parse("1.5.0")!! private val hasNewContextSerializerSignature: Boolean get() = currentVersion != null && currentVersion!! >= ApiVersion.parse("1.2.0")!! diff --git a/plugins/kotlinx-serialization/kotlinx-serialization.k1/src/org/jetbrains/kotlinx/serialization/compiler/diagnostic/SerializationPluginDeclarationChecker.kt b/plugins/kotlinx-serialization/kotlinx-serialization.k1/src/org/jetbrains/kotlinx/serialization/compiler/diagnostic/SerializationPluginDeclarationChecker.kt index 2226e853658..6dcb7d6ab85 100644 --- a/plugins/kotlinx-serialization/kotlinx-serialization.k1/src/org/jetbrains/kotlinx/serialization/compiler/diagnostic/SerializationPluginDeclarationChecker.kt +++ b/plugins/kotlinx-serialization/kotlinx-serialization.k1/src/org/jetbrains/kotlinx/serialization/compiler/diagnostic/SerializationPluginDeclarationChecker.kt @@ -25,6 +25,7 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.* import org.jetbrains.kotlin.resolve.lazy.descriptors.LazyAnnotationDescriptor import org.jetbrains.kotlin.resolve.source.getPsi import org.jetbrains.kotlin.types.KotlinType +import org.jetbrains.kotlin.types.typeUtil.isEnum import org.jetbrains.kotlin.types.typeUtil.supertypes import org.jetbrains.kotlin.util.slicedMap.Slices import org.jetbrains.kotlin.util.slicedMap.WritableSlice @@ -501,7 +502,10 @@ open class SerializationPluginDeclarationChecker : DeclarationChecker { checkSerializerNullability(type, serializer.defaultType, element, trace, fallbackElement) checkTypeArguments(module, type, element, trace, fallbackElement) } else { - trace.report(SerializationErrors.SERIALIZER_NOT_FOUND.on(element ?: fallbackElement, type)) + if (!type.isEnum()) { + // enums are always serializable + trace.report(SerializationErrors.SERIALIZER_NOT_FOUND.on(element ?: fallbackElement, type)) + } } } diff --git a/plugins/kotlinx-serialization/kotlinx-serialization.k2/src/org/jetbrains/kotlinx/serialization/compiler/fir/checkers/FirSerializationPluginClassChecker.kt b/plugins/kotlinx-serialization/kotlinx-serialization.k2/src/org/jetbrains/kotlinx/serialization/compiler/fir/checkers/FirSerializationPluginClassChecker.kt index 31b1e109663..6d16304bb53 100644 --- a/plugins/kotlinx-serialization/kotlinx-serialization.k2/src/org/jetbrains/kotlinx/serialization/compiler/fir/checkers/FirSerializationPluginClassChecker.kt +++ b/plugins/kotlinx-serialization/kotlinx-serialization.k2/src/org/jetbrains/kotlinx/serialization/compiler/fir/checkers/FirSerializationPluginClassChecker.kt @@ -539,7 +539,10 @@ object FirSerializationPluginClassChecker : FirClassChecker() { } checkTypeArguments(type, source, reporter) } else { - reporter.reportOn(source, FirSerializationErrors.SERIALIZER_NOT_FOUND, type) + if (!type.isEnum) { + // enums are always serializable + reporter.reportOn(source, FirSerializationErrors.SERIALIZER_NOT_FOUND, type) + } } }