[FIR] Add FirSession as parameter for FirTotalResolveTransformer
This commit is contained in:
@@ -68,7 +68,7 @@ abstract class AbstractFir2IrTextTest : AbstractIrTextTestCase() {
|
||||
val firProvider = (session.firProvider as FirProviderImpl)
|
||||
val builder = RawFirBuilder(session, firProvider.kotlinScopeProvider, stubMode = false)
|
||||
|
||||
val resolveTransformer = FirTotalResolveTransformer()
|
||||
val resolveTransformer = FirTotalResolveTransformer(session)
|
||||
val firFiles = psiFiles.map {
|
||||
val firFile = builder.buildFirFile(it)
|
||||
firProvider.recordFile(firFile)
|
||||
|
||||
+1
-1
@@ -55,7 +55,7 @@ class FirResolveModularizedTotalKotlinTest : AbstractModularizedTest() {
|
||||
.uniteWith(TopDownAnalyzerFacadeForJVM.AllJavaSourcesInProjectScope(project))
|
||||
val librariesScope = ProjectScope.getLibrariesScope(project)
|
||||
val session = createSession(environment, scope, librariesScope, moduleData.qualifiedName)
|
||||
val totalTransformer = FirTotalResolveTransformer()
|
||||
val totalTransformer = FirTotalResolveTransformer(session)
|
||||
|
||||
val firProvider = session.firProvider as FirProviderImpl
|
||||
val firFiles = if (useLightTree) {
|
||||
|
||||
+1
-1
@@ -52,7 +52,7 @@ fun FirFile.runResolve(toPhase: FirResolvePhase, fromPhase: FirResolvePhase = Fi
|
||||
var currentPhase = fromPhase
|
||||
while (currentPhase < toPhase) {
|
||||
currentPhase = currentPhase.next
|
||||
val phaseTransformer = currentPhase.createTransformerByPhase(scopeSession)
|
||||
val phaseTransformer = currentPhase.createTransformerByPhase(session, scopeSession)
|
||||
transform<FirFile, Nothing?>(phaseTransformer, null)
|
||||
}
|
||||
}
|
||||
|
||||
+3
-4
@@ -5,20 +5,19 @@
|
||||
|
||||
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
|
||||
|
||||
// TODO: rework, see rr/FIR/semoro-dev FirStagesTransformerFactory
|
||||
class FirTotalResolveTransformer {
|
||||
|
||||
class FirTotalResolveTransformer(session: FirSession) {
|
||||
val scopeSession = ScopeSession()
|
||||
|
||||
val transformers: List<FirTransformer<Nothing?>> =
|
||||
FirResolvePhase.values()
|
||||
.drop(1) // to remove RAW_FIR phase
|
||||
.map { it.createTransformerByPhase(scopeSession) }
|
||||
.map { it.createTransformerByPhase(session, scopeSession) }
|
||||
|
||||
fun processFiles(files: List<FirFile>) {
|
||||
for (transformer in transformers) {
|
||||
|
||||
+2
-1
@@ -5,6 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.resolve.transformers
|
||||
|
||||
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
|
||||
@@ -17,7 +18,7 @@ import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||
|
||||
// TODO: add FirSession parameter
|
||||
@OptIn(AdapterForResolvePhase::class)
|
||||
fun FirResolvePhase.createTransformerByPhase(scopeSession: ScopeSession): FirTransformer<Nothing?> {
|
||||
fun FirResolvePhase.createTransformerByPhase(session: FirSession, scopeSession: ScopeSession): FirTransformer<Nothing?> {
|
||||
return when (this) {
|
||||
RAW_FIR -> throw AssertionError("Raw FIR building phase does not have a transformer")
|
||||
ANNOTATIONS_FOR_PLUGINS -> FirPluginAnnotationsResolveTransformer(scopeSession)
|
||||
|
||||
Reference in New Issue
Block a user