[K2/N] KT-56190 Serialize simple const property initializers

Merge-request: KT-MR-8623
Merged-by: Vladimir Sukharev <Vladimir.Sukharev@jetbrains.com>
This commit is contained in:
Vladimir Sukharev
2023-03-29 13:26:43 +00:00
committed by Space Team
parent 46a6695072
commit 2ace8ba9bd
7 changed files with 36 additions and 15 deletions
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.serialization
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
import org.jetbrains.kotlin.fir.expressions.FirConstExpression
import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.resolve.toSymbol
import org.jetbrains.kotlin.fir.serialization.constant.ConstantValue
@@ -44,4 +45,7 @@ class FirAnnotationSerializer(private val session: FirSession, internal val stri
FirAnnotationArgumentVisitorData(this@FirAnnotationSerializer, this)
)
}
fun valueProto(constExpression: FirConstExpression<*>): ProtoBuf.Annotation.Argument.Value.Builder? =
constExpression.toConstantValue(session)?.let { valueProto(it) }
}
@@ -373,12 +373,15 @@ class FirElementSerializer private constructor(
}
}
val hasConstant = !property.isVar && property.initializer?.let {
it is FirConstExpression<*> && it.value != null
} ?: false
val flags = Flags.getPropertyFlags(
hasAnnotations,
ProtoEnumFlags.visibility(normalizeVisibility(property)),
ProtoEnumFlags.modality(modality),
ProtoBuf.MemberKind.DECLARATION,
property.isVar, hasGetter, hasSetter, property.isConst, property.isConst, property.isLateInit,
property.isVar, hasGetter, hasSetter, hasConstant, property.isConst, property.isLateInit,
property.isExternal, property.delegateFieldSymbol != null, property.isExpect
)
if (flags != builder.flags) {