Make visibilities of writeSelf and deserialization constructor in FIR

same as they were in K1 (see KSerializerDescriptorResolver): internal for
final classes and public for non-final.

Unfortunately, there are no Klib API dumps tests in the compiler, so I tested manually.

#KT-64124 Fixed
This commit is contained in:
Leonid Startsev
2023-12-11 16:23:42 +01:00
committed by Space Team
parent 9933423a0b
commit a03fd2e29a
5 changed files with 13 additions and 13 deletions
@@ -56,7 +56,7 @@ class IrPreGenerator(
val method = irClass.addFunction {
name = SerialEntityNames.WRITE_SELF_NAME
returnType = compilerContext.irBuiltIns.unitType
visibility = DescriptorVisibilities.PUBLIC
visibility = if (irClass.modality == Modality.FINAL) DescriptorVisibilities.INTERNAL else DescriptorVisibilities.PUBLIC
modality = Modality.FINAL
origin = SERIALIZATION_PLUGIN_ORIGIN
}
@@ -118,7 +118,7 @@ class IrPreGenerator(
if (irClass.findSerializableSyntheticConstructor() != null) return
val ctor = irClass.addConstructor {
origin = SERIALIZATION_PLUGIN_ORIGIN
visibility = DescriptorVisibilities.PUBLIC
visibility = if (irClass.modality == Modality.FINAL) DescriptorVisibilities.INTERNAL else DescriptorVisibilities.PUBLIC
}.apply { excludeFromJsExport() }
val markerClassSymbol =
compilerContext.getClassFromInternalSerializationPackage(SerialEntityNames.SERIAL_CTOR_MARKER_NAME.asString())