[FIR] Introduce FirResolveProcessors
This commit is contained in:
@@ -33,7 +33,7 @@ import org.jetbrains.kotlin.fir.java.FirLibrarySession
|
||||
import org.jetbrains.kotlin.fir.java.FirProjectSessionProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.firProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.impl.FirProviderImpl
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveTransformer
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveProcessor
|
||||
import org.jetbrains.kotlin.idea.KotlinLanguage
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||
@@ -164,12 +164,10 @@ abstract class AbstractSimpleFileBenchmark {
|
||||
val firProvider = session.firProvider as FirProviderImpl
|
||||
val builder = RawFirBuilder(session, firProvider.kotlinScopeProvider, stubMode = false)
|
||||
|
||||
val totalTransformer = FirTotalResolveTransformer(session)
|
||||
val totalTransformer = FirTotalResolveProcessor(session)
|
||||
val firFile = builder.buildFirFile(file).also(firProvider::recordFile)
|
||||
|
||||
for (transformer in totalTransformer.transformers) {
|
||||
transformer.transformFile(firFile, null)
|
||||
}
|
||||
totalTransformer.process(listOf(firFile))
|
||||
|
||||
bh.consume(firFile.hashCode())
|
||||
}
|
||||
|
||||
+3
-3
@@ -64,7 +64,7 @@ import org.jetbrains.kotlin.fir.java.FirLibrarySession
|
||||
import org.jetbrains.kotlin.fir.java.FirProjectSessionProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.firProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.impl.FirProviderImpl
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveTransformer
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveProcessor
|
||||
import org.jetbrains.kotlin.idea.MainFunctionDetector
|
||||
import org.jetbrains.kotlin.ir.backend.jvm.jvmResolveLibraries
|
||||
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmManglerDesc
|
||||
@@ -333,14 +333,14 @@ object KotlinToJVMBytecodeCompiler {
|
||||
}
|
||||
val firProvider = (session.firProvider as FirProviderImpl)
|
||||
val builder = RawFirBuilder(session, firProvider.kotlinScopeProvider, stubMode = false)
|
||||
val resolveTransformer = FirTotalResolveTransformer(session)
|
||||
val resolveTransformer = FirTotalResolveProcessor(session)
|
||||
val firFiles = ktFiles.map {
|
||||
val firFile = builder.buildFirFile(it)
|
||||
firProvider.recordFile(firFile)
|
||||
firFile
|
||||
}.also {
|
||||
try {
|
||||
resolveTransformer.processFiles(it)
|
||||
resolveTransformer.process(it)
|
||||
} catch (e: Exception) {
|
||||
throw e
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.fir.backend.Fir2IrConverter
|
||||
import org.jetbrains.kotlin.fir.builder.RawFirBuilder
|
||||
import org.jetbrains.kotlin.fir.resolve.firProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.impl.FirProviderImpl
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveTransformer
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveProcessor
|
||||
import org.jetbrains.kotlin.ir.AbstractIrTextTestCase
|
||||
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmManglerDesc
|
||||
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
||||
@@ -68,14 +68,14 @@ abstract class AbstractFir2IrTextTest : AbstractIrTextTestCase() {
|
||||
val firProvider = (session.firProvider as FirProviderImpl)
|
||||
val builder = RawFirBuilder(session, firProvider.kotlinScopeProvider, stubMode = false)
|
||||
|
||||
val resolveTransformer = FirTotalResolveTransformer(session)
|
||||
val resolveTransformer = FirTotalResolveProcessor(session)
|
||||
val firFiles = psiFiles.map {
|
||||
val firFile = builder.buildFirFile(it)
|
||||
firProvider.recordFile(firFile)
|
||||
firFile
|
||||
}.also {
|
||||
try {
|
||||
resolveTransformer.processFiles(it)
|
||||
resolveTransformer.process(it)
|
||||
} catch (e: Exception) {
|
||||
throw e
|
||||
}
|
||||
|
||||
+4
-3
@@ -21,7 +21,8 @@ import org.jetbrains.kotlin.fir.dump.MultiModuleHtmlFirDump
|
||||
import org.jetbrains.kotlin.fir.lightTree.LightTree2Fir
|
||||
import org.jetbrains.kotlin.fir.resolve.firProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.impl.FirProviderImpl
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveTransformer
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveProcessor
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.createAllResolveProcessors
|
||||
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
|
||||
import java.io.File
|
||||
import java.io.FileOutputStream
|
||||
@@ -55,7 +56,7 @@ class FirResolveModularizedTotalKotlinTest : AbstractModularizedTest() {
|
||||
.uniteWith(TopDownAnalyzerFacadeForJVM.AllJavaSourcesInProjectScope(project))
|
||||
val librariesScope = ProjectScope.getLibrariesScope(project)
|
||||
val session = createSession(environment, scope, librariesScope, moduleData.qualifiedName)
|
||||
val totalTransformer = FirTotalResolveTransformer(session)
|
||||
val processors = createAllResolveProcessors(session)
|
||||
|
||||
val firProvider = session.firProvider as FirProviderImpl
|
||||
val firFiles = if (useLightTree) {
|
||||
@@ -68,7 +69,7 @@ class FirResolveModularizedTotalKotlinTest : AbstractModularizedTest() {
|
||||
|
||||
//println("Raw FIR up, files: ${firFiles.size}")
|
||||
|
||||
bench.processFiles(firFiles, totalTransformer.transformers)
|
||||
bench.processFiles(firFiles, processors)
|
||||
|
||||
val disambiguatedName = moduleData.disambiguatedName()
|
||||
dumpFir(disambiguatedName, moduleData, firFiles)
|
||||
|
||||
+2
-2
@@ -59,7 +59,7 @@ fun FirFile.runResolve(toPhase: FirResolvePhase, fromPhase: FirResolvePhase = Fi
|
||||
var currentPhase = fromPhase
|
||||
while (currentPhase < toPhase) {
|
||||
currentPhase = currentPhase.next
|
||||
val phaseTransformer = currentPhase.createTransformerByPhase(session, scopeSession)
|
||||
transform<FirFile, Nothing?>(phaseTransformer, null)
|
||||
val phaseProcessor = currentPhase.createTransformerBasedProcessorByPhase(session, scopeSession)
|
||||
phaseProcessor.processFile(this)
|
||||
}
|
||||
}
|
||||
|
||||
+5
@@ -12,6 +12,7 @@ import org.jetbrains.kotlin.fir.declarations.FirImport
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.declarations.builder.buildResolvedImport
|
||||
import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.resolve.firSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
||||
import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult
|
||||
@@ -19,6 +20,10 @@ import org.jetbrains.kotlin.fir.visitors.compose
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
|
||||
class FirImportResolveProcessor(session: FirSession, scopeSession: ScopeSession) : FirTransformerBasedResolveProcessor(session, scopeSession) {
|
||||
override val transformer = FirImportResolveTransformer(session)
|
||||
}
|
||||
|
||||
open class FirImportResolveTransformer protected constructor(
|
||||
final override val session: FirSession,
|
||||
phase: FirResolvePhase
|
||||
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.fir.resolve.transformers
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||
|
||||
@RequiresOptIn(message = "Should be used just only in resolve processor")
|
||||
annotation class AdapterForResolveProcessor
|
||||
|
||||
sealed class FirResolveProcessor(val session: FirSession, val scopeSession: ScopeSession)
|
||||
|
||||
abstract class FirGlobalResolveProcessor(session: FirSession, scopeSession: ScopeSession) : FirResolveProcessor(session, scopeSession) {
|
||||
abstract fun process()
|
||||
}
|
||||
|
||||
abstract class FirTransformerBasedResolveProcessor(
|
||||
session: FirSession,
|
||||
scopeSession: ScopeSession
|
||||
) : FirResolveProcessor(session, scopeSession) {
|
||||
abstract val transformer: FirTransformer<Nothing?>
|
||||
|
||||
fun processFile(file: FirFile) {
|
||||
file.transform<FirFile, Nothing?>(transformer, null)
|
||||
}
|
||||
}
|
||||
+7
@@ -7,10 +7,13 @@ package org.jetbrains.kotlin.fir.resolve.transformers
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.fir.FirElement
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
||||
import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.resolve.firSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.plugin.FirPluginAnnotationsResolveTransformer
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassifierSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
|
||||
@@ -24,6 +27,10 @@ import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||
import org.jetbrains.kotlin.fir.visitors.compose
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
|
||||
class FirSealedClassInheritorsProcessor(session: FirSession, scopeSession: ScopeSession) : FirTransformerBasedResolveProcessor(session, scopeSession) {
|
||||
override val transformer = FirSealedClassInheritorsTransformer()
|
||||
}
|
||||
|
||||
class FirSealedClassInheritorsTransformer : FirTransformer<Nothing?>() {
|
||||
override fun <E : FirElement> transformElement(element: E, data: Nothing?): CompositeTransformResult<E> {
|
||||
throw IllegalStateException("Should not be there")
|
||||
|
||||
+6
-1
@@ -14,11 +14,16 @@ import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl
|
||||
import org.jetbrains.kotlin.fir.expressions.FirBlock
|
||||
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
||||
import org.jetbrains.kotlin.fir.extensions.statusTransformerExtensions
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult
|
||||
import org.jetbrains.kotlin.fir.visitors.compose
|
||||
import org.jetbrains.kotlin.fir.visitors.transformSingle
|
||||
|
||||
@OptIn(AdapterForResolveProcessor::class)
|
||||
class FirStatusResolveProcessor(session: FirSession, scopeSession: ScopeSession) : FirTransformerBasedResolveProcessor(session, scopeSession) {
|
||||
override val transformer = FirStatusResolveTransformer(session)
|
||||
}
|
||||
|
||||
fun <F : FirClass<F>> F.runStatusResolveForLocalClass(session: FirSession): F {
|
||||
val transformer = FirStatusResolveTransformer(session)
|
||||
|
||||
|
||||
+5
@@ -12,6 +12,7 @@ import org.jetbrains.kotlin.fir.diagnostics.ConeSimpleDiagnostic
|
||||
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
||||
import org.jetbrains.kotlin.fir.resolve.*
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.LocalClassesNavigationInfo
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.plugin.FirPluginAnnotationsResolveTransformer
|
||||
import org.jetbrains.kotlin.fir.scopes.FirIterableScope
|
||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||
import org.jetbrains.kotlin.fir.scopes.createImportingScopes
|
||||
@@ -24,6 +25,10 @@ import org.jetbrains.kotlin.fir.visitors.*
|
||||
import org.jetbrains.kotlin.utils.addIfNotNull
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||
|
||||
class FirSupertypeResolverProcessor(session: FirSession, scopeSession: ScopeSession) : FirTransformerBasedResolveProcessor(session, scopeSession) {
|
||||
override val transformer = FirSupertypeResolverTransformer(session, scopeSession)
|
||||
}
|
||||
|
||||
class FirSupertypeResolverTransformer(
|
||||
override val session: FirSession,
|
||||
scopeSession: ScopeSession
|
||||
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
/*
|
||||
* Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.fir.resolve.transformers
|
||||
|
||||
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.resolve.ScopeSession
|
||||
|
||||
class FirTotalResolveProcessor(session: FirSession) {
|
||||
val scopeSession: ScopeSession = ScopeSession()
|
||||
|
||||
private val processors: List<FirResolveProcessor> = createAllResolveProcessors(session, scopeSession)
|
||||
|
||||
fun process(files: List<FirFile>) {
|
||||
for (processor in processors) {
|
||||
when (processor) {
|
||||
is FirTransformerBasedResolveProcessor -> {
|
||||
for (file in files) {
|
||||
processor.processFile(file)
|
||||
}
|
||||
}
|
||||
is FirGlobalResolveProcessor -> {
|
||||
processor.process()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun createAllResolveProcessors(
|
||||
session: FirSession,
|
||||
scopeSession: ScopeSession? = null,
|
||||
mode: CompilerMode = CompilerMode.CLI
|
||||
): List<FirResolveProcessor> {
|
||||
@Suppress("NAME_SHADOWING")
|
||||
val scopeSession = scopeSession ?: ScopeSession()
|
||||
return FirResolvePhase.values()
|
||||
.drop(1) // to remove RAW_FIR phase
|
||||
.map { it.createProcessorByPhase(session, scopeSession, mode) }
|
||||
}
|
||||
|
||||
fun createAllTransformerBasedResolveProcessors(
|
||||
session: FirSession,
|
||||
scopeSession: ScopeSession? = null,
|
||||
): List<FirTransformerBasedResolveProcessor> {
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
return createAllResolveProcessors(session, scopeSession, CompilerMode.IDE) as List<FirTransformerBasedResolveProcessor>
|
||||
}
|
||||
-29
@@ -1,29 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.fir.resolve.transformers
|
||||
|
||||
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.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||
|
||||
class FirTotalResolveTransformer(session: FirSession) {
|
||||
val scopeSession = ScopeSession()
|
||||
|
||||
val transformers: List<FirTransformer<Nothing?>> =
|
||||
FirResolvePhase.values()
|
||||
.drop(1) // to remove RAW_FIR phase
|
||||
.map { it.createTransformerByPhase(session, scopeSession) }
|
||||
|
||||
fun processFiles(files: List<FirFile>) {
|
||||
for (transformer in transformers) {
|
||||
for (firFile in files) {
|
||||
firFile.transform<FirFile, Nothing?>(transformer, null)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+4
@@ -18,6 +18,10 @@ import org.jetbrains.kotlin.fir.types.impl.FirImplicitBuiltinTypeRef
|
||||
import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult
|
||||
import org.jetbrains.kotlin.fir.visitors.compose
|
||||
|
||||
class FirTypeResolveProcessor(session: FirSession, scopeSession: ScopeSession) : FirTransformerBasedResolveProcessor(session, scopeSession) {
|
||||
override val transformer = FirTypeResolveTransformer(session, scopeSession)
|
||||
}
|
||||
|
||||
fun <F : FirClass<F>> F.runTypeResolvePhaseForLocalClass(
|
||||
session: FirSession,
|
||||
scopeSession: ScopeSession,
|
||||
|
||||
+26
-20
@@ -9,29 +9,35 @@ import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase.*
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirBodyResolveTransformerAdapter
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirImplicitTypeBodyResolveTransformerAdapter
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.contracts.FirContractResolveTransformerAdapter
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.plugin.FirPluginAnnotationsResolveTransformer
|
||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||
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.FirPluginAnnotationsResolveProcessor
|
||||
|
||||
// TODO: add FirSession parameter
|
||||
@OptIn(AdapterForResolvePhase::class)
|
||||
fun FirResolvePhase.createTransformerByPhase(session: FirSession, scopeSession: ScopeSession): FirTransformer<Nothing?> {
|
||||
fun FirResolvePhase.createProcessorByPhase(
|
||||
session: FirSession,
|
||||
scopeSession: ScopeSession,
|
||||
compilerMode: CompilerMode = CompilerMode.CLI
|
||||
): FirResolveProcessor {
|
||||
return when (this) {
|
||||
RAW_FIR -> throw AssertionError("Raw FIR building phase does not have a transformer")
|
||||
ANNOTATIONS_FOR_PLUGINS -> FirPluginAnnotationsResolveTransformer(session, scopeSession)
|
||||
RAW_FIR -> throw IllegalStateException("Raw FIR building phase does not have a transformer")
|
||||
ANNOTATIONS_FOR_PLUGINS -> FirPluginAnnotationsResolveProcessor(session, scopeSession)
|
||||
// FIRST_PLUGIN_GENERATION -> FirFirstGenerationTransformer()
|
||||
IMPORTS -> FirImportResolveTransformer(session)
|
||||
SUPER_TYPES -> FirSupertypeResolverTransformer(session, scopeSession)
|
||||
SEALED_CLASS_INHERITORS -> FirSealedClassInheritorsTransformer()
|
||||
TYPES -> FirTypeResolveTransformer(session, scopeSession)
|
||||
STATUS -> FirStatusResolveTransformer(session)
|
||||
CONTRACTS -> FirContractResolveTransformerAdapter(session, scopeSession)
|
||||
IMPLICIT_TYPES_BODY_RESOLVE -> FirImplicitTypeBodyResolveTransformerAdapter(session, scopeSession)
|
||||
BODY_RESOLVE -> FirBodyResolveTransformerAdapter(session, scopeSession)
|
||||
IMPORTS -> FirImportResolveProcessor(session, scopeSession)
|
||||
SUPER_TYPES -> FirSupertypeResolverProcessor(session, scopeSession)
|
||||
SEALED_CLASS_INHERITORS -> FirSealedClassInheritorsProcessor(session, scopeSession)
|
||||
TYPES -> FirTypeResolveProcessor(session, scopeSession)
|
||||
STATUS -> FirStatusResolveProcessor(session, scopeSession)
|
||||
CONTRACTS -> FirContractResolveProcessor(session, scopeSession)
|
||||
IMPLICIT_TYPES_BODY_RESOLVE -> FirImplicitTypeBodyResolveProcessor(session, scopeSession)
|
||||
BODY_RESOLVE -> FirBodyResolveProcessor(session, scopeSession)
|
||||
}
|
||||
}
|
||||
|
||||
@RequiresOptIn(message = "Should be used just once from createTransformerByPhase")
|
||||
annotation class AdapterForResolvePhase
|
||||
fun FirResolvePhase.createTransformerBasedProcessorByPhase(session: FirSession, scopeSession: ScopeSession): FirTransformerBasedResolveProcessor {
|
||||
return createProcessorByPhase(session, scopeSession, CompilerMode.IDE) as FirTransformerBasedResolveProcessor
|
||||
}
|
||||
|
||||
enum class CompilerMode {
|
||||
CLI, IDE
|
||||
}
|
||||
+8
-2
@@ -11,12 +11,18 @@ import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.resolve.ResolutionMode
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.AdapterForResolvePhase
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.AdapterForResolveProcessor
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirTransformerBasedResolveProcessor
|
||||
import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult
|
||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||
import org.jetbrains.kotlin.fir.visitors.compose
|
||||
|
||||
@AdapterForResolvePhase
|
||||
@OptIn(AdapterForResolveProcessor::class)
|
||||
class FirBodyResolveProcessor(session: FirSession, scopeSession: ScopeSession) : FirTransformerBasedResolveProcessor(session, scopeSession) {
|
||||
override val transformer = FirBodyResolveTransformerAdapter(session, scopeSession)
|
||||
}
|
||||
|
||||
@AdapterForResolveProcessor
|
||||
class FirBodyResolveTransformerAdapter(session: FirSession, scopeSession: ScopeSession) : FirTransformer<Nothing?>() {
|
||||
private val transformer = FirBodyResolveTransformer(
|
||||
session,
|
||||
|
||||
+7
-3
@@ -17,8 +17,7 @@ import org.jetbrains.kotlin.fir.render
|
||||
import org.jetbrains.kotlin.fir.resolve.ResolutionMode
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.resolve.firProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.AdapterForResolvePhase
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.ReturnTypeCalculator
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.*
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.TransformImplicitType
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.contracts.runContractResolveForLocalClass
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirAccessorSymbol
|
||||
@@ -30,7 +29,12 @@ import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult
|
||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||
import org.jetbrains.kotlin.fir.visitors.compose
|
||||
|
||||
@AdapterForResolvePhase
|
||||
@OptIn(AdapterForResolveProcessor::class)
|
||||
class FirImplicitTypeBodyResolveProcessor(session: FirSession, scopeSession: ScopeSession) : FirTransformerBasedResolveProcessor(session, scopeSession) {
|
||||
override val transformer = FirImplicitTypeBodyResolveTransformerAdapter(session, scopeSession)
|
||||
}
|
||||
|
||||
@AdapterForResolveProcessor
|
||||
class FirImplicitTypeBodyResolveTransformerAdapter(session: FirSession, scopeSession: ScopeSession) : FirTransformer<Nothing?>() {
|
||||
private val implicitBodyResolveComputationSession = ImplicitBodyResolveComputationSession()
|
||||
private val returnTypeCalculator = ReturnTypeCalculatorWithJump(session, scopeSession, implicitBodyResolveComputationSession).also {
|
||||
|
||||
+8
-4
@@ -10,10 +10,10 @@ import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.FirClass
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||
import org.jetbrains.kotlin.fir.resolve.BodyResolveComponents
|
||||
import org.jetbrains.kotlin.fir.resolve.ResolutionMode
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.AdapterForResolvePhase
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.AdapterForResolveProcessor
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirTransformerBasedResolveProcessor
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.ReturnTypeCalculatorForFullBodyResolve
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirAbstractBodyResolveTransformer
|
||||
import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult
|
||||
@@ -21,10 +21,14 @@ import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||
import org.jetbrains.kotlin.fir.visitors.compose
|
||||
import org.jetbrains.kotlin.fir.visitors.transformSingle
|
||||
|
||||
@AdapterForResolvePhase
|
||||
@OptIn(AdapterForResolveProcessor::class)
|
||||
class FirContractResolveProcessor(session: FirSession, scopeSession: ScopeSession) : FirTransformerBasedResolveProcessor(session, scopeSession) {
|
||||
override val transformer = FirContractResolveTransformerAdapter(session, scopeSession)
|
||||
}
|
||||
|
||||
@AdapterForResolveProcessor
|
||||
class FirContractResolveTransformerAdapter(session: FirSession, scopeSession: ScopeSession) : FirTransformer<Nothing?>() {
|
||||
private val transformer = FirContractResolveTransformer(session, scopeSession)
|
||||
|
||||
override fun <E : FirElement> transformElement(element: E, data: Nothing?): CompositeTransformResult<E> {
|
||||
return element.compose()
|
||||
}
|
||||
|
||||
+6
-2
@@ -17,14 +17,19 @@ import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
||||
import org.jetbrains.kotlin.fir.extensions.*
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirAbstractPhaseTransformer
|
||||
import org.jetbrains.kotlin.fir.resolve.fqName
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirAbstractPhaseTransformer
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirImportResolveTransformer
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirSpecificTypeResolverTransformer
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirTransformerBasedResolveProcessor
|
||||
import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult
|
||||
import org.jetbrains.kotlin.fir.visitors.compose
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
|
||||
class FirPluginAnnotationsResolveProcessor(session: FirSession, scopeSession: ScopeSession) : FirTransformerBasedResolveProcessor(session, scopeSession) {
|
||||
override val transformer = FirPluginAnnotationsResolveTransformer(session, scopeSession)
|
||||
}
|
||||
|
||||
class FirPluginAnnotationsResolveTransformer(
|
||||
override val session: FirSession,
|
||||
scopeSession: ScopeSession
|
||||
@@ -33,7 +38,6 @@ class FirPluginAnnotationsResolveTransformer(
|
||||
private val importTransformer = FirPartialImportResolveTransformer(session)
|
||||
|
||||
val extensionService = session.extensionService
|
||||
|
||||
override fun <E : FirElement> transformElement(element: E, data: Nothing?): CompositeTransformResult<E> {
|
||||
throw IllegalStateException("Should not be here")
|
||||
}
|
||||
|
||||
@@ -48,10 +48,9 @@ import org.jetbrains.kotlin.fir.builder.RawFirBuilder
|
||||
import org.jetbrains.kotlin.fir.createSession
|
||||
import org.jetbrains.kotlin.fir.resolve.firProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.impl.FirProviderImpl
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveTransformer
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveProcessor
|
||||
import org.jetbrains.kotlin.ir.backend.jvm.jvmResolveLibraries
|
||||
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmManglerDesc
|
||||
import org.jetbrains.kotlin.ir.declarations.IrClass
|
||||
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.resolve.AnalyzingUtils
|
||||
@@ -128,14 +127,14 @@ object GenerationUtils {
|
||||
|
||||
val firProvider = (session.firProvider as FirProviderImpl)
|
||||
val builder = RawFirBuilder(session, firProvider.kotlinScopeProvider, stubMode = false)
|
||||
val resolveTransformer = FirTotalResolveTransformer(session)
|
||||
val resolveTransformer = FirTotalResolveProcessor(session)
|
||||
val firFiles = files.map {
|
||||
val firFile = builder.buildFirFile(it)
|
||||
firProvider.recordFile(firFile)
|
||||
firFile
|
||||
}.also {
|
||||
try {
|
||||
resolveTransformer.processFiles(it)
|
||||
resolveTransformer.process(it)
|
||||
} catch (e: Exception) {
|
||||
throw e
|
||||
}
|
||||
|
||||
@@ -28,7 +28,8 @@ import org.jetbrains.kotlin.fir.resolve.dfa.cfg.CFGNode
|
||||
import org.jetbrains.kotlin.fir.resolve.dfa.cfg.ControlFlowGraph
|
||||
import org.jetbrains.kotlin.fir.resolve.dfa.cfg.EdgeKind
|
||||
import org.jetbrains.kotlin.fir.resolve.dfa.cfg.FirControlFlowGraphRenderVisitor
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveTransformer
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveProcessor
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.createAllResolveProcessors
|
||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
||||
@@ -76,7 +77,7 @@ abstract class AbstractFirDiagnosticsTest : AbstractFirBaseDiagnosticsTest() {
|
||||
for ((session, firFiles) in firFilesPerSession) {
|
||||
doFirResolveTestBench(
|
||||
firFiles,
|
||||
FirTotalResolveTransformer(session).transformers,
|
||||
createAllResolveProcessors(session),
|
||||
gc = false
|
||||
)
|
||||
}
|
||||
|
||||
+3
-2
@@ -6,7 +6,8 @@
|
||||
package org.jetbrains.kotlin.fir
|
||||
|
||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveTransformer
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveProcessor
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.createAllResolveProcessors
|
||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||
import java.io.File
|
||||
|
||||
@@ -32,7 +33,7 @@ abstract class AbstractFirOldFrontendDiagnosticsTest : AbstractFirDiagnosticsTes
|
||||
override fun runAnalysis(testDataFile: File, testFiles: List<TestFile>, firFilesPerSession: Map<FirSession, List<FirFile>>) {
|
||||
val failure: FirRuntimeException? = try {
|
||||
for ((session, firFiles) in firFilesPerSession) {
|
||||
doFirResolveTestBench(firFiles, FirTotalResolveTransformer(session).transformers, gc = false)
|
||||
doFirResolveTestBench(firFiles, createAllResolveProcessors(session), gc = false)
|
||||
}
|
||||
null
|
||||
} catch (e: FirRuntimeException) {
|
||||
|
||||
@@ -18,9 +18,11 @@ import org.jetbrains.kotlin.fir.lightTree.LightTree2Fir
|
||||
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
||||
import org.jetbrains.kotlin.fir.resolve.firProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.impl.FirProviderImpl
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirResolveProcessor
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirTransformerBasedResolveProcessor
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirGlobalResolveProcessor
|
||||
import org.jetbrains.kotlin.fir.types.*
|
||||
import org.jetbrains.kotlin.fir.visitors.FirDefaultVisitorVoid
|
||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.sumByLong
|
||||
@@ -154,47 +156,75 @@ class FirResolveBench(val withProgress: Boolean) {
|
||||
}
|
||||
}
|
||||
|
||||
private fun runStage(transformer: FirTransformer<Nothing?>, firFileSequence: Sequence<FirFile>) {
|
||||
private fun runStage(processor: FirResolveProcessor, firFileSequence: Sequence<FirFile>) {
|
||||
when (processor) {
|
||||
is FirTransformerBasedResolveProcessor -> runStage(processor, firFileSequence)
|
||||
is FirGlobalResolveProcessor -> runStage(processor)
|
||||
}
|
||||
}
|
||||
|
||||
private fun runStage(processor: FirTransformerBasedResolveProcessor, firFileSequence: Sequence<FirFile>) {
|
||||
val transformer = processor.transformer
|
||||
for (firFile in firFileSequence) {
|
||||
var fail = false
|
||||
val before = vmStateSnapshot()
|
||||
val time = measureNanoTime {
|
||||
try {
|
||||
transformer.transformFile(firFile, null)
|
||||
} catch (e: Throwable) {
|
||||
val ktFile = firFile.psi
|
||||
if (ktFile is KtFile) {
|
||||
println("Fail in file: ${ktFile.virtualFilePath}")
|
||||
fails += FailureInfo(transformer::class, e, ktFile.virtualFilePath)
|
||||
} else {
|
||||
println("Fail in file: ${firFile.packageFqName} / ${firFile.name}")
|
||||
fails += FailureInfo(transformer::class, e, firFile.packageFqName.asString() + "/" + firFile.name)
|
||||
}
|
||||
fail = true
|
||||
//println(ktFile.text)
|
||||
//throw e
|
||||
processWithTimeMeasure(
|
||||
transformer::class,
|
||||
{ transformer.transformFile(firFile, null) }
|
||||
) { e ->
|
||||
val ktFile = firFile.psi
|
||||
if (ktFile is KtFile) {
|
||||
println("Fail in file: ${ktFile.virtualFilePath}")
|
||||
FailureInfo(transformer::class, e, ktFile.virtualFilePath)
|
||||
} else {
|
||||
println("Fail in file: ${firFile.packageFqName} / ${firFile.name}")
|
||||
FailureInfo(transformer::class, e, firFile.packageFqName.asString() + "/" + firFile.name)
|
||||
}
|
||||
}
|
||||
if (!fail) {
|
||||
val after = vmStateSnapshot()
|
||||
val diff = after - before
|
||||
recordTime(transformer::class, diff, time)
|
||||
}
|
||||
}
|
||||
|
||||
private fun runStage(processor: FirGlobalResolveProcessor) {
|
||||
processWithTimeMeasure(
|
||||
processor::class,
|
||||
{ processor.process() }
|
||||
) { e ->
|
||||
val message = "Fail on stage ${processor::class}"
|
||||
println(message)
|
||||
FailureInfo(processor::class, e, message)
|
||||
}
|
||||
}
|
||||
|
||||
private inline fun processWithTimeMeasure(
|
||||
kClass: KClass<*>,
|
||||
block: () -> Unit,
|
||||
catchBlock: (Throwable) -> FailureInfo
|
||||
) {
|
||||
var fail = false
|
||||
val before = vmStateSnapshot()
|
||||
val time = measureNanoTime {
|
||||
try {
|
||||
block()
|
||||
} catch (e: Throwable) {
|
||||
fails += catchBlock(e)
|
||||
fail = true
|
||||
}
|
||||
//totalLength += StringBuilder().apply { FirRenderer(this).visitFile(firFile) }.length
|
||||
}
|
||||
if (!fail) {
|
||||
val after = vmStateSnapshot()
|
||||
val diff = after - before
|
||||
recordTime(kClass, diff, time)
|
||||
}
|
||||
}
|
||||
|
||||
fun processFiles(
|
||||
firFiles: List<FirFile>,
|
||||
transformers: List<FirTransformer<Nothing?>>
|
||||
processors: List<FirResolveProcessor>
|
||||
) {
|
||||
fileCount += firFiles.size
|
||||
try {
|
||||
for ((stage, transformer) in transformers.withIndex()) {
|
||||
for ((stage, processor) in processors.withIndex()) {
|
||||
//println("Starting stage #$stage. $transformer")
|
||||
val firFileSequence = if (withProgress) firFiles.progress(" ~ ") else firFiles.asSequence()
|
||||
runStage(transformer, firFileSequence)
|
||||
runStage(processor, firFileSequence)
|
||||
checkFirProvidersConsistency(firFiles)
|
||||
}
|
||||
|
||||
@@ -205,7 +235,6 @@ class FirResolveBench(val withProgress: Boolean) {
|
||||
}
|
||||
} finally {
|
||||
|
||||
|
||||
val fileDocumentManager = FileDocumentManager.getInstance()
|
||||
|
||||
firFiles.forEach {
|
||||
@@ -327,7 +356,7 @@ class FirResolveBench(val withProgress: Boolean) {
|
||||
|
||||
fun doFirResolveTestBench(
|
||||
firFiles: List<FirFile>,
|
||||
transformers: List<FirTransformer<Nothing?>>,
|
||||
processors: List<FirResolveProcessor>,
|
||||
gc: Boolean = true,
|
||||
withProgress: Boolean = false,
|
||||
silent: Boolean = true
|
||||
@@ -338,7 +367,7 @@ fun doFirResolveTestBench(
|
||||
}
|
||||
|
||||
val bench = FirResolveBench(withProgress)
|
||||
bench.processFiles(firFiles, transformers)
|
||||
bench.processFiles(firFiles, processors)
|
||||
if (!silent) bench.getTotalStatistics().report(System.out, "")
|
||||
bench.throwFailure()
|
||||
}
|
||||
|
||||
+3
-3
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.fir.createSession
|
||||
import org.jetbrains.kotlin.fir.render
|
||||
import org.jetbrains.kotlin.fir.resolve.firProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.impl.FirProviderImpl
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveTransformer
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveProcessor
|
||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||
import org.jetbrains.kotlin.visualizer.AbstractVisualizer
|
||||
import org.junit.Assert
|
||||
@@ -37,14 +37,14 @@ abstract class AbstractFirVisualizer : AbstractVisualizer() {
|
||||
val firProvider = (session.firProvider as FirProviderImpl)
|
||||
val builder = RawFirBuilder(session, firProvider.kotlinScopeProvider, stubMode = false)
|
||||
|
||||
val transformer = FirTotalResolveTransformer(session)
|
||||
val transformer = FirTotalResolveProcessor(session)
|
||||
val firFiles = ktFiles.map {
|
||||
val firFile = builder.buildFirFile(it)
|
||||
firProvider.recordFile(firFile)
|
||||
firFile
|
||||
}.also {
|
||||
try {
|
||||
transformer.processFiles(it)
|
||||
transformer.process(it)
|
||||
} catch (e: Exception) {
|
||||
it.forEach { println(it.render()) }
|
||||
throw e
|
||||
|
||||
+9
-7
@@ -16,9 +16,7 @@ import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.dependenciesWithoutSelf
|
||||
import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar
|
||||
import org.jetbrains.kotlin.fir.extensions.extensionService
|
||||
import org.jetbrains.kotlin.fir.extensions.oldExtensionsService
|
||||
import org.jetbrains.kotlin.fir.extensions.registerExtensions
|
||||
import org.jetbrains.kotlin.fir.java.FirJavaModuleBasedSession
|
||||
import org.jetbrains.kotlin.fir.java.FirLibrarySession
|
||||
@@ -34,7 +32,10 @@ import org.jetbrains.kotlin.fir.resolve.firProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.firSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.impl.FirCompositeSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.impl.FirProviderImpl
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveTransformer
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveProcessor
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirTransformerBasedResolveProcessor
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirGlobalResolveProcessor
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.createAllTransformerBasedResolveProcessors
|
||||
import org.jetbrains.kotlin.fir.scopes.impl.FirCompositeScope
|
||||
import org.jetbrains.kotlin.idea.KotlinFileType
|
||||
import org.jetbrains.kotlin.idea.caches.project.IdeaModuleInfo
|
||||
@@ -84,7 +85,7 @@ abstract class AbstractFirMultiModuleResolveTest : AbstractMultiModuleTest() {
|
||||
|
||||
private fun doFirResolveTest(dirPath: String) {
|
||||
val firFilesPerSession = mutableMapOf<FirJavaModuleBasedSession, List<FirFile>>()
|
||||
val totalTransformerPerSession = mutableMapOf<FirJavaModuleBasedSession, FirTotalResolveTransformer>()
|
||||
val processorsPerSession = mutableMapOf<FirJavaModuleBasedSession, List<FirTransformerBasedResolveProcessor>>()
|
||||
val sessions = mutableListOf<FirJavaModuleBasedSession>()
|
||||
val provider = FirProjectSessionProvider(project)
|
||||
for (module in project.allModules().drop(1)) {
|
||||
@@ -116,7 +117,7 @@ abstract class AbstractFirMultiModuleResolveTest : AbstractMultiModuleTest() {
|
||||
firFiles += firFile
|
||||
}
|
||||
firFilesPerSession[session] = firFiles
|
||||
totalTransformerPerSession[session] = FirTotalResolveTransformer(session)
|
||||
processorsPerSession[session] = createAllTransformerBasedResolveProcessors(session)
|
||||
}
|
||||
println("Raw fir up, files: ${firFilesPerSession.values.flatten().size}")
|
||||
|
||||
@@ -136,9 +137,10 @@ abstract class AbstractFirMultiModuleResolveTest : AbstractMultiModuleTest() {
|
||||
for (phaseIndex in 1 until FirResolvePhase.values().size) {
|
||||
for (session in sessions) {
|
||||
val firFiles = firFilesPerSession[session]!!
|
||||
val transformer = totalTransformerPerSession[session]!!
|
||||
val processors = processorsPerSession[session]!!
|
||||
for (file in firFiles) {
|
||||
transformer.transformers[phaseIndex - 1].visitFile(file, null)
|
||||
val processor = processors[phaseIndex - 1]
|
||||
processor.processFile(file)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user