[FIR] Set publishedApiEffectiveVisibility on deserialized declarations

#KT-58641 Fixed
This commit is contained in:
Kirill Rakhman
2023-06-05 13:54:22 +02:00
committed by Space Team
parent 2581139b82
commit ee91ee9403
38 changed files with 737 additions and 37 deletions
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.fir.declarations.utils.moduleName
import org.jetbrains.kotlin.fir.declarations.utils.sourceElement
import org.jetbrains.kotlin.fir.resolve.providers.getRegularClassSymbolByClassId
import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider
import org.jetbrains.kotlin.fir.resolve.transformers.setLazyPublishedVisibility
import org.jetbrains.kotlin.fir.scopes.FirScopeProvider
import org.jetbrains.kotlin.fir.symbols.ConeTypeParameterLookupTag
import org.jetbrains.kotlin.fir.symbols.impl.FirEnumEntrySymbol
@@ -114,6 +115,7 @@ fun deserializeClassToSymbol(
context.annotationDeserializer.inheritAnnotationInfo(it.annotationDeserializer)
}
}
buildRegularClass {
this.moduleData = moduleData
this.origin = origin
@@ -242,6 +244,8 @@ fun deserializeClassToSymbol(
if (!Flags.HAS_ENUM_ENTRIES.get(flags)) {
hasNoEnumEntriesAttr = true
}
setLazyPublishedVisibility(session)
}
}
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.fir.expressions.FirAnnotation
import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.expressions.builder.buildExpressionStub
import org.jetbrains.kotlin.fir.resolve.defaultType
import org.jetbrains.kotlin.fir.resolve.transformers.setLazyPublishedVisibility
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.fir.toEffectiveVisibility
@@ -467,6 +468,9 @@ class FirMemberDeserializer(private val c: FirDeserializationContext) {
proto.contextReceiverTypes(c.typeTable).mapTo(contextReceivers, ::loadContextReceiver)
}.apply {
versionRequirementsTable = c.versionRequirementTable
setLazyPublishedVisibility(c.session)
getter?.setLazyPublishedVisibility(annotations, this, c.session)
setter?.setLazyPublishedVisibility(annotations, this, c.session)
}
}
@@ -552,6 +556,7 @@ class FirMemberDeserializer(private val c: FirDeserializationContext) {
proto.contextReceiverTypes(c.typeTable).mapTo(contextReceivers, ::loadContextReceiver)
}.apply {
versionRequirementsTable = c.versionRequirementTable
setLazyPublishedVisibility(c.session)
}
if (proto.hasContract()) {
val contractDeserializer = if (proto.typeParameterList.isEmpty()) this.contractDeserializer else FirContractDeserializer(local)
@@ -635,6 +640,7 @@ class FirMemberDeserializer(private val c: FirDeserializationContext) {
}.build().apply {
containingClassForStaticMemberAttr = c.dispatchReceiver!!.lookupTag
versionRequirementsTable = c.versionRequirementTable
setLazyPublishedVisibility(c.session)
}
}