[FIR IDE] Remove withFirWithPossibleResolve inside function
This commit is contained in:
+1
-1
@@ -45,7 +45,7 @@ internal class KtFirCompletionCandidateChecker(
|
|||||||
possibleExplicitReceiver: KtExpression?,
|
possibleExplicitReceiver: KtExpression?,
|
||||||
): KtExtensionApplicabilityResult = withValidityAssertion {
|
): KtExtensionApplicabilityResult = withValidityAssertion {
|
||||||
require(firSymbolForCandidate is KtFirSymbol<*>)
|
require(firSymbolForCandidate is KtFirSymbol<*>)
|
||||||
return firSymbolForCandidate.firRef.withFirWithPossibleResolveInside(
|
return firSymbolForCandidate.firRef.withFir(
|
||||||
phase = FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE
|
phase = FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE
|
||||||
) { declaration ->
|
) { declaration ->
|
||||||
check(declaration is FirCallableDeclaration)
|
check(declaration is FirCallableDeclaration)
|
||||||
|
|||||||
+2
-2
@@ -59,8 +59,8 @@ internal class KtFirScopeProvider(
|
|||||||
private val packageMemberScopeCache = IdentityHashMap<KtPackageSymbol, KtPackageScope>()
|
private val packageMemberScopeCache = IdentityHashMap<KtPackageSymbol, KtPackageScope>()
|
||||||
|
|
||||||
private inline fun <T> KtSymbolWithMembers.withFirForScope(crossinline body: (FirClass) -> T): T? = when (this) {
|
private inline fun <T> KtSymbolWithMembers.withFirForScope(crossinline body: (FirClass) -> T): T? = when (this) {
|
||||||
is KtFirNamedClassOrObjectSymbol -> firRef.withFirWithPossibleResolveInside(FirResolvePhase.TYPES, body)
|
is KtFirNamedClassOrObjectSymbol -> firRef.withFir(FirResolvePhase.TYPES, body)
|
||||||
is KtFirAnonymousObjectSymbol -> firRef.withFirWithPossibleResolveInside(FirResolvePhase.TYPES, body)
|
is KtFirAnonymousObjectSymbol -> firRef.withFir(FirResolvePhase.TYPES, body)
|
||||||
is KtFirEnumEntrySymbol -> firRef.withFir(FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE) {
|
is KtFirEnumEntrySymbol -> firRef.withFir(FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE) {
|
||||||
val initializer = it.initializer
|
val initializer = it.initializer
|
||||||
check(initializer is FirAnonymousObject)
|
check(initializer is FirAnonymousObject)
|
||||||
|
|||||||
+4
-4
@@ -37,10 +37,10 @@ class KtFirOverrideInfoProvider(
|
|||||||
require(classSymbol is KtFirSymbol<*>)
|
require(classSymbol is KtFirSymbol<*>)
|
||||||
|
|
||||||
// Inspecting visibility requires resolving to status
|
// Inspecting visibility requires resolving to status
|
||||||
return memberSymbol.firRef.withFirWithPossibleResolveInside(FirResolvePhase.STATUS) outer@{ memberFir ->
|
return memberSymbol.firRef.withFir(FirResolvePhase.STATUS) outer@{ memberFir ->
|
||||||
if (memberFir !is FirCallableDeclaration) return@outer false
|
if (memberFir !is FirCallableDeclaration) return@outer false
|
||||||
|
|
||||||
classSymbol.firRef.withFirWithPossibleResolveInside inner@{ parentClassFir ->
|
classSymbol.firRef.withFir inner@{ parentClassFir ->
|
||||||
if (parentClassFir !is FirClass) return@inner false
|
if (parentClassFir !is FirClass) return@inner false
|
||||||
|
|
||||||
memberFir.isVisibleInClass(parentClassFir)
|
memberFir.isVisibleInClass(parentClassFir)
|
||||||
@@ -53,10 +53,10 @@ class KtFirOverrideInfoProvider(
|
|||||||
require(parentClassSymbol is KtFirSymbol<*>)
|
require(parentClassSymbol is KtFirSymbol<*>)
|
||||||
|
|
||||||
// Inspecting implementation status requires resolving to status
|
// Inspecting implementation status requires resolving to status
|
||||||
return memberSymbol.firRef.withFirWithPossibleResolveInside(FirResolvePhase.STATUS) outer@{ memberFir ->
|
return memberSymbol.firRef.withFir(FirResolvePhase.STATUS) outer@{ memberFir ->
|
||||||
if (memberFir !is FirCallableDeclaration) return@outer null
|
if (memberFir !is FirCallableDeclaration) return@outer null
|
||||||
|
|
||||||
parentClassSymbol.firRef.withFirWithPossibleResolveInside inner@{ parentClassFir ->
|
parentClassSymbol.firRef.withFir inner@{ parentClassFir ->
|
||||||
if (parentClassFir !is FirClass) return@inner null
|
if (parentClassFir !is FirClass) return@inner null
|
||||||
|
|
||||||
memberFir.symbol.getImplementationStatus(
|
memberFir.symbol.getImplementationStatus(
|
||||||
|
|||||||
+1
-1
@@ -69,7 +69,7 @@ internal fun FirRefWithValidityCheck<FirRegularClass>.superTypesAndAnnotationsLi
|
|||||||
if(fir.resolvePhase >= FirResolvePhase.SUPER_TYPES) {
|
if(fir.resolvePhase >= FirResolvePhase.SUPER_TYPES) {
|
||||||
fir.superTypeRefs.mapToTypeAndAnnotations(this, builder)
|
fir.superTypeRefs.mapToTypeAndAnnotations(this, builder)
|
||||||
} else null
|
} else null
|
||||||
} ?: withFirByTypeWithPossibleResolveInside(ResolveType.NoResolve) { fir ->
|
} ?: withFirByType(ResolveType.NoResolve) { fir ->
|
||||||
fir.resolveSupertypesInTheAir(builder.rootSession).mapToTypeAndAnnotations(this, builder)
|
fir.resolveSupertypesInTheAir(builder.rootSession).mapToTypeAndAnnotations(this, builder)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -31,7 +31,7 @@ internal class KtFirAnnotationCall(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override val classId: ClassId? by cached {
|
override val classId: ClassId? by cached {
|
||||||
containingDeclaration.withFirByTypeWithPossibleResolveInside(ResolveType.AnnotationType) { fir ->
|
containingDeclaration.withFirByType(ResolveType.AnnotationType) { fir ->
|
||||||
annotationCallRef.getClassId(fir.moduleData.session)
|
annotationCallRef.getClassId(fir.moduleData.session)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
-18
@@ -45,24 +45,6 @@ internal class FirRefWithValidityCheck<out D : FirDeclaration>(fir: D, resolveSt
|
|||||||
return action(fir)
|
return action(fir)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Runs [action] with fir element with write action hold
|
|
||||||
* Consider using this then [action] may call some resolve
|
|
||||||
*/
|
|
||||||
inline fun <R> withFirWithPossibleResolveInside(
|
|
||||||
phase: FirResolvePhase = FirResolvePhase.RAW_FIR,
|
|
||||||
crossinline action: (fir: D) -> R
|
|
||||||
): R = withFir(phase, action)
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Runs [action] with fir element with write action hold
|
|
||||||
* Consider using this then [action] may call some resolve
|
|
||||||
*/
|
|
||||||
inline fun <R> withFirByTypeWithPossibleResolveInside(
|
|
||||||
resolveType: ResolveType = ResolveType.NoResolve,
|
|
||||||
crossinline action: (fir: D) -> R
|
|
||||||
): R = withFirByType(resolveType, action)
|
|
||||||
|
|
||||||
val resolveState
|
val resolveState
|
||||||
get() = resolveStateWeakRef.get() ?: throw EntityWasGarbageCollectedException("FirModuleResolveState")
|
get() = resolveStateWeakRef.get() ?: throw EntityWasGarbageCollectedException("FirModuleResolveState")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user