[FIR IDE] Fix invalid partial resolve of file annotations
This commit is contained in:
+6
-2
@@ -42,7 +42,7 @@ internal class FirLazyDeclarationResolver(private val firFileBuilder: FirFileBui
|
|||||||
checkPCE: Boolean,
|
checkPCE: Boolean,
|
||||||
collector: FirTowerDataContextCollector? = null,
|
collector: FirTowerDataContextCollector? = null,
|
||||||
) {
|
) {
|
||||||
if (firFile.resolvePhase >= FirResolvePhase.IMPORTS) return
|
if (firFile.resolvePhase >= FirResolvePhase.IMPORTS && annotations.all { it.resolveStatus == FirAnnotationResolveStatus.Resolved }) return
|
||||||
moduleFileCache.firFileLockProvider.runCustomResolveUnderLock(firFile, checkPCE) {
|
moduleFileCache.firFileLockProvider.runCustomResolveUnderLock(firFile, checkPCE) {
|
||||||
resolveFileAnnotationsWithoutLock(
|
resolveFileAnnotationsWithoutLock(
|
||||||
firFile = firFile,
|
firFile = firFile,
|
||||||
@@ -65,7 +65,7 @@ internal class FirLazyDeclarationResolver(private val firFileBuilder: FirFileBui
|
|||||||
scopeSession: ScopeSession,
|
scopeSession: ScopeSession,
|
||||||
collector: FirTowerDataContextCollector? = null,
|
collector: FirTowerDataContextCollector? = null,
|
||||||
) {
|
) {
|
||||||
if (firFile.resolvePhase >= FirResolvePhase.IMPORTS) return
|
if (firFile.resolvePhase < FirResolvePhase.IMPORTS) {
|
||||||
lazyResolveFileDeclarationWithoutLock(
|
lazyResolveFileDeclarationWithoutLock(
|
||||||
firFile = firFile,
|
firFile = firFile,
|
||||||
moduleFileCache = moduleFileCache,
|
moduleFileCache = moduleFileCache,
|
||||||
@@ -74,7 +74,9 @@ internal class FirLazyDeclarationResolver(private val firFileBuilder: FirFileBui
|
|||||||
checkPCE = false,
|
checkPCE = false,
|
||||||
collector = collector
|
collector = collector
|
||||||
)
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!annotations.all { it.resolveStatus == FirAnnotationResolveStatus.Resolved }) {
|
||||||
FirFileAnnotationsResolveTransformer(
|
FirFileAnnotationsResolveTransformer(
|
||||||
firFile = firFile,
|
firFile = firFile,
|
||||||
annotations = annotations,
|
annotations = annotations,
|
||||||
@@ -84,6 +86,8 @@ internal class FirLazyDeclarationResolver(private val firFileBuilder: FirFileBui
|
|||||||
).transformDeclaration(firFileBuilder.firPhaseRunner)
|
).transformDeclaration(firFileBuilder.firPhaseRunner)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
private fun FirDeclaration.isValidForResolve(): Boolean = when (origin) {
|
private fun FirDeclaration.isValidForResolve(): Boolean = when (origin) {
|
||||||
is FirDeclarationOrigin.Source,
|
is FirDeclarationOrigin.Source,
|
||||||
is FirDeclarationOrigin.ImportedFromObject,
|
is FirDeclarationOrigin.ImportedFromObject,
|
||||||
|
|||||||
Reference in New Issue
Block a user