[FIR IDE] Remove extra analyzing for local declarations

This commit is contained in:
Igor Yakovlev
2020-11-21 12:35:30 +03:00
parent 3fc424246b
commit 6aff96a401
2 changed files with 2 additions and 13 deletions
@@ -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.findSourceNonLocalFirDeclaration
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.getParentOfType
internal class FirLazyDeclarationResolver(
private val firFileBuilder: FirFileBuilder
@@ -41,14 +40,14 @@ internal class FirLazyDeclarationResolver(
if (declaration.resolvePhase >= toPhase) return
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 KtProperty -> ktDeclaration
is KtParameter, is KtTypeParameter -> ktDeclaration.getNonLocalContainingOrThisDeclaration()
?: error("Cannot find containing declaration for KtParameter")
else -> error("Invalid source of property accessor ${ktDeclaration::class}")
}
val containingProperty = ktContainingProperty
val containingProperty = ktContainingResolvableDeclaration
.findSourceNonLocalFirDeclaration(firFileBuilder, declaration.session.firSymbolProvider, moduleFileCache)
return lazyResolveDeclaration(containingProperty, moduleFileCache, toPhase, towerDataContextCollector)
}
@@ -58,19 +58,9 @@ fun createFirLightClassNoCache(classOrObject: KtClassOrObject): KtLightClass? {
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 {
classOrObject is KtEnumEntry -> lightClassForEnumEntry(classOrObject)
classOrObject.isObjectLiteral() -> return null //TODO
//classOrObject.safeIsLocal() -> return null //TODO
classOrObject.hasModifier(KtTokens.INLINE_KEYWORD) -> return null //TODO
else -> {
analyze(classOrObject) {