FIR2IR: support reading of isNewPlaceForBodyGeneration in lazy class

This commit is contained in:
Mikhail Glukhikh
2021-11-25 16:28:19 +03:00
parent c652cd2245
commit 4a8f00bc7c
15 changed files with 28 additions and 20 deletions
@@ -12,6 +12,7 @@ import org.jetbrains.kotlin.fir.caches.createCache
import org.jetbrains.kotlin.fir.caches.firCachesFactory
import org.jetbrains.kotlin.fir.caches.getValue
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
import org.jetbrains.kotlin.fir.isNewPlaceForBodyGeneration
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProviderInternals
import org.jetbrains.kotlin.fir.scopes.FirKotlinScopeProvider
@@ -88,11 +89,14 @@ abstract class AbstractFirDeserializedSymbolProvider(
// ------------------------ Abstract members ------------------------
protected abstract fun computePackagePartsInfos(packageFqName: FqName): List<PackagePartsCacheData>
protected abstract fun extractClassMetadata(
classId: ClassId,
parentContext: FirDeserializationContext? = null
): ClassMetadataFindResult?
protected abstract fun isNewPlaceForBodyGeneration(classProto: ProtoBuf.Class): Boolean
// ------------------------ Deserialization methods ------------------------
sealed class ClassMetadataFindResult {
@@ -151,6 +155,7 @@ abstract class AbstractFirDeserializedSymbolProvider(
origin = defaultDeserializationOrigin,
deserializeNestedClass = this::getClass,
)
symbol.fir.isNewPlaceForBodyGeneration = isNewPlaceForBodyGeneration(classProto)
symbol to postProcessor
}
null -> null to null