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