diff --git a/plugins/kotlinx-serialization/kotlinx-serialization.k2/src/org/jetbrains/kotlinx/serialization/compiler/fir/services/FirSerializablePropertiesProvider.kt b/plugins/kotlinx-serialization/kotlinx-serialization.k2/src/org/jetbrains/kotlinx/serialization/compiler/fir/services/FirSerializablePropertiesProvider.kt index 1c91d2394e0..6d56497f067 100644 --- a/plugins/kotlinx-serialization/kotlinx-serialization.k2/src/org/jetbrains/kotlinx/serialization/compiler/fir/services/FirSerializablePropertiesProvider.kt +++ b/plugins/kotlinx-serialization/kotlinx-serialization.k2/src/org/jetbrains/kotlinx/serialization/compiler/fir/services/FirSerializablePropertiesProvider.kt @@ -89,7 +89,7 @@ class FirSerializablePropertiesProvider(session: FirSession) : FirExtensionSessi .let { restoreCorrectOrderFromClassProtoExtension(classSymbol, it) } val isExternallySerializable = classSymbol.isEnumClass || - primaryConstructorProperties.size == classSymbol.primaryConstructorSymbol()?.valueParameterSymbols?.size + primaryConstructorProperties.size == (classSymbol.primaryConstructorSymbol()?.valueParameterSymbols?.size ?: 0) val (serializableConstructorProperties, serializableStandaloneProperties) = serializableProperties.partition { it.propertySymbol in primaryConstructorProperties } return FirSerializableProperties( diff --git a/plugins/kotlinx-serialization/testData/diagnostics/externalSerialierJava.kt b/plugins/kotlinx-serialization/testData/diagnostics/externalSerialierJava.kt new file mode 100644 index 00000000000..d2c446461ae --- /dev/null +++ b/plugins/kotlinx-serialization/testData/diagnostics/externalSerialierJava.kt @@ -0,0 +1,21 @@ +// FIR_IDENTICAL +// WITH_STDLIB +// SKIP_TXT +import kotlinx.serialization.* +import kotlinx.serialization.descriptors.* +import kotlinx.serialization.encoding.* +import java.util.* + + +@Serializer(forClass = Date::class) +object DateSerializer : KSerializer { + override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("java.util.Date", PrimitiveKind.STRING) + + override fun serialize(encoder: Encoder, value: Date) { + TODO() + } + + override fun deserialize(decoder: Decoder): Date { + TODO() + } +} diff --git a/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationFirDiagnosticTestGenerated.java b/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationFirDiagnosticTestGenerated.java index 9b04b20e661..78f145b5023 100644 --- a/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationFirDiagnosticTestGenerated.java +++ b/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationFirDiagnosticTestGenerated.java @@ -44,6 +44,12 @@ public class SerializationFirDiagnosticTestGenerated extends AbstractSerializati runTest("plugins/kotlinx-serialization/testData/diagnostics/EnumDuplicateSerialName.kt"); } + @Test + @TestMetadata("externalSerialierJava.kt") + public void testExternalSerialierJava() throws Exception { + runTest("plugins/kotlinx-serialization/testData/diagnostics/externalSerialierJava.kt"); + } + @Test @TestMetadata("ExternalSerializers.kt") public void testExternalSerializers() throws Exception { diff --git a/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationPluginDiagnosticTestGenerated.java b/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationPluginDiagnosticTestGenerated.java index 484f3376e09..414107b749a 100644 --- a/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationPluginDiagnosticTestGenerated.java +++ b/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationPluginDiagnosticTestGenerated.java @@ -42,6 +42,12 @@ public class SerializationPluginDiagnosticTestGenerated extends AbstractSerializ runTest("plugins/kotlinx-serialization/testData/diagnostics/EnumDuplicateSerialName.kt"); } + @Test + @TestMetadata("externalSerialierJava.kt") + public void testExternalSerialierJava() throws Exception { + runTest("plugins/kotlinx-serialization/testData/diagnostics/externalSerialierJava.kt"); + } + @Test @TestMetadata("ExternalSerializers.kt") public void testExternalSerializers() throws Exception {