[LL FIR] allow passing FirTowerDataContextCollector to

`LLFirModuleLazyDeclarationResolver.lazyResolveTarget`

so we can collect tower data context for any LLFirResolveTarget

^KT-57966
This commit is contained in:
Ilya Kirillov
2023-04-26 18:05:06 +02:00
committed by Space Team
parent 89ecd1e0e2
commit 8073e65162
2 changed files with 10 additions and 9 deletions
@@ -8,8 +8,8 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.file.structure
import org.jetbrains.kotlin.KtFakeSourceElementKind import org.jetbrains.kotlin.KtFakeSourceElementKind
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirModuleResolveComponents import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirModuleResolveComponents
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.collectDesignationWithFile import org.jetbrains.kotlin.analysis.low.level.api.fir.api.collectDesignationWithFile
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.LLFirClassWithSpecificMembersResolveTarget import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.LLFirClassWithSpecificMembersResolveTarget
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.impl.FirPrimaryConstructor import org.jetbrains.kotlin.fir.declarations.impl.FirPrimaryConstructor
import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.*
@@ -90,7 +90,11 @@ internal object FileElementFactory {
classMembersToResolve, classMembersToResolve,
) )
moduleComponents.firModuleLazyDeclarationResolver.lazyResolveTarget(designationWithMembers, FirResolvePhase.BODY_RESOLVE) moduleComponents.firModuleLazyDeclarationResolver.lazyResolveTarget(
designationWithMembers,
FirResolvePhase.BODY_RESOLVE,
towerDataContextCollector = null
)
} }
} }
@@ -21,11 +21,7 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.util.withFirEntry
import org.jetbrains.kotlin.analysis.utils.errors.rethrowExceptionWithDetails import org.jetbrains.kotlin.analysis.utils.errors.rethrowExceptionWithDetails
import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.FirElement
import org.jetbrains.kotlin.fir.FirElementWithResolveState import org.jetbrains.kotlin.fir.FirElementWithResolveState
import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.FirFile
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
import org.jetbrains.kotlin.fir.declarations.resolvePhase
import org.jetbrains.kotlin.fir.resolve.ScopeSession import org.jetbrains.kotlin.fir.resolve.ScopeSession
import org.jetbrains.kotlin.fir.resolve.transformers.FirImportResolveTransformer import org.jetbrains.kotlin.fir.resolve.transformers.FirImportResolveTransformer
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirTowerDataContextCollector import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirTowerDataContextCollector
@@ -104,14 +100,15 @@ internal class LLFirModuleLazyDeclarationResolver(val moduleComponents: LLFirMod
*/ */
fun lazyResolveTarget( fun lazyResolveTarget(
target: LLFirResolveTarget, target: LLFirResolveTarget,
toPhase: FirResolvePhase toPhase: FirResolvePhase,
towerDataContextCollector: FirTowerDataContextCollector?,
) { ) {
try { try {
lazyResolveTargets( lazyResolveTargets(
targets = listOf(target), targets = listOf(target),
moduleComponents.scopeSessionProvider.getScopeSession(), moduleComponents.scopeSessionProvider.getScopeSession(),
toPhase, toPhase,
towerDataContextCollector = null, towerDataContextCollector,
) )
} catch (e: Exception) { } catch (e: Exception) {
handleExceptionFromResolve(e, target, toPhase) handleExceptionFromResolve(e, target, toPhase)