[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.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)
|
||||
}
|
||||
|
||||
-10
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user