[FIR IDE] Remove extra analyzing for local declarations
This commit is contained in:
+2
-3
@@ -25,7 +25,6 @@ import org.jetbrains.kotlin.idea.fir.low.level.api.util.checkCanceled
|
|||||||
import org.jetbrains.kotlin.idea.fir.low.level.api.util.executeWithoutPCE
|
import org.jetbrains.kotlin.idea.fir.low.level.api.util.executeWithoutPCE
|
||||||
import org.jetbrains.kotlin.idea.fir.low.level.api.util.findSourceNonLocalFirDeclaration
|
import org.jetbrains.kotlin.idea.fir.low.level.api.util.findSourceNonLocalFirDeclaration
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.getParentOfType
|
|
||||||
|
|
||||||
internal class FirLazyDeclarationResolver(
|
internal class FirLazyDeclarationResolver(
|
||||||
private val firFileBuilder: FirFileBuilder
|
private val firFileBuilder: FirFileBuilder
|
||||||
@@ -41,14 +40,14 @@ internal class FirLazyDeclarationResolver(
|
|||||||
if (declaration.resolvePhase >= toPhase) return
|
if (declaration.resolvePhase >= toPhase) return
|
||||||
|
|
||||||
if (declaration is FirPropertyAccessor || declaration is FirTypeParameter) {
|
if (declaration is FirPropertyAccessor || declaration is FirTypeParameter) {
|
||||||
val ktContainingProperty = when (val ktDeclaration = declaration.ktDeclaration) {
|
val ktContainingResolvableDeclaration = when (val ktDeclaration = declaration.ktDeclaration) {
|
||||||
is KtPropertyAccessor -> ktDeclaration.property
|
is KtPropertyAccessor -> ktDeclaration.property
|
||||||
is KtProperty -> ktDeclaration
|
is KtProperty -> ktDeclaration
|
||||||
is KtParameter, is KtTypeParameter -> ktDeclaration.getNonLocalContainingOrThisDeclaration()
|
is KtParameter, is KtTypeParameter -> ktDeclaration.getNonLocalContainingOrThisDeclaration()
|
||||||
?: error("Cannot find containing declaration for KtParameter")
|
?: error("Cannot find containing declaration for KtParameter")
|
||||||
else -> error("Invalid source of property accessor ${ktDeclaration::class}")
|
else -> error("Invalid source of property accessor ${ktDeclaration::class}")
|
||||||
}
|
}
|
||||||
val containingProperty = ktContainingProperty
|
val containingProperty = ktContainingResolvableDeclaration
|
||||||
.findSourceNonLocalFirDeclaration(firFileBuilder, declaration.session.firSymbolProvider, moduleFileCache)
|
.findSourceNonLocalFirDeclaration(firFileBuilder, declaration.session.firSymbolProvider, moduleFileCache)
|
||||||
return lazyResolveDeclaration(containingProperty, moduleFileCache, toPhase, towerDataContextCollector)
|
return lazyResolveDeclaration(containingProperty, moduleFileCache, toPhase, towerDataContextCollector)
|
||||||
}
|
}
|
||||||
|
|||||||
-10
@@ -58,19 +58,9 @@ fun createFirLightClassNoCache(classOrObject: KtClassOrObject): KtLightClass? {
|
|||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
if (classOrObject.isLocal) {
|
|
||||||
val nonLocalDeclaration = classOrObject.containingNonLocalDeclaration() ?: return null
|
|
||||||
analyze(nonLocalDeclaration) {
|
|
||||||
(nonLocalDeclaration.getSymbol() as? KtFirSymbol<*>)?.run {
|
|
||||||
this.firRef.withFir(FirResolvePhase.BODY_RESOLVE) { }
|
|
||||||
}
|
|
||||||
} ?: return null
|
|
||||||
}
|
|
||||||
|
|
||||||
return when {
|
return when {
|
||||||
classOrObject is KtEnumEntry -> lightClassForEnumEntry(classOrObject)
|
classOrObject is KtEnumEntry -> lightClassForEnumEntry(classOrObject)
|
||||||
classOrObject.isObjectLiteral() -> return null //TODO
|
classOrObject.isObjectLiteral() -> return null //TODO
|
||||||
//classOrObject.safeIsLocal() -> return null //TODO
|
|
||||||
classOrObject.hasModifier(KtTokens.INLINE_KEYWORD) -> return null //TODO
|
classOrObject.hasModifier(KtTokens.INLINE_KEYWORD) -> return null //TODO
|
||||||
else -> {
|
else -> {
|
||||||
analyze(classOrObject) {
|
analyze(classOrObject) {
|
||||||
|
|||||||
Reference in New Issue
Block a user