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