[LL FIR] LLFirLazyResolver: deduplicate code
This commit is contained in:
committed by
Space Team
parent
84f3cc9f9c
commit
0ecb174720
+3
-6
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -31,15 +31,12 @@ import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid
|
|||||||
import org.jetbrains.kotlin.fir.visitors.transformSingle
|
import org.jetbrains.kotlin.fir.visitors.transformSingle
|
||||||
|
|
||||||
internal object LLFirAnnotationArgumentsLazyResolver : LLFirLazyResolver(FirResolvePhase.ANNOTATION_ARGUMENTS) {
|
internal object LLFirAnnotationArgumentsLazyResolver : LLFirLazyResolver(FirResolvePhase.ANNOTATION_ARGUMENTS) {
|
||||||
override fun resolve(
|
override fun createTargetResolver(
|
||||||
target: LLFirResolveTarget,
|
target: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
lockProvider: LLFirLockProvider,
|
||||||
scopeSession: ScopeSession,
|
scopeSession: ScopeSession,
|
||||||
towerDataContextCollector: FirResolveContextCollector?,
|
towerDataContextCollector: FirResolveContextCollector?,
|
||||||
) {
|
): LLFirTargetResolver = LLFirAnnotationArgumentsTargetResolver(target, lockProvider, scopeSession, towerDataContextCollector)
|
||||||
val resolver = LLFirAnnotationArgumentsTargetResolver(target, lockProvider, scopeSession, towerDataContextCollector)
|
|
||||||
resolver.resolveDesignation()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
||||||
if (target !is FirAnnotationContainer) return
|
if (target !is FirAnnotationContainer) return
|
||||||
|
|||||||
+3
-6
@@ -52,15 +52,12 @@ import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment
|
|||||||
import org.jetbrains.kotlin.utils.exceptions.withPsiEntry
|
import org.jetbrains.kotlin.utils.exceptions.withPsiEntry
|
||||||
|
|
||||||
internal object LLFirBodyLazyResolver : LLFirLazyResolver(FirResolvePhase.BODY_RESOLVE) {
|
internal object LLFirBodyLazyResolver : LLFirLazyResolver(FirResolvePhase.BODY_RESOLVE) {
|
||||||
override fun resolve(
|
override fun createTargetResolver(
|
||||||
target: LLFirResolveTarget,
|
target: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
lockProvider: LLFirLockProvider,
|
||||||
scopeSession: ScopeSession,
|
scopeSession: ScopeSession,
|
||||||
towerDataContextCollector: FirResolveContextCollector?,
|
towerDataContextCollector: FirResolveContextCollector?,
|
||||||
) {
|
): LLFirTargetResolver = LLFirBodyTargetResolver(target, lockProvider, scopeSession, towerDataContextCollector)
|
||||||
val resolver = LLFirBodyTargetResolver(target, lockProvider, scopeSession, towerDataContextCollector)
|
|
||||||
resolver.resolveDesignation()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
||||||
when (target) {
|
when (target) {
|
||||||
@@ -527,5 +524,5 @@ private fun delegatedConstructorCallGuard(fir: FirDelegatedConstructorCall): Fir
|
|||||||
|
|
||||||
private class LLFirCodeFragmentContext(
|
private class LLFirCodeFragmentContext(
|
||||||
override val towerDataContext: FirTowerDataContext,
|
override val towerDataContext: FirTowerDataContext,
|
||||||
override val smartCasts: Map<RealVariable, Set<ConeKotlinType>>
|
override val smartCasts: Map<RealVariable, Set<ConeKotlinType>>,
|
||||||
) : FirCodeFragmentContext
|
) : FirCodeFragmentContext
|
||||||
|
|||||||
+2
-5
@@ -33,15 +33,12 @@ import org.jetbrains.kotlin.fir.types.FirUserTypeRef
|
|||||||
import org.jetbrains.kotlin.util.PrivateForInline
|
import org.jetbrains.kotlin.util.PrivateForInline
|
||||||
|
|
||||||
internal object LLFirCompilerAnnotationsLazyResolver : LLFirLazyResolver(FirResolvePhase.COMPILER_REQUIRED_ANNOTATIONS) {
|
internal object LLFirCompilerAnnotationsLazyResolver : LLFirLazyResolver(FirResolvePhase.COMPILER_REQUIRED_ANNOTATIONS) {
|
||||||
override fun resolve(
|
override fun createTargetResolver(
|
||||||
target: LLFirResolveTarget,
|
target: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
lockProvider: LLFirLockProvider,
|
||||||
scopeSession: ScopeSession,
|
scopeSession: ScopeSession,
|
||||||
towerDataContextCollector: FirResolveContextCollector?,
|
towerDataContextCollector: FirResolveContextCollector?,
|
||||||
) {
|
): LLFirTargetResolver = LLFirCompilerRequiredAnnotationsTargetResolver(target, lockProvider, scopeSession)
|
||||||
val resolver = LLFirCompilerRequiredAnnotationsTargetResolver(target, lockProvider, scopeSession)
|
|
||||||
resolver.resolveDesignation()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
||||||
when (target) {
|
when (target) {
|
||||||
|
|||||||
+2
-5
@@ -26,15 +26,12 @@ import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef
|
|||||||
import org.jetbrains.kotlin.util.PrivateForInline
|
import org.jetbrains.kotlin.util.PrivateForInline
|
||||||
|
|
||||||
internal object LLFirContractsLazyResolver : LLFirLazyResolver(FirResolvePhase.CONTRACTS) {
|
internal object LLFirContractsLazyResolver : LLFirLazyResolver(FirResolvePhase.CONTRACTS) {
|
||||||
override fun resolve(
|
override fun createTargetResolver(
|
||||||
target: LLFirResolveTarget,
|
target: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
lockProvider: LLFirLockProvider,
|
||||||
scopeSession: ScopeSession,
|
scopeSession: ScopeSession,
|
||||||
towerDataContextCollector: FirResolveContextCollector?,
|
towerDataContextCollector: FirResolveContextCollector?,
|
||||||
) {
|
): LLFirTargetResolver = LLFirContractsTargetResolver(target, lockProvider, scopeSession, towerDataContextCollector)
|
||||||
val resolver = LLFirContractsTargetResolver(target, lockProvider, scopeSession, towerDataContextCollector)
|
|
||||||
resolver.resolveDesignation()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
||||||
if (target !is FirContractDescriptionOwner) return
|
if (target !is FirContractDescriptionOwner) return
|
||||||
|
|||||||
+3
-6
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -20,15 +20,12 @@ import org.jetbrains.kotlin.fir.resolve.transformers.mpp.FirExpectActualMatcherT
|
|||||||
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||||
|
|
||||||
internal object LLFirExpectActualMatcherLazyResolver : LLFirLazyResolver(FirResolvePhase.EXPECT_ACTUAL_MATCHING) {
|
internal object LLFirExpectActualMatcherLazyResolver : LLFirLazyResolver(FirResolvePhase.EXPECT_ACTUAL_MATCHING) {
|
||||||
override fun resolve(
|
override fun createTargetResolver(
|
||||||
target: LLFirResolveTarget,
|
target: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
lockProvider: LLFirLockProvider,
|
||||||
scopeSession: ScopeSession,
|
scopeSession: ScopeSession,
|
||||||
towerDataContextCollector: FirResolveContextCollector?,
|
towerDataContextCollector: FirResolveContextCollector?,
|
||||||
) {
|
): LLFirTargetResolver = LLFirExpectActualMatchingTargetResolver(target, lockProvider, scopeSession)
|
||||||
val resolver = LLFirExpectActualMatchingTargetResolver(target, lockProvider, scopeSession)
|
|
||||||
resolver.resolveDesignation()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
||||||
if (target.moduleData.session.languageVersionSettings.supportsFeature(LanguageFeature.MultiPlatformProjects) &&
|
if (target.moduleData.session.languageVersionSettings.supportsFeature(LanguageFeature.MultiPlatformProjects) &&
|
||||||
|
|||||||
+5
-6
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -15,15 +15,14 @@ import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirResolveCont
|
|||||||
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) {
|
||||||
override fun resolve(
|
override fun createTargetResolver(
|
||||||
target: LLFirResolveTarget,
|
target: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
lockProvider: LLFirLockProvider,
|
||||||
scopeSession: ScopeSession,
|
scopeSession: ScopeSession,
|
||||||
towerDataContextCollector: FirResolveContextCollector?,
|
towerDataContextCollector: FirResolveContextCollector?,
|
||||||
) {
|
): LLFirTargetResolver = LLFirCompanionGenerationTargetResolver(target, lockProvider)
|
||||||
val resolver = LLFirCompanionGenerationTargetResolver(target, lockProvider)
|
|
||||||
resolver.resolveDesignation()
|
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private class LLFirCompanionGenerationTargetResolver(
|
private class LLFirCompanionGenerationTargetResolver(
|
||||||
|
|||||||
+2
-5
@@ -29,15 +29,12 @@ import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment
|
|||||||
import org.jetbrains.kotlin.utils.exceptions.requireWithAttachment
|
import org.jetbrains.kotlin.utils.exceptions.requireWithAttachment
|
||||||
|
|
||||||
internal object LLFirImplicitTypesLazyResolver : LLFirLazyResolver(FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE) {
|
internal object LLFirImplicitTypesLazyResolver : LLFirLazyResolver(FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE) {
|
||||||
override fun resolve(
|
override fun createTargetResolver(
|
||||||
target: LLFirResolveTarget,
|
target: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
lockProvider: LLFirLockProvider,
|
||||||
scopeSession: ScopeSession,
|
scopeSession: ScopeSession,
|
||||||
towerDataContextCollector: FirResolveContextCollector?,
|
towerDataContextCollector: FirResolveContextCollector?,
|
||||||
) {
|
): LLFirTargetResolver = LLFirImplicitBodyTargetResolver(target, lockProvider, scopeSession, towerDataContextCollector)
|
||||||
val resolver = LLFirImplicitBodyTargetResolver(target, lockProvider, scopeSession, towerDataContextCollector)
|
|
||||||
resolver.resolveDesignation()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
||||||
if (target !is FirCallableDeclaration) return
|
if (target !is FirCallableDeclaration) return
|
||||||
|
|||||||
+31
-4
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -13,14 +13,41 @@ 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.body.resolve.FirResolveContextCollector
|
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirResolveContextCollector
|
||||||
|
import org.jetbrains.kotlin.utils.exceptions.requireWithAttachment
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class is responsible for [LLFirResolveTarget] resolution and "is resolved" check after that.
|
||||||
|
*
|
||||||
|
* @see LLFirLazyResolverRunner
|
||||||
|
* @see LLFirTargetResolver
|
||||||
|
*/
|
||||||
internal abstract class LLFirLazyResolver(val resolverPhase: FirResolvePhase) {
|
internal abstract class LLFirLazyResolver(val resolverPhase: FirResolvePhase) {
|
||||||
abstract fun resolve(
|
fun resolve(
|
||||||
target: LLFirResolveTarget,
|
target: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
lockProvider: LLFirLockProvider,
|
||||||
scopeSession: ScopeSession,
|
scopeSession: ScopeSession,
|
||||||
towerDataContextCollector: FirResolveContextCollector?,
|
towerDataContextCollector: FirResolveContextCollector?,
|
||||||
)
|
) {
|
||||||
|
val resolver = createTargetResolver(target, lockProvider, scopeSession, towerDataContextCollector)
|
||||||
|
requireWithAttachment(
|
||||||
|
resolverPhase == resolver.resolverPhase,
|
||||||
|
{
|
||||||
|
"""
|
||||||
|
Phase mismatch between ${this::class.simpleName} and ${resolver::class.simpleName}.
|
||||||
|
The resolver phase is ${resolver.resolverPhase}, but $resolverPhase is expected
|
||||||
|
""".trimIndent()
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
resolver.resolveDesignation()
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract fun createTargetResolver(
|
||||||
|
target: LLFirResolveTarget,
|
||||||
|
lockProvider: LLFirLockProvider,
|
||||||
|
scopeSession: ScopeSession,
|
||||||
|
towerDataContextCollector: FirResolveContextCollector?,
|
||||||
|
): LLFirTargetResolver
|
||||||
|
|
||||||
fun checkIsResolved(target: FirElementWithResolveState) {
|
fun checkIsResolved(target: FirElementWithResolveState) {
|
||||||
target.checkPhase(resolverPhase)
|
target.checkPhase(resolverPhase)
|
||||||
@@ -33,7 +60,7 @@ internal abstract class LLFirLazyResolver(val resolverPhase: FirResolvePhase) {
|
|||||||
* Will be performed to resolved declaration and its nested declarations
|
* Will be performed to resolved declaration and its nested declarations
|
||||||
* @see checkNestedDeclarationsAreResolved
|
* @see checkNestedDeclarationsAreResolved
|
||||||
*/
|
*/
|
||||||
protected open fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {}
|
protected abstract fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState)
|
||||||
|
|
||||||
fun updatePhaseForDeclarationInternals(target: FirElementWithResolveState) {
|
fun updatePhaseForDeclarationInternals(target: FirElementWithResolveState) {
|
||||||
LLFirPhaseUpdater.updateDeclarationInternalsPhase(
|
LLFirPhaseUpdater.updateDeclarationInternalsPhase(
|
||||||
|
|||||||
+5
-6
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -13,15 +13,14 @@ import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
|||||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirResolveContextCollector
|
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 createTargetResolver(
|
||||||
target: LLFirResolveTarget,
|
target: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
lockProvider: LLFirLockProvider,
|
||||||
scopeSession: ScopeSession,
|
scopeSession: ScopeSession,
|
||||||
towerDataContextCollector: FirResolveContextCollector?,
|
towerDataContextCollector: FirResolveContextCollector?,
|
||||||
) {
|
): LLFirTargetResolver = LLFirSealedClassInheritorsDesignatedResolver(target, lockProvider)
|
||||||
val resolver = LLFirSealedClassInheritorsDesignatedResolver(target, lockProvider)
|
|
||||||
resolver.resolveDesignation()
|
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+7
-11
@@ -31,21 +31,17 @@ import org.jetbrains.kotlin.fir.visitors.transformSingle
|
|||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
internal object LLFirStatusLazyResolver : LLFirLazyResolver(FirResolvePhase.STATUS) {
|
internal object LLFirStatusLazyResolver : LLFirLazyResolver(FirResolvePhase.STATUS) {
|
||||||
override fun resolve(
|
override fun createTargetResolver(
|
||||||
target: LLFirResolveTarget,
|
target: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
lockProvider: LLFirLockProvider,
|
||||||
scopeSession: ScopeSession,
|
scopeSession: ScopeSession,
|
||||||
towerDataContextCollector: FirResolveContextCollector?,
|
towerDataContextCollector: FirResolveContextCollector?,
|
||||||
) {
|
): LLFirTargetResolver = LLFirStatusTargetResolver(
|
||||||
val resolver = LLFirStatusTargetResolver(
|
target = target,
|
||||||
target = target,
|
lockProvider = lockProvider,
|
||||||
lockProvider = lockProvider,
|
scopeSession = scopeSession,
|
||||||
scopeSession = scopeSession,
|
resolveMode = target.resolveMode(),
|
||||||
resolveMode = target.resolveMode(),
|
)
|
||||||
)
|
|
||||||
|
|
||||||
resolver.resolveDesignation()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
||||||
if (target !is FirMemberDeclaration) return
|
if (target !is FirMemberDeclaration) return
|
||||||
|
|||||||
+2
-5
@@ -34,15 +34,12 @@ import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
|||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
|
|
||||||
internal object LLFirSupertypeLazyResolver : LLFirLazyResolver(FirResolvePhase.SUPER_TYPES) {
|
internal object LLFirSupertypeLazyResolver : LLFirLazyResolver(FirResolvePhase.SUPER_TYPES) {
|
||||||
override fun resolve(
|
override fun createTargetResolver(
|
||||||
target: LLFirResolveTarget,
|
target: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
lockProvider: LLFirLockProvider,
|
||||||
scopeSession: ScopeSession,
|
scopeSession: ScopeSession,
|
||||||
towerDataContextCollector: FirResolveContextCollector?,
|
towerDataContextCollector: FirResolveContextCollector?,
|
||||||
) {
|
): LLFirTargetResolver = LLFirSuperTypeTargetResolver(target, lockProvider, scopeSession)
|
||||||
val resolver = LLFirSuperTypeTargetResolver(target, lockProvider, scopeSession)
|
|
||||||
resolver.resolveDesignation()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
||||||
when (target) {
|
when (target) {
|
||||||
|
|||||||
+1
-1
@@ -39,7 +39,7 @@ import org.jetbrains.kotlin.utils.exceptions.requireWithAttachment
|
|||||||
internal abstract class LLFirTargetResolver(
|
internal abstract class LLFirTargetResolver(
|
||||||
protected val resolveTarget: LLFirResolveTarget,
|
protected val resolveTarget: LLFirResolveTarget,
|
||||||
protected val lockProvider: LLFirLockProvider,
|
protected val lockProvider: LLFirLockProvider,
|
||||||
protected val resolverPhase: FirResolvePhase,
|
val resolverPhase: FirResolvePhase,
|
||||||
private val isJumpingPhase: Boolean = false,
|
private val isJumpingPhase: Boolean = false,
|
||||||
) : LLFirResolveTargetVisitor {
|
) : LLFirResolveTargetVisitor {
|
||||||
val resolveTargetSession: LLFirSession get() = resolveTarget.session
|
val resolveTargetSession: LLFirSession get() = resolveTarget.session
|
||||||
|
|||||||
+2
-5
@@ -31,15 +31,12 @@ import org.jetbrains.kotlin.util.PrivateForInline
|
|||||||
import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment
|
import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment
|
||||||
|
|
||||||
internal object LLFirTypeLazyResolver : LLFirLazyResolver(FirResolvePhase.TYPES) {
|
internal object LLFirTypeLazyResolver : LLFirLazyResolver(FirResolvePhase.TYPES) {
|
||||||
override fun resolve(
|
override fun createTargetResolver(
|
||||||
target: LLFirResolveTarget,
|
target: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
lockProvider: LLFirLockProvider,
|
||||||
scopeSession: ScopeSession,
|
scopeSession: ScopeSession,
|
||||||
towerDataContextCollector: FirResolveContextCollector?,
|
towerDataContextCollector: FirResolveContextCollector?,
|
||||||
) {
|
): LLFirTargetResolver = LLFirTypeTargetResolver(target, lockProvider, scopeSession)
|
||||||
val resolver = LLFirTypeTargetResolver(target, lockProvider, scopeSession)
|
|
||||||
resolver.resolveDesignation()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
||||||
if (target is FirAnnotationContainer) {
|
if (target is FirAnnotationContainer) {
|
||||||
|
|||||||
Reference in New Issue
Block a user