[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.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)
} }
@@ -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) {