[KxSerialization] Change visibility for synthetic functions

- synthetic constructor became internal for final classes
- write$Self became internal for final classes

Resolves https://github.com/Kotlin/kotlinx.serialization/issues/2209

Merge-request: KT-MR-9068
Merged-by: Sergey Shanshin <Sergey.Shanshin@jetbrains.com>
This commit is contained in:
Sergey.Shanshin
2023-07-14 17:36:22 +00:00
committed by Space Team
parent 9f85739599
commit 5ba1b36796
20 changed files with 53 additions and 42 deletions
@@ -347,7 +347,8 @@ object KSerializerDescriptorResolver {
functionDescriptor.initialize(
consParams,
DescriptorVisibilities.PUBLIC
// load constructor for final classes could be internal, because it can't be used in inheritors
if (classDescriptor.modality == Modality.FINAL) DescriptorVisibilities.INTERNAL else DescriptorVisibilities.PUBLIC
)
functionDescriptor.returnType = classDescriptor.defaultType
@@ -586,7 +587,8 @@ object KSerializerDescriptorResolver {
args,
returnType,
Modality.FINAL,
DescriptorVisibilities.PUBLIC
// write$Self for final classes could be internal, because it can't be called in inheritors
if (thisClass.modality == Modality.FINAL) DescriptorVisibilities.INTERNAL else DescriptorVisibilities.PUBLIC
)
return f