[FIR] Rewrite algorithm of generating declarations by plugins

Before there was separate global stage which asks extensions
  to generate new declarations. Now it is changed to provider
  like requests, so extensions will decide do they have declarations
  with specific classId/callableId or not
This commit is contained in:
Dmitriy Novozhilov
2021-09-21 16:51:45 +03:00
committed by TeamCityServer
parent 760943f0e1
commit 15abd839ed
16 changed files with 199 additions and 465 deletions
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.fir.checkers.registerJvmCheckers
import org.jetbrains.kotlin.fir.deserialization.ModuleDataProvider
import org.jetbrains.kotlin.fir.deserialization.SingleModuleDataProvider
import org.jetbrains.kotlin.fir.extensions.BunchOfRegisteredExtensions
import org.jetbrains.kotlin.fir.extensions.FirExtensionDeclarationsSymbolProvider
import org.jetbrains.kotlin.fir.extensions.extensionService
import org.jetbrains.kotlin.fir.extensions.registerExtensions
import org.jetbrains.kotlin.fir.java.FirCliSession
@@ -157,6 +158,12 @@ object FirSessionFactory {
)
}
FirSessionConfigurator(this).apply {
registerCommonCheckers()
registerJvmCheckers()
init()
}.configure()
val dependenciesSymbolProvider = FirDependenciesSymbolProviderImpl(this)
register(
FirSymbolProvider::class,
@@ -165,6 +172,7 @@ object FirSessionFactory {
listOfNotNull(
firProvider.symbolProvider,
symbolProviderForBinariesFromIncrementalCompilation,
FirExtensionDeclarationsSymbolProvider.create(this),
JavaSymbolProvider(this, projectEnvironment.getFirJavaFacade(this, moduleData, scope)),
dependenciesSymbolProvider,
)
@@ -177,11 +185,6 @@ object FirSessionFactory {
)
FirJvmDefaultErrorMessages.installJvmErrorMessages()
FirSessionConfigurator(this).apply {
registerCommonCheckers()
registerJvmCheckers()
init()
}.configure()
projectEnvironment.registerAsJavaElementFinder(this)
}
}