K2: make synthesized functions synthesized in protobuf

Related to KT-59171
This commit is contained in:
Mikhail Glukhikh
2023-07-25 23:04:46 +02:00
committed by Space Team
parent ed2dd4b2ae
commit cdd3f10e99
@@ -46,6 +46,7 @@ import org.jetbrains.kotlin.fir.types.builder.buildResolvedTypeRef
import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl
import org.jetbrains.kotlin.fir.types.impl.FirImplicitNullableAnyTypeRef import org.jetbrains.kotlin.fir.types.impl.FirImplicitNullableAnyTypeRef
import org.jetbrains.kotlin.metadata.ProtoBuf import org.jetbrains.kotlin.metadata.ProtoBuf
import org.jetbrains.kotlin.metadata.ProtoBuf.MemberKind
import org.jetbrains.kotlin.metadata.deserialization.Flags import org.jetbrains.kotlin.metadata.deserialization.Flags
import org.jetbrains.kotlin.metadata.deserialization.VersionRequirement import org.jetbrains.kotlin.metadata.deserialization.VersionRequirement
import org.jetbrains.kotlin.metadata.deserialization.isKotlin1Dot4OrLater import org.jetbrains.kotlin.metadata.deserialization.isKotlin1Dot4OrLater
@@ -507,7 +508,7 @@ class FirElementSerializer private constructor(
function.nonSourceAnnotations(session).isNotEmpty() || extension.hasAdditionalAnnotations(function), function.nonSourceAnnotations(session).isNotEmpty() || extension.hasAdditionalAnnotations(function),
ProtoEnumFlags.visibility(simpleFunction?.let { normalizeVisibility(it) } ?: Visibilities.Local), ProtoEnumFlags.visibility(simpleFunction?.let { normalizeVisibility(it) } ?: Visibilities.Local),
ProtoEnumFlags.modality(simpleFunction?.modality ?: Modality.FINAL), ProtoEnumFlags.modality(simpleFunction?.modality ?: Modality.FINAL),
if (function.origin == FirDeclarationOrigin.Delegated) ProtoBuf.MemberKind.DELEGATION else ProtoBuf.MemberKind.DECLARATION, function.memberKind(),
simpleFunction?.isOperator == true, simpleFunction?.isOperator == true,
simpleFunction?.isInfix == true, simpleFunction?.isInfix == true,
simpleFunction?.isInline == true, simpleFunction?.isInline == true,
@@ -594,6 +595,14 @@ class FirElementSerializer private constructor(
return builder return builder
} }
private fun FirFunction.memberKind(): MemberKind {
return when (origin) {
FirDeclarationOrigin.Delegated -> MemberKind.DELEGATION
FirDeclarationOrigin.Synthetic -> MemberKind.SYNTHESIZED
else -> MemberKind.DECLARATION
}
}
private fun shouldSetStableParameterNames(function: FirFunction?): Boolean { private fun shouldSetStableParameterNames(function: FirFunction?): Boolean {
return when { return when {
function?.hasStableParameterNames == true -> true function?.hasStableParameterNames == true -> true