From 4e870b6796d5a792ef9a1e4e1eeabb67b5b0951b Mon Sep 17 00:00:00 2001 From: Igor Yakovlev Date: Tue, 13 Jul 2021 18:30:45 +0200 Subject: [PATCH] [FIR IDE] Fix invalid resolve for fir synthetic properties and accessors --- .../api/lazy/resolve/FirLazyDeclarationResolver.kt | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/lazy/resolve/FirLazyDeclarationResolver.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/lazy/resolve/FirLazyDeclarationResolver.kt index 15f512f6028..90d8ecb6397 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/lazy/resolve/FirLazyDeclarationResolver.kt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/lazy/resolve/FirLazyDeclarationResolver.kt @@ -7,10 +7,13 @@ package org.jetbrains.kotlin.idea.fir.low.level.api.lazy.resolve import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.declarations.* +import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticProperty +import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticPropertyAccessor import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.resolve.ScopeSession import org.jetbrains.kotlin.fir.resolve.transformers.FirImportResolveTransformer import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirTowerDataContextCollector +import org.jetbrains.kotlin.fir.symbols.impl.FirAccessorSymbol import org.jetbrains.kotlin.idea.fir.low.level.api.api.FirDeclarationDesignationWithFile import org.jetbrains.kotlin.idea.fir.low.level.api.api.collectDesignationWithFile import org.jetbrains.kotlin.idea.fir.low.level.api.api.tryCollectDesignationWithFile @@ -87,6 +90,8 @@ internal class FirLazyDeclarationResolver(private val firFileBuilder: FirFileBui is FirDeclarationOrigin.IntersectionOverride -> { when (this) { is FirFile -> true + is FirSyntheticProperty -> false + is FirSyntheticPropertyAccessor -> false is FirSimpleFunction, is FirProperty, is FirPropertyAccessor, @@ -141,8 +146,11 @@ internal class FirLazyDeclarationResolver(private val firFileBuilder: FirFileBui resolveFileAnnotationsWithoutLock(firFile, moduleFileCache, firFile.annotations, scopeSession, collector) - if (firFile.declarations.isEmpty()) return - val designations = firFile.declarations.map { + val validForResolveDeclarations = firFile.declarations + .filter { it.isValidForResolve() && it.resolvePhase < toPhase } + + if (validForResolveDeclarations.isEmpty()) return + val designations = validForResolveDeclarations.map { FirDeclarationDesignationWithFile(path = emptyList(), declaration = it, firFile = firFile) }