[FIR] Pass the whole body context to the resolve context collector
Collector for the 'FirCodeFragment' analysis needs to capture also data-flow information.
This commit is contained in:
+3
-7
@@ -19,7 +19,6 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.file.structure.KtToFirMap
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.RawFirNonLocalDeclarationBuilder
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.RawFirReplacement
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.buildFileFirAnnotation
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.buildFirUserTypeRef
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirResolvableModuleSession
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.llFirResolvableSession
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.llFirSession
|
||||
@@ -37,12 +36,9 @@ import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||
import org.jetbrains.kotlin.fir.realPsi
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirTypeResolveTransformer
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirTowerDataContextCollector
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirResolveContextCollector
|
||||
import org.jetbrains.kotlin.fir.scopes.createImportingScopes
|
||||
import org.jetbrains.kotlin.fir.scopes.kotlinScopeProvider
|
||||
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
||||
import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.isAncestor
|
||||
@@ -211,7 +207,7 @@ object LowLevelFirApiFacadeForResolveOnAir {
|
||||
annotationEntry: KtAnnotationEntry,
|
||||
replacement: RawFirReplacement,
|
||||
firFile: FirFile,
|
||||
collector: FirTowerDataContextCollector? = null,
|
||||
collector: FirResolveContextCollector? = null,
|
||||
firResolveSession: LLFirResolvableResolveSession,
|
||||
): FirAnnotation {
|
||||
val annotationCall = buildFileFirAnnotation(
|
||||
@@ -249,7 +245,7 @@ object LowLevelFirApiFacadeForResolveOnAir {
|
||||
firResolveSession: LLFirResolvableResolveSession,
|
||||
replacement: RawFirReplacement,
|
||||
onAirCreatedDeclaration: Boolean,
|
||||
collector: FirTowerDataContextCollector? = null,
|
||||
collector: FirResolveContextCollector? = null,
|
||||
): FirElement {
|
||||
val nonLocalDeclaration = replacement.from.onAirGetNonLocalContainingOrThisDeclarationFor()
|
||||
val originalFirFile = firResolveSession.getOrBuildFirFile(replacement.from.containingKtFile)
|
||||
|
||||
+7
-6
@@ -13,7 +13,8 @@ import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
||||
import org.jetbrains.kotlin.fir.declarations.FirTowerDataContext
|
||||
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
||||
import org.jetbrains.kotlin.fir.psi
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirTowerDataContextCollector
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.BodyResolveContext
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirResolveContextCollector
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.parentsWithSelf
|
||||
import org.jetbrains.kotlin.utils.addIfNotNull
|
||||
@@ -30,7 +31,7 @@ internal class FileTowerProvider(
|
||||
if (file == ktElement.containingKtFile) context else null
|
||||
}
|
||||
|
||||
internal class FirTowerDataContextAllElementsCollector : FirTowerDataContextCollector, FirTowerContextProvider {
|
||||
internal class FirTowerDataContextAllElementsCollector : FirResolveContextCollector, FirTowerContextProvider {
|
||||
private val elementsToContext: MutableMap<KtElement, FirTowerDataContext> = hashMapOf()
|
||||
|
||||
/**
|
||||
@@ -46,13 +47,13 @@ internal class FirTowerDataContextAllElementsCollector : FirTowerDataContextColl
|
||||
elementsToContext[ktFile] = context
|
||||
}
|
||||
|
||||
override fun addStatementContext(statement: FirStatement, context: FirTowerDataContext) {
|
||||
override fun addStatementContext(statement: FirStatement, context: BodyResolveContext) {
|
||||
val closestStatementInBlock = statement.psi?.closestBlockLevelOrInitializerExpression() ?: return
|
||||
// FIR body transform may alter the context if there are implicit receivers with smartcast
|
||||
elementsToContext[closestStatementInBlock] = context.createSnapshot()
|
||||
elementsToContext[closestStatementInBlock] = context.towerDataContext.createSnapshot()
|
||||
}
|
||||
|
||||
override fun addDeclarationContext(declaration: FirDeclaration, context: FirTowerDataContext) {
|
||||
override fun addDeclarationContext(declaration: FirDeclaration, context: BodyResolveContext) {
|
||||
val psi = declaration.psi as? KtElement ?: return
|
||||
|
||||
// FIR creates a fake field declaration for the delegated super calls,
|
||||
@@ -60,7 +61,7 @@ internal class FirTowerDataContextAllElementsCollector : FirTowerDataContextColl
|
||||
// we do not collect contexts for such declarations
|
||||
if (psi is KtDelegatedSuperTypeEntry) return
|
||||
|
||||
elementsToContext[psi] = context
|
||||
elementsToContext[psi] = context.towerDataContext
|
||||
}
|
||||
|
||||
override fun addClassHeaderContext(declaration: FirRegularClass, context: FirTowerDataContext) {
|
||||
|
||||
+4
-4
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
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.FirResolveContextCollector
|
||||
import org.jetbrains.kotlin.fir.visitors.transformSingle
|
||||
|
||||
internal class LLFirModuleLazyDeclarationResolver(val moduleComponents: LLFirModuleResolveComponents) {
|
||||
@@ -103,7 +103,7 @@ internal class LLFirModuleLazyDeclarationResolver(val moduleComponents: LLFirMod
|
||||
fun lazyResolveTarget(
|
||||
target: LLFirResolveTarget,
|
||||
toPhase: FirResolvePhase,
|
||||
towerDataContextCollector: FirTowerDataContextCollector?,
|
||||
towerDataContextCollector: FirResolveContextCollector?,
|
||||
) {
|
||||
try {
|
||||
lazyResolveTargets(
|
||||
@@ -120,7 +120,7 @@ internal class LLFirModuleLazyDeclarationResolver(val moduleComponents: LLFirMod
|
||||
fun runLazyDesignatedOnAirResolveToBodyWithoutLock(
|
||||
designation: FirDesignationWithFile,
|
||||
onAirCreatedDeclaration: Boolean,
|
||||
towerDataContextCollector: FirTowerDataContextCollector?,
|
||||
towerDataContextCollector: FirResolveContextCollector?,
|
||||
) {
|
||||
resolveFileToImportsWithLock(designation.firFile)
|
||||
|
||||
@@ -161,7 +161,7 @@ internal class LLFirModuleLazyDeclarationResolver(val moduleComponents: LLFirMod
|
||||
targets: List<LLFirResolveTarget>,
|
||||
scopeSession: ScopeSession,
|
||||
toPhase: FirResolvePhase,
|
||||
towerDataContextCollector: FirTowerDataContextCollector?,
|
||||
towerDataContextCollector: FirResolveContextCollector?,
|
||||
) {
|
||||
if (targets.isEmpty()) return
|
||||
var currentPhase = getMinResolvePhase(targets).coerceAtLeast(FirResolvePhase.IMPORTS)
|
||||
|
||||
+2
-2
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.fir.resolve.ResolutionMode
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.ReturnTypeCalculator
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirAbstractBodyResolveTransformerDispatcher
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirTowerDataContextCollector
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirResolveContextCollector
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.ImplicitBodyResolveComputationSession
|
||||
import org.jetbrains.kotlin.fir.visitors.transformSingle
|
||||
|
||||
@@ -29,7 +29,7 @@ internal abstract class LLFirAbstractBodyTargetResolver(
|
||||
isJumpingPhase: Boolean = false
|
||||
) : LLFirTargetResolver(resolveTarget, lockProvider, resolvePhase, isJumpingPhase) {
|
||||
protected fun createReturnTypeCalculator(
|
||||
towerDataContextCollector: FirTowerDataContextCollector?,
|
||||
towerDataContextCollector: FirResolveContextCollector?,
|
||||
): ReturnTypeCalculator = LLFirReturnTypeCalculatorWithJump(
|
||||
scopeSession,
|
||||
implicitBodyResolveComputationSession,
|
||||
|
||||
+2
-2
@@ -19,7 +19,7 @@ import org.jetbrains.kotlin.fir.expressions.builder.buildArgumentList
|
||||
import org.jetbrains.kotlin.fir.expressions.impl.FirResolvedArgumentList
|
||||
import org.jetbrains.kotlin.fir.references.isError
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirTowerDataContextCollector
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirResolveContextCollector
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.plugin.FirAnnotationArgumentsMappingTransformer
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
||||
import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid
|
||||
@@ -30,7 +30,7 @@ internal object LLFirAnnotationArgumentMappingLazyResolver : LLFirLazyResolver(F
|
||||
lockProvider: LLFirLockProvider,
|
||||
session: FirSession,
|
||||
scopeSession: ScopeSession,
|
||||
towerDataContextCollector: FirTowerDataContextCollector?,
|
||||
towerDataContextCollector: FirResolveContextCollector?,
|
||||
) {
|
||||
val resolver = LLFirAnnotationArgumentsMappingTargetResolver(target, lockProvider, session, scopeSession)
|
||||
resolver.resolveDesignation()
|
||||
|
||||
+2
-2
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.resolve.ResolutionMode
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirTowerDataContextCollector
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirResolveContextCollector
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.plugin.FirAnnotationArgumentsResolveTransformer
|
||||
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
||||
import org.jetbrains.kotlin.fir.visitors.transformSingle
|
||||
@@ -31,7 +31,7 @@ internal object LLFirAnnotationArgumentsLazyResolver : LLFirLazyResolver(FirReso
|
||||
lockProvider: LLFirLockProvider,
|
||||
session: FirSession,
|
||||
scopeSession: ScopeSession,
|
||||
towerDataContextCollector: FirTowerDataContextCollector?,
|
||||
towerDataContextCollector: FirResolveContextCollector?,
|
||||
) {
|
||||
val resolver = LLFirAnnotationArgumentsTargetResolver(target, lockProvider, session, scopeSession)
|
||||
resolver.resolveDesignation()
|
||||
|
||||
+9
-9
@@ -32,7 +32,7 @@ import org.jetbrains.kotlin.fir.references.builder.buildExplicitThisReference
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.resolve.dfa.FirControlFlowGraphReferenceImpl
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirBodyResolveTransformer
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirTowerDataContextCollector
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirResolveContextCollector
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.contracts.FirContractsDslNames
|
||||
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
||||
@@ -44,7 +44,7 @@ internal object LLFirBodyLazyResolver : LLFirLazyResolver(FirResolvePhase.BODY_R
|
||||
lockProvider: LLFirLockProvider,
|
||||
session: FirSession,
|
||||
scopeSession: ScopeSession,
|
||||
towerDataContextCollector: FirTowerDataContextCollector?,
|
||||
towerDataContextCollector: FirResolveContextCollector?,
|
||||
) {
|
||||
val resolver = LLFirBodyTargetResolver(target, lockProvider, session, scopeSession, towerDataContextCollector)
|
||||
resolver.resolveDesignation()
|
||||
@@ -75,7 +75,7 @@ private class LLFirBodyTargetResolver(
|
||||
lockProvider: LLFirLockProvider,
|
||||
session: FirSession,
|
||||
scopeSession: ScopeSession,
|
||||
towerDataContextCollector: FirTowerDataContextCollector?,
|
||||
towerDataContextCollector: FirResolveContextCollector?,
|
||||
) : LLFirAbstractBodyTargetResolver(
|
||||
target,
|
||||
lockProvider,
|
||||
@@ -88,7 +88,7 @@ private class LLFirBodyTargetResolver(
|
||||
implicitTypeOnly = false,
|
||||
scopeSession = scopeSession,
|
||||
returnTypeCalculator = createReturnTypeCalculator(towerDataContextCollector = towerDataContextCollector),
|
||||
firTowerDataContextCollector = towerDataContextCollector,
|
||||
firResolveContextCollector = towerDataContextCollector,
|
||||
) {
|
||||
override val preserveCFGForClasses: Boolean get() = false
|
||||
}
|
||||
@@ -131,10 +131,10 @@ private class LLFirBodyTargetResolver(
|
||||
|
||||
private fun resolveMembersForControlFlowGraph(target: FirRegularClass) {
|
||||
withTypeArguments(target) {
|
||||
transformer.firTowerDataContextCollector?.addClassHeaderContext(target, transformer.context.towerDataContext)
|
||||
transformer.firResolveContextCollector?.addClassHeaderContext(target, transformer.context.towerDataContext)
|
||||
}
|
||||
withRegularClass(target) {
|
||||
transformer.firTowerDataContextCollector?.addDeclarationContext(target, transformer.context.towerDataContext)
|
||||
transformer.firResolveContextCollector?.addDeclarationContext(target, transformer.context)
|
||||
|
||||
for (member in target.declarations) {
|
||||
if (member is FirControlFlowGraphOwner && member.isUsedInControlFlowGraphBuilderForClass) {
|
||||
@@ -146,15 +146,15 @@ private class LLFirBodyTargetResolver(
|
||||
}
|
||||
|
||||
override fun doLazyResolveUnderLock(target: FirElementWithResolveState) {
|
||||
val contextCollector = transformer.firTowerDataContextCollector
|
||||
val contextCollector = transformer.firResolveContextCollector
|
||||
if (contextCollector != null && target is FirDeclaration) {
|
||||
val bodyResolveContext = transformer.context
|
||||
if (target is FirFunction) {
|
||||
bodyResolveContext.forFunctionBody(target, transformer.components) {
|
||||
contextCollector.addDeclarationContext(target, bodyResolveContext.towerDataContext)
|
||||
contextCollector.addDeclarationContext(target, bodyResolveContext)
|
||||
}
|
||||
} else {
|
||||
contextCollector.addDeclarationContext(target, bodyResolveContext.towerDataContext)
|
||||
contextCollector.addDeclarationContext(target, bodyResolveContext)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -27,7 +27,7 @@ import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||
import org.jetbrains.kotlin.fir.expressions.builder.buildAnnotationCallCopy
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirTowerDataContextCollector
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirResolveContextCollector
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.plugin.CompilerRequiredAnnotationsComputationSession
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.plugin.FirCompilerRequiredAnnotationsResolveTransformer
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
|
||||
@@ -40,7 +40,7 @@ internal object LLFirCompilerAnnotationsLazyResolver : LLFirLazyResolver(FirReso
|
||||
lockProvider: LLFirLockProvider,
|
||||
session: FirSession,
|
||||
scopeSession: ScopeSession,
|
||||
towerDataContextCollector: FirTowerDataContextCollector?,
|
||||
towerDataContextCollector: FirResolveContextCollector?,
|
||||
) {
|
||||
val resolver = LLFirCompilerRequiredAnnotationsTargetResolver(target, lockProvider, session, scopeSession)
|
||||
resolver.resolveDesignation()
|
||||
|
||||
+2
-2
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.contracts.FirRawContractDescription
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirTowerDataContextCollector
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirResolveContextCollector
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.contracts.FirContractResolveTransformer
|
||||
|
||||
internal object LLFirContractsLazyResolver : LLFirLazyResolver(FirResolvePhase.CONTRACTS) {
|
||||
@@ -27,7 +27,7 @@ internal object LLFirContractsLazyResolver : LLFirLazyResolver(FirResolvePhase.C
|
||||
lockProvider: LLFirLockProvider,
|
||||
session: FirSession,
|
||||
scopeSession: ScopeSession,
|
||||
towerDataContextCollector: FirTowerDataContextCollector?,
|
||||
towerDataContextCollector: FirResolveContextCollector?,
|
||||
) {
|
||||
val resolver = LLFirContractsTargetResolver(target, lockProvider, session, scopeSession)
|
||||
resolver.resolveDesignation()
|
||||
|
||||
+2
-2
@@ -15,7 +15,7 @@ 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.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirTowerDataContextCollector
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirResolveContextCollector
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.mpp.FirExpectActualMatcherTransformer
|
||||
|
||||
internal object LLFirExpectActualMatcherLazyResolver : LLFirLazyResolver(FirResolvePhase.EXPECT_ACTUAL_MATCHING) {
|
||||
@@ -24,7 +24,7 @@ internal object LLFirExpectActualMatcherLazyResolver : LLFirLazyResolver(FirReso
|
||||
lockProvider: LLFirLockProvider,
|
||||
session: FirSession,
|
||||
scopeSession: ScopeSession,
|
||||
towerDataContextCollector: FirTowerDataContextCollector?,
|
||||
towerDataContextCollector: FirResolveContextCollector?,
|
||||
) {
|
||||
val resolver = LLFirExpectActualMatchingTargetResolver(target, lockProvider, session, scopeSession)
|
||||
resolver.resolveDesignation()
|
||||
|
||||
+2
-2
@@ -15,7 +15,7 @@ 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.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirTowerDataContextCollector
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirResolveContextCollector
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.plugin.FirCompanionGenerationTransformer
|
||||
|
||||
internal object LLFirGeneratedCompanionObjectLazyResolver : LLFirLazyResolver(FirResolvePhase.COMPANION_GENERATION) {
|
||||
@@ -24,7 +24,7 @@ internal object LLFirGeneratedCompanionObjectLazyResolver : LLFirLazyResolver(Fi
|
||||
lockProvider: LLFirLockProvider,
|
||||
session: FirSession,
|
||||
scopeSession: ScopeSession,
|
||||
towerDataContextCollector: FirTowerDataContextCollector?,
|
||||
towerDataContextCollector: FirResolveContextCollector?,
|
||||
) {
|
||||
val resolver = LLFirCompanionGenerationTargetResolver(target, lockProvider, session)
|
||||
resolver.resolveDesignation()
|
||||
|
||||
+4
-4
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirImplicitAwareBodyResolveTransformer
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirTowerDataContextCollector
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirResolveContextCollector
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.ImplicitBodyResolveComputationSession
|
||||
import org.jetbrains.kotlin.fir.scopes.fakeOverrideSubstitution
|
||||
|
||||
@@ -27,7 +27,7 @@ internal object LLFirImplicitTypesLazyResolver : LLFirLazyResolver(FirResolvePha
|
||||
lockProvider: LLFirLockProvider,
|
||||
session: FirSession,
|
||||
scopeSession: ScopeSession,
|
||||
towerDataContextCollector: FirTowerDataContextCollector?,
|
||||
towerDataContextCollector: FirResolveContextCollector?,
|
||||
) {
|
||||
val resolver = LLFirImplicitBodyTargetResolver(target, lockProvider, session, scopeSession, towerDataContextCollector)
|
||||
resolver.resolveDesignation()
|
||||
@@ -56,7 +56,7 @@ internal class LLFirImplicitBodyTargetResolver(
|
||||
lockProvider: LLFirLockProvider,
|
||||
session: FirSession,
|
||||
scopeSession: ScopeSession,
|
||||
towerDataContextCollector: FirTowerDataContextCollector?,
|
||||
towerDataContextCollector: FirResolveContextCollector?,
|
||||
implicitBodyResolveComputationSession: ImplicitBodyResolveComputationSession? = null,
|
||||
) : LLFirAbstractBodyTargetResolver(
|
||||
target,
|
||||
@@ -72,7 +72,7 @@ internal class LLFirImplicitBodyTargetResolver(
|
||||
phase = resolverPhase,
|
||||
implicitTypeOnly = true,
|
||||
scopeSession = scopeSession,
|
||||
firTowerDataContextCollector = towerDataContextCollector,
|
||||
firResolveContextCollector = towerDataContextCollector,
|
||||
returnTypeCalculator = createReturnTypeCalculator(towerDataContextCollector = towerDataContextCollector),
|
||||
) {
|
||||
override val preserveCFGForClasses: Boolean get() = false
|
||||
|
||||
+2
-2
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirTowerDataContextCollector
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirResolveContextCollector
|
||||
|
||||
internal abstract class LLFirLazyResolver(
|
||||
val resolverPhase: FirResolvePhase,
|
||||
@@ -21,7 +21,7 @@ internal abstract class LLFirLazyResolver(
|
||||
lockProvider: LLFirLockProvider,
|
||||
session: FirSession,
|
||||
scopeSession: ScopeSession,
|
||||
towerDataContextCollector: FirTowerDataContextCollector?,
|
||||
towerDataContextCollector: FirResolveContextCollector?,
|
||||
)
|
||||
|
||||
abstract fun checkIsResolved(target: FirElementWithResolveState)
|
||||
|
||||
+2
-2
@@ -9,7 +9,7 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.LLFirResolveT
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirLockProvider
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirTowerDataContextCollector
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirResolveContextCollector
|
||||
|
||||
internal object LLFirLazyResolverRunner {
|
||||
fun runLazyResolverByPhase(
|
||||
@@ -17,7 +17,7 @@ internal object LLFirLazyResolverRunner {
|
||||
target: LLFirResolveTarget,
|
||||
scopeSession: ScopeSession,
|
||||
lockProvider: LLFirLockProvider,
|
||||
towerDataContextCollector: FirTowerDataContextCollector?,
|
||||
towerDataContextCollector: FirResolveContextCollector?,
|
||||
) {
|
||||
val lazyResolver = LLFirLazyPhaseResolverByPhase.getByPhase(phase)
|
||||
val firFile = target.firFile
|
||||
|
||||
+2
-3
@@ -10,10 +10,9 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.asResolveTarg
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirLockProvider
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.transformers.LLFirImplicitBodyTargetResolver
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.transformers.LLFirImplicitTypesLazyResolver
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirTowerDataContextCollector
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirResolveContextCollector
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.ImplicitBodyResolveComputationSession
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.ReturnTypeCalculatorWithJump
|
||||
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||
@@ -24,7 +23,7 @@ internal class LLFirReturnTypeCalculatorWithJump(
|
||||
scopeSession: ScopeSession,
|
||||
implicitBodyResolveComputationSession: ImplicitBodyResolveComputationSession,
|
||||
private val lockProvider: LLFirLockProvider,
|
||||
private val towerDataContextCollector: FirTowerDataContextCollector?,
|
||||
private val towerDataContextCollector: FirResolveContextCollector?,
|
||||
) : ReturnTypeCalculatorWithJump(scopeSession, implicitBodyResolveComputationSession) {
|
||||
override fun resolveDeclaration(declaration: FirCallableDeclaration): FirResolvedTypeRef {
|
||||
if (declaration.returnTypeRef !is FirImplicitTypeRef) {
|
||||
|
||||
+2
-2
@@ -15,7 +15,7 @@ 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.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirTowerDataContextCollector
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirResolveContextCollector
|
||||
|
||||
internal object LLFirSealedClassInheritorsLazyResolver : LLFirLazyResolver(FirResolvePhase.SEALED_CLASS_INHERITORS) {
|
||||
override fun resolve(
|
||||
@@ -23,7 +23,7 @@ internal object LLFirSealedClassInheritorsLazyResolver : LLFirLazyResolver(FirRe
|
||||
lockProvider: LLFirLockProvider,
|
||||
session: FirSession,
|
||||
scopeSession: ScopeSession,
|
||||
towerDataContextCollector: FirTowerDataContextCollector?,
|
||||
towerDataContextCollector: FirResolveContextCollector?,
|
||||
) {
|
||||
val resolver = LLFirSealedClassInheritorsDesignatedResolver(target, lockProvider)
|
||||
resolver.resolveDesignation()
|
||||
|
||||
+2
-3
@@ -20,8 +20,7 @@ import org.jetbrains.kotlin.fir.expressions.FirStatement
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirStatusResolveTransformer
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.StatusComputationSession
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.StatusComputationSession.StatusComputationStatus
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirTowerDataContextCollector
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirResolveContextCollector
|
||||
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||
import org.jetbrains.kotlin.fir.visitors.transformSingle
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
@@ -32,7 +31,7 @@ internal object LLFirStatusLazyResolver : LLFirLazyResolver(FirResolvePhase.STAT
|
||||
lockProvider: LLFirLockProvider,
|
||||
session: FirSession,
|
||||
scopeSession: ScopeSession,
|
||||
towerDataContextCollector: FirTowerDataContextCollector?,
|
||||
towerDataContextCollector: FirResolveContextCollector?,
|
||||
) {
|
||||
val resolver = LLFirStatusTargetResolver(
|
||||
target = target,
|
||||
|
||||
+2
-2
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirSupertypeResolverVisitor
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.SupertypeComputationSession
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.SupertypeComputationStatus
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirTowerDataContextCollector
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirResolveContextCollector
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.platformSupertypeUpdater
|
||||
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||
import org.jetbrains.kotlin.fir.types.*
|
||||
@@ -36,7 +36,7 @@ internal object LLFirSupertypeLazyResolver : LLFirLazyResolver(FirResolvePhase.S
|
||||
lockProvider: LLFirLockProvider,
|
||||
session: FirSession,
|
||||
scopeSession: ScopeSession,
|
||||
towerDataContextCollector: FirTowerDataContextCollector?,
|
||||
towerDataContextCollector: FirResolveContextCollector?,
|
||||
) {
|
||||
val resolver = LLFirSuperTypeTargetResolver(target, lockProvider, session, scopeSession)
|
||||
resolver.resolveDesignation()
|
||||
|
||||
+2
-2
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.fir.PrivateForInline
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirTypeResolveTransformer
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirTowerDataContextCollector
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirResolveContextCollector
|
||||
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
@@ -33,7 +33,7 @@ internal object LLFirTypeLazyResolver : LLFirLazyResolver(FirResolvePhase.TYPES)
|
||||
lockProvider: LLFirLockProvider,
|
||||
session: FirSession,
|
||||
scopeSession: ScopeSession,
|
||||
towerDataContextCollector: FirTowerDataContextCollector?,
|
||||
towerDataContextCollector: FirResolveContextCollector?,
|
||||
) {
|
||||
val resolver = LLFirTypeTargetResolver(target, lockProvider, session, scopeSession)
|
||||
resolver.resolveDesignation()
|
||||
|
||||
+2
-2
@@ -30,7 +30,7 @@ abstract class FirAbstractBodyResolveTransformerDispatcher(
|
||||
scopeSession: ScopeSession,
|
||||
val returnTypeCalculator: ReturnTypeCalculator = ReturnTypeCalculatorForFullBodyResolve,
|
||||
outerBodyResolveContext: BodyResolveContext? = null,
|
||||
val firTowerDataContextCollector: FirTowerDataContextCollector? = null,
|
||||
val firResolveContextCollector: FirResolveContextCollector? = null,
|
||||
) : FirAbstractBodyResolveTransformer(phase) {
|
||||
|
||||
open val preserveCFGForClasses: Boolean get() = !implicitTypeOnly
|
||||
@@ -52,7 +52,7 @@ abstract class FirAbstractBodyResolveTransformerDispatcher(
|
||||
checkSessionConsistency(file)
|
||||
return context.withFile(file, components) {
|
||||
withFileAnalysisExceptionWrapping(file) {
|
||||
firTowerDataContextCollector?.addFileContext(file, context.towerDataContext)
|
||||
firResolveContextCollector?.addFileContext(file, context.towerDataContext)
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
transformDeclarationContent(file, data) as FirFile
|
||||
|
||||
+2
-2
@@ -18,7 +18,7 @@ open class FirBodyResolveTransformer(
|
||||
scopeSession: ScopeSession,
|
||||
returnTypeCalculator: ReturnTypeCalculator = ReturnTypeCalculatorForFullBodyResolve,
|
||||
outerBodyResolveContext: BodyResolveContext? = null,
|
||||
firTowerDataContextCollector: FirTowerDataContextCollector? = null
|
||||
firResolveContextCollector: FirResolveContextCollector? = null
|
||||
) : FirAbstractBodyResolveTransformerDispatcher(
|
||||
session,
|
||||
phase,
|
||||
@@ -26,7 +26,7 @@ open class FirBodyResolveTransformer(
|
||||
scopeSession,
|
||||
returnTypeCalculator,
|
||||
outerBodyResolveContext,
|
||||
firTowerDataContextCollector
|
||||
firResolveContextCollector
|
||||
) {
|
||||
final override val expressionsTransformer = FirExpressionsResolveTransformer(this)
|
||||
final override val declarationsTransformer = FirDeclarationsResolveTransformer(this)
|
||||
|
||||
+5
-5
@@ -69,7 +69,7 @@ open class FirDeclarationsResolveTransformer(
|
||||
}
|
||||
|
||||
protected fun transformDeclarationContent(declaration: FirDeclaration, data: ResolutionMode): FirDeclaration {
|
||||
transformer.firTowerDataContextCollector?.addDeclarationContext(declaration, context.towerDataContext)
|
||||
transformer.firResolveContextCollector?.addDeclarationContext(declaration, context)
|
||||
return transformer.transformDeclarationContent(declaration, data)
|
||||
}
|
||||
|
||||
@@ -526,7 +526,7 @@ open class FirDeclarationsResolveTransformer(
|
||||
whileAnalysing(session, regularClass) {
|
||||
return context.withContainingClass(regularClass) {
|
||||
if (regularClass.isLocal && regularClass !in context.targetedLocalClasses) {
|
||||
return regularClass.runAllPhasesForLocalClass(transformer, components, data, transformer.firTowerDataContextCollector)
|
||||
return regularClass.runAllPhasesForLocalClass(transformer, components, data, transformer.firResolveContextCollector)
|
||||
}
|
||||
|
||||
doTransformTypeParameters(regularClass)
|
||||
@@ -554,11 +554,11 @@ open class FirDeclarationsResolveTransformer(
|
||||
|
||||
override fun transformTypeAlias(typeAlias: FirTypeAlias, data: ResolutionMode): FirTypeAlias = whileAnalysing(session, typeAlias) {
|
||||
if (typeAlias.isLocal && typeAlias !in context.targetedLocalClasses) {
|
||||
return typeAlias.runAllPhasesForLocalClass(transformer, components, data, transformer.firTowerDataContextCollector)
|
||||
return typeAlias.runAllPhasesForLocalClass(transformer, components, data, transformer.firResolveContextCollector)
|
||||
}
|
||||
doTransformTypeParameters(typeAlias)
|
||||
typeAlias.transformAnnotations(transformer, data)
|
||||
transformer.firTowerDataContextCollector?.addDeclarationContext(typeAlias, context.towerDataContext)
|
||||
transformer.firResolveContextCollector?.addDeclarationContext(typeAlias, context)
|
||||
typeAlias.transformExpandedTypeRef(transformer, data)
|
||||
return typeAlias
|
||||
}
|
||||
@@ -592,7 +592,7 @@ open class FirDeclarationsResolveTransformer(
|
||||
data: ResolutionMode
|
||||
): FirStatement = whileAnalysing(session, anonymousObject) {
|
||||
if (anonymousObject !in context.targetedLocalClasses) {
|
||||
return anonymousObject.runAllPhasesForLocalClass(transformer, components, data, transformer.firTowerDataContextCollector)
|
||||
return anonymousObject.runAllPhasesForLocalClass(transformer, components, data, transformer.firResolveContextCollector)
|
||||
}
|
||||
require(anonymousObject.controlFlowGraphReference == null)
|
||||
val buildGraph = !implicitTypeOnly
|
||||
|
||||
+1
-1
@@ -560,7 +560,7 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT
|
||||
}
|
||||
|
||||
private fun collectStatementContext(statement: FirStatement) {
|
||||
transformer.firTowerDataContextCollector?.addStatementContext(statement, context.towerDataContext)
|
||||
transformer.firResolveContextCollector?.addStatementContext(statement, context)
|
||||
}
|
||||
|
||||
override fun transformThisReceiverExpression(
|
||||
|
||||
+4
-5
@@ -29,7 +29,6 @@ import org.jetbrains.kotlin.fir.scopes.impl.originalForWrappedIntegerOperator
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirSyntheticPropertySymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||
import org.jetbrains.kotlin.fir.types.FirErrorTypeRef
|
||||
import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef
|
||||
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
||||
import org.jetbrains.kotlin.fir.types.builder.buildErrorTypeRef
|
||||
@@ -71,7 +70,7 @@ fun <F : FirClassLikeDeclaration> F.runContractAndBodiesResolutionForLocalClass(
|
||||
components: FirAbstractBodyResolveTransformer.BodyResolveTransformerComponents,
|
||||
resolutionMode: ResolutionMode,
|
||||
localClassesNavigationInfo: LocalClassesNavigationInfo,
|
||||
firTowerDataContextCollector: FirTowerDataContextCollector? = null
|
||||
firResolveContextCollector: FirResolveContextCollector? = null
|
||||
): F {
|
||||
val currentReturnTypeCalculator = components.context.returnTypeCalculator as? ReturnTypeCalculatorWithJump
|
||||
val prevDesignation = currentReturnTypeCalculator?.designationMapForLocalClasses ?: emptyMap()
|
||||
@@ -103,7 +102,7 @@ fun <F : FirClassLikeDeclaration> F.runContractAndBodiesResolutionForLocalClass(
|
||||
implicitTypeOnly = false,
|
||||
returnTypeCalculator,
|
||||
outerBodyResolveContext = newContext,
|
||||
firTowerDataContextCollector = firTowerDataContextCollector
|
||||
firResolveContextCollector = firResolveContextCollector
|
||||
)
|
||||
return this.transform(transformer, resolutionMode)
|
||||
}
|
||||
@@ -116,7 +115,7 @@ open class FirImplicitAwareBodyResolveTransformer(
|
||||
implicitTypeOnly: Boolean,
|
||||
returnTypeCalculator: ReturnTypeCalculator,
|
||||
outerBodyResolveContext: BodyResolveContext? = null,
|
||||
firTowerDataContextCollector: FirTowerDataContextCollector? = null,
|
||||
firResolveContextCollector: FirResolveContextCollector? = null,
|
||||
) : FirBodyResolveTransformer(
|
||||
session,
|
||||
phase,
|
||||
@@ -124,7 +123,7 @@ open class FirImplicitAwareBodyResolveTransformer(
|
||||
scopeSession,
|
||||
returnTypeCalculator,
|
||||
outerBodyResolveContext,
|
||||
firTowerDataContextCollector
|
||||
firResolveContextCollector
|
||||
) {
|
||||
override fun transformSimpleFunction(
|
||||
simpleFunction: FirSimpleFunction,
|
||||
|
||||
+3
-3
@@ -14,10 +14,10 @@ import org.jetbrains.kotlin.fir.expressions.FirStatement
|
||||
/**
|
||||
* Collector needed to collect TowerDataContext in IDE for in-air resolved fir elements.
|
||||
*/
|
||||
interface FirTowerDataContextCollector {
|
||||
interface FirResolveContextCollector {
|
||||
fun addFileContext(file: FirFile, context: FirTowerDataContext)
|
||||
fun addStatementContext(statement: FirStatement, context: FirTowerDataContext)
|
||||
fun addDeclarationContext(declaration: FirDeclaration, context: FirTowerDataContext)
|
||||
fun addStatementContext(statement: FirStatement, context: BodyResolveContext)
|
||||
fun addDeclarationContext(declaration: FirDeclaration, context: BodyResolveContext)
|
||||
|
||||
/**
|
||||
* Here by "header" we understand the parts of the class declaration which resolution is not affected
|
||||
+2
-2
@@ -18,7 +18,7 @@ fun <F : FirClassLikeDeclaration> F.runAllPhasesForLocalClass(
|
||||
transformer: FirAbstractBodyResolveTransformer,
|
||||
components: FirAbstractBodyResolveTransformer.BodyResolveTransformerComponents,
|
||||
resolutionMode: ResolutionMode,
|
||||
firTowerDataContextCollector: FirTowerDataContextCollector?
|
||||
firResolveContextCollector: FirResolveContextCollector?
|
||||
): F {
|
||||
if (status is FirResolvedDeclarationStatus) return this
|
||||
if (this is FirRegularClass) {
|
||||
@@ -65,7 +65,7 @@ fun <F : FirClassLikeDeclaration> F.runAllPhasesForLocalClass(
|
||||
components,
|
||||
resolutionMode,
|
||||
localClassesNavigationInfo,
|
||||
firTowerDataContextCollector
|
||||
firResolveContextCollector
|
||||
)
|
||||
return this
|
||||
}
|
||||
|
||||
+1
-2
@@ -19,7 +19,6 @@ import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.BodyResolveCon
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirAbstractBodyResolveTransformerDispatcher
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirDeclarationsResolveTransformer
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirExpressionsResolveTransformer
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
import org.jetbrains.kotlin.fir.visitors.transformSingle
|
||||
|
||||
open class FirAnnotationArgumentsMappingTransformer(
|
||||
@@ -221,7 +220,7 @@ private class FirDeclarationsResolveTransformerForAnnotationArgumentsMapping(
|
||||
override fun transformTypeAlias(typeAlias: FirTypeAlias, data: ResolutionMode): FirTypeAlias {
|
||||
doTransformTypeParameters(typeAlias)
|
||||
typeAlias.transformAnnotations(transformer, data)
|
||||
transformer.firTowerDataContextCollector?.addDeclarationContext(typeAlias, context.towerDataContext)
|
||||
transformer.firResolveContextCollector?.addDeclarationContext(typeAlias, context)
|
||||
typeAlias.expandedTypeRef.transformSingle(transformer, data)
|
||||
return typeAlias
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user