[FIR] Introduce caching service for metadata declarations provided by extensions

This is needed to allow to call for provided declarations multiple times
  with only one real invocation of plugins
This commit is contained in:
Dmitriy Novozhilov
2023-04-05 11:46:44 +03:00
committed by Space Team
parent fb1cdf643b
commit 0f8c797d7c
4 changed files with 131 additions and 26 deletions
+1
View File
@@ -17,6 +17,7 @@ dependencies {
api(project(":js:js.frontend"))
implementation(project(":compiler:fir:resolve"))
implementation(project(":compiler:fir:fir-serialization"))
implementation(project(":compiler:fir:fir2ir:jvm-backend"))
implementation(project(":compiler:backend.jvm"))
implementation(project(":compiler:ir.serialization.common"))
@@ -42,6 +42,7 @@ import org.jetbrains.kotlin.fir.scopes.FirOverrideService
import org.jetbrains.kotlin.fir.scopes.FirPlatformClassMapper
import org.jetbrains.kotlin.fir.scopes.PlatformSpecificOverridabilityRules
import org.jetbrains.kotlin.fir.scopes.impl.*
import org.jetbrains.kotlin.fir.serialization.FirProvidedDeclarationsForMetadataService
import org.jetbrains.kotlin.fir.symbols.FirLazyDeclarationResolver
import org.jetbrains.kotlin.fir.types.FirCorrespondingSupertypesCache
import org.jetbrains.kotlin.fir.types.FirFunctionTypeKindService
@@ -78,6 +79,7 @@ fun FirSession.registerCommonComponents(languageVersionSettings: LanguageVersion
@OptIn(SessionConfiguration::class)
fun FirSession.registerCommonComponentsAfterExtensionsAreConfigured() {
register(FirFunctionTypeKindService::class, FirFunctionTypeKindServiceImpl(this))
register(FirProvidedDeclarationsForMetadataService::class, FirProvidedDeclarationsForMetadataService.create(this))
}
@OptIn(SessionConfiguration::class)