[FIR] Enable plugin phases if some extensions are registered

This commit is contained in:
Dmitriy Novozhilov
2021-12-02 10:47:58 +03:00
committed by TeamCityServer
parent 1d32d5c7d8
commit 8c11ea266a
2 changed files with 8 additions and 3 deletions
@@ -80,7 +80,7 @@ class FirAnalyzerFacade(
override fun runResolution(): List<FirFile> {
if (firFiles == null) buildRawFir()
if (_scopeSession != null) return firFiles!!
val resolveProcessor = FirTotalResolveProcessor(session, enablePluginPhases)
val resolveProcessor = FirTotalResolveProcessor(session)
resolveProcessor.process(firFiles!!)
_scopeSession = resolveProcessor.scopeSession
return firFiles!!
@@ -9,16 +9,21 @@ import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.FirFile
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase.*
import org.jetbrains.kotlin.fir.extensions.extensionService
import org.jetbrains.kotlin.fir.resolve.ScopeSession
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirBodyResolveProcessor
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirImplicitTypeBodyResolveProcessor
import org.jetbrains.kotlin.fir.resolve.transformers.contracts.FirContractResolveProcessor
import org.jetbrains.kotlin.fir.resolve.transformers.plugin.*
class FirTotalResolveProcessor(session: FirSession, enablePluginPhases: Boolean = false) {
class FirTotalResolveProcessor(session: FirSession) {
val scopeSession: ScopeSession = ScopeSession()
private val processors: List<FirResolveProcessor> = createAllCompilerResolveProcessors(session, scopeSession, enablePluginPhases)
private val processors: List<FirResolveProcessor> = createAllCompilerResolveProcessors(
session,
scopeSession,
pluginPhasesEnabled = session.extensionService.registeredExtensionsSize > 0
)
fun process(files: List<FirFile>) {
for (processor in processors) {