diff --git a/plugins/kotlinx-serialization/kotlinx-serialization.k2/src/org/jetbrains/kotlinx/serialization/compiler/fir/SerializationFirResolveExtension.kt b/plugins/kotlinx-serialization/kotlinx-serialization.k2/src/org/jetbrains/kotlinx/serialization/compiler/fir/SerializationFirResolveExtension.kt index 800c50eb4cf..bc809809f83 100644 --- a/plugins/kotlinx-serialization/kotlinx-serialization.k2/src/org/jetbrains/kotlinx/serialization/compiler/fir/SerializationFirResolveExtension.kt +++ b/plugins/kotlinx-serialization/kotlinx-serialization.k2/src/org/jetbrains/kotlinx/serialization/compiler/fir/SerializationFirResolveExtension.kt @@ -260,7 +260,7 @@ class SerializationFirResolveExtension(session: FirSession) : FirDeclarationGene if (owner.name == SerialEntityNames.SERIALIZER_CLASS_NAME && owner.typeParameterSymbols.isNotEmpty()) { result += createConstructor(owner, SerializationPluginKey) { - visibility = Visibilities.Private + visibility = Visibilities.Public owner.typeParameterSymbols.forEachIndexed { i, typeParam -> valueParameter( name = Name.identifier("${SerialEntityNames.typeArgPrefix}$i"), diff --git a/plugins/kotlinx-serialization/testData/boxIr/sealedClassMultifile.kt b/plugins/kotlinx-serialization/testData/boxIr/sealedClassMultifile.kt new file mode 100644 index 00000000000..d554f766caf --- /dev/null +++ b/plugins/kotlinx-serialization/testData/boxIr/sealedClassMultifile.kt @@ -0,0 +1,28 @@ +// TARGET_BACKEND: JVM_IR + +// WITH_STDLIB + +// FILE: a.kt + +import kotlinx.serialization.* + +@Serializable +sealed class Base { + abstract val id: Long +} + +// FILE: b.kt + +import kotlinx.serialization.* +import kotlinx.serialization.descriptors.* + +@Serializable +class DerivedOtherFile( + override val id: Long, + val value: Value +) : Base() + +fun box(): String { + val desc = Base.serializer().descriptor.kind + return if (desc == PolymorphicKind.SEALED) "OK" else desc.toString() +} diff --git a/plugins/kotlinx-serialization/testData/codegen/Intrinsics.asm.fir.txt b/plugins/kotlinx-serialization/testData/codegen/Intrinsics.asm.fir.txt index 4d9aa952e46..119dac4cc1b 100644 --- a/plugins/kotlinx-serialization/testData/codegen/Intrinsics.asm.fir.txt +++ b/plugins/kotlinx-serialization/testData/codegen/Intrinsics.asm.fir.txt @@ -5,9 +5,7 @@ public final class Box$$serializer : java/lang/Object, kotlinx/serialization/int private void () - private void (kotlinx.serialization.KSerializer typeSerial0) - - public void (kotlinx.serialization.KSerializer typeSerial0, kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker) + public void (kotlinx.serialization.KSerializer typeSerial0) public final kotlinx.serialization.KSerializer[] childSerializers() diff --git a/plugins/kotlinx-serialization/testData/firMembers/classWithGenericParameters.fir.txt b/plugins/kotlinx-serialization/testData/firMembers/classWithGenericParameters.fir.txt index 8bff876c723..3b166ea3cf4 100644 --- a/plugins/kotlinx-serialization/testData/firMembers/classWithGenericParameters.fir.txt +++ b/plugins/kotlinx-serialization/testData/firMembers/classWithGenericParameters.fir.txt @@ -38,7 +38,7 @@ FILE: classWithGenericParameters.kt super() } - private constructor(typeSerial0: R|kotlinx/serialization/KSerializer|, typeSerial1: R|kotlinx/serialization/KSerializer|): R|GenericBox.$serializer| + public constructor(typeSerial0: R|kotlinx/serialization/KSerializer|, typeSerial1: R|kotlinx/serialization/KSerializer|): R|GenericBox.$serializer| } diff --git a/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationFirLightTreeBlackBoxTestGenerated.java b/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationFirLightTreeBlackBoxTestGenerated.java index f50cad2efa8..41297a542be 100644 --- a/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationFirLightTreeBlackBoxTestGenerated.java +++ b/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationFirLightTreeBlackBoxTestGenerated.java @@ -213,6 +213,12 @@ public class SerializationFirLightTreeBlackBoxTestGenerated extends AbstractSeri runTest("plugins/kotlinx-serialization/testData/boxIr/repeatableSerialInfo.kt"); } + @Test + @TestMetadata("sealedClassMultifile.kt") + public void testSealedClassMultifile() throws Exception { + runTest("plugins/kotlinx-serialization/testData/boxIr/sealedClassMultifile.kt"); + } + @Test @TestMetadata("sealedInterfaces.kt") public void testSealedInterfaces() throws Exception { diff --git a/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationIrBoxTestGenerated.java b/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationIrBoxTestGenerated.java index 509b3d6af41..1bdd3359aef 100644 --- a/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationIrBoxTestGenerated.java +++ b/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationIrBoxTestGenerated.java @@ -211,6 +211,12 @@ public class SerializationIrBoxTestGenerated extends AbstractSerializationIrBoxT runTest("plugins/kotlinx-serialization/testData/boxIr/repeatableSerialInfo.kt"); } + @Test + @TestMetadata("sealedClassMultifile.kt") + public void testSealedClassMultifile() throws Exception { + runTest("plugins/kotlinx-serialization/testData/boxIr/sealedClassMultifile.kt"); + } + @Test @TestMetadata("sealedInterfaces.kt") public void testSealedInterfaces() throws Exception {