[AA FIR] KtFirScopeProvider: avoid redundant resolve

This commit is contained in:
Dmitrii Gridin
2023-01-03 14:43:11 +01:00
committed by Space Team
parent c522c6e29d
commit 5950820787
@@ -69,20 +69,15 @@ internal class KtFirScopeProvider(
private inline fun <T> KtSymbolWithMembers.withFirForScope(crossinline body: (FirClass) -> T): T? { private inline fun <T> KtSymbolWithMembers.withFirForScope(crossinline body: (FirClass) -> T): T? {
return when (this) { return when (this) {
is KtFirNamedClassOrObjectSymbol -> { is KtFirNamedClassOrObjectSymbol -> body(firSymbol.fir)
firSymbol.lazyResolveToPhase(FirResolvePhase.TYPES) is KtFirAnonymousObjectSymbol -> body(firSymbol.fir)
body(firSymbol.fir)
}
is KtFirAnonymousObjectSymbol -> {
firSymbol.lazyResolveToPhase(FirResolvePhase.TYPES)
body(firSymbol.fir)
}
is KtFirEnumEntrySymbol -> { is KtFirEnumEntrySymbol -> {
firSymbol.lazyResolveToPhase(FirResolvePhase.BODY_RESOLVE) firSymbol.lazyResolveToPhase(FirResolvePhase.BODY_RESOLVE)
val initializer = firSymbol.fir.initializer ?: return null val initializer = firSymbol.fir.initializer ?: return null
check(initializer is FirAnonymousObjectExpression) { "Unexpected enum entry initializer: ${initializer.javaClass}" } check(initializer is FirAnonymousObjectExpression) { "Unexpected enum entry initializer: ${initializer.javaClass}" }
body(initializer.anonymousObject) body(initializer.anonymousObject)
} }
else -> error { "Unknown KtSymbolWithDeclarations implementation ${this::class.qualifiedName}" } else -> error { "Unknown KtSymbolWithDeclarations implementation ${this::class.qualifiedName}" }
} }
} }