From a26063b3f85f5a8d971afe0fb70db562bf6a47df Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Sat, 27 Jun 2020 00:20:04 +0300 Subject: [PATCH] FIR IDE: rename Invalidatable -> ValidityOwner --- .../kotlin/idea/frontend/api/KtAnalysisSession.kt | 2 +- .../org/jetbrains/kotlin/idea/frontend/api/KtType.kt | 2 +- .../api/{Invalidatable.kt => ValidityOwner.kt} | 12 ++++++------ .../kotlin/idea/frontend/api/symbols/KtSymbol.kt | 4 ++-- .../idea/frontend/api/symbols/KtSymbolProvider.kt | 4 ++-- .../kotlin/idea/frontend/api/fir/FirKtType.kt | 12 ++++++------ .../idea/frontend/api/fir/KtSymbolByFirBuilder.kt | 9 +-------- .../api/fir/symbols/KtFirAnonymousFunctionSymbol.kt | 4 ++-- .../api/fir/symbols/KtFirClassOrObjectSymbol.kt | 4 ++-- .../api/fir/symbols/KtFirConstructorSymbol.kt | 4 ++-- .../frontend/api/fir/symbols/KtFirEnumEntrySymbol.kt | 2 +- .../frontend/api/fir/symbols/KtFirFieldSymbol.kt | 2 +- .../frontend/api/fir/symbols/KtFirFunctionSymbol.kt | 4 ++-- .../fir/symbols/KtFirFunctionValueParameterSymbol.kt | 2 +- .../api/fir/symbols/KtFirLocalVariableSymbol.kt | 2 +- .../frontend/api/fir/symbols/KtFirPropertySymbol.kt | 2 +- .../idea/frontend/api/fir/symbols/KtFirSymbol.kt | 4 ++-- .../frontend/api/fir/symbols/KtFirSymbolProvider.kt | 8 ++++---- .../frontend/api/fir/symbols/KtFirTypeAliasSymbol.kt | 4 ++-- .../api/fir/symbols/KtFirTypeParameterSymbol.kt | 4 ++-- .../idea/frontend/api/fir/utils/ReadOnlyWeakRef.kt | 8 ++++---- .../api/fir/utils/ValidityAwareCachedValue.kt | 10 +++++----- 22 files changed, 51 insertions(+), 58 deletions(-) rename idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/{Invalidatable.kt => ValidityOwner.kt} (87%) diff --git a/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/KtAnalysisSession.kt b/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/KtAnalysisSession.kt index b9d03991b18..859f0378167 100644 --- a/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/KtAnalysisSession.kt +++ b/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/KtAnalysisSession.kt @@ -11,7 +11,7 @@ import org.jetbrains.kotlin.idea.frontend.api.symbols.* import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.psi.* -abstract class KtAnalysisSession(project: Project) : Invalidatable { +abstract class KtAnalysisSession(project: Project) : ValidityOwner { protected open val validityToken = ReadActionConfinementValidityToken(project) override fun isValid(): Boolean = validityToken.isValid() override fun invalidationReason(): String = validityToken.invalidationReason() diff --git a/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/KtType.kt b/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/KtType.kt index 3d80484a93a..ca33b85b4cc 100644 --- a/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/KtType.kt +++ b/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/KtType.kt @@ -10,7 +10,7 @@ import org.jetbrains.kotlin.idea.frontend.api.symbols.KtTypeParameterSymbol import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.Name -interface KtType : Invalidatable { +interface KtType : ValidityOwner { fun isEqualTo(other: KtType): Boolean fun isSubTypeOf(superType: KtType): Boolean diff --git a/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/Invalidatable.kt b/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/ValidityOwner.kt similarity index 87% rename from idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/Invalidatable.kt rename to idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/ValidityOwner.kt index 97940191df5..ee51230973c 100644 --- a/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/Invalidatable.kt +++ b/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/ValidityOwner.kt @@ -9,29 +9,29 @@ import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.project.Project import org.jetbrains.kotlin.analyzer.KotlinModificationTrackerService -interface Invalidatable { +interface ValidityOwner { fun isValid(): Boolean fun invalidationReason(): String } @Suppress("NOTHING_TO_INLINE") -inline fun Invalidatable.assertIsValid() { +inline fun ValidityOwner.assertIsValid() { assert(isValid()) { "Access to invalid $this, invalidation reason is ${invalidationReason()}" } } -inline fun Invalidatable.withValidityAssertion(action: () -> R): R { +inline fun ValidityOwner.withValidityAssertion(action: () -> R): R { assertIsValid() return action() } -interface InvalidatableByValidityToken : Invalidatable { - val token: Invalidatable +interface ValidityOwnerByValidityToken : ValidityOwner { + val token: ValidityOwner override fun isValid(): Boolean = token.isValid() override fun invalidationReason(): String = token.invalidationReason() } -class ReadActionConfinementValidityToken(project: Project) : Invalidatable { +class ReadActionConfinementValidityToken(project: Project) : ValidityOwner { private val modificationTracker = KotlinModificationTrackerService.getInstance(project).modificationTracker private val ownerThread = Thread.currentThread() private val onCreatedTimeStamp = modificationTracker.modificationCount diff --git a/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/KtSymbol.kt b/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/KtSymbol.kt index 8fa205682f9..3226e468b34 100644 --- a/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/KtSymbol.kt +++ b/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/KtSymbol.kt @@ -6,9 +6,9 @@ package org.jetbrains.kotlin.idea.frontend.api.symbols import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.idea.frontend.api.Invalidatable +import org.jetbrains.kotlin.idea.frontend.api.ValidityOwner -interface KtSymbol : Invalidatable { +interface KtSymbol : ValidityOwner { val origin: KtSymbolOrigin val psi: PsiElement? } diff --git a/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/KtSymbolProvider.kt b/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/KtSymbolProvider.kt index ada85d0646b..cfbd037f5ad 100644 --- a/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/KtSymbolProvider.kt +++ b/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/KtSymbolProvider.kt @@ -5,11 +5,11 @@ package org.jetbrains.kotlin.idea.frontend.api.symbols -import org.jetbrains.kotlin.idea.frontend.api.Invalidatable +import org.jetbrains.kotlin.idea.frontend.api.ValidityOwner import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.psi.* -abstract class KtSymbolProvider : Invalidatable { +abstract class KtSymbolProvider : ValidityOwner { open fun getSymbol(psi: KtDeclaration): KtSymbol = when (psi) { is KtParameter -> getParameterSymbol(psi) is KtNamedFunction -> getFunctionSymbol(psi) diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/FirKtType.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/FirKtType.kt index 9831a860258..6fa40e2ca17 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/FirKtType.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/FirKtType.kt @@ -18,7 +18,7 @@ import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.types.AbstractTypeChecker import org.jetbrains.kotlin.types.AbstractTypeCheckerContext -internal interface KtFirType : KtType, InvalidatableByValidityToken { +internal interface KtFirType : KtType, ValidityOwnerByValidityToken { val coneType: ConeKotlinType val typeCheckerContext: ConeTypeCheckerContext @@ -49,7 +49,7 @@ internal interface KtFirType : KtType, InvalidatableByValidityToken { internal class KtFirClassType( coneType: ConeClassLikeTypeImpl, typeCheckerContext: ConeTypeCheckerContext, - override val token: Invalidatable, + override val token: ValidityOwner, private val firBuilder: KtSymbolByFirBuilder, ) : KtClassType(), KtFirType { override val coneType by weakRef(coneType) @@ -73,7 +73,7 @@ internal class KtFirClassType( internal class KtFirErrorType( coneType: ConeClassErrorType, typeCheckerContext: ConeTypeCheckerContext, - override val token: Invalidatable, + override val token: ValidityOwner, ) : KtErrorType(), KtFirType { override val coneType by weakRef(coneType) override val typeCheckerContext by weakRef(typeCheckerContext) @@ -84,7 +84,7 @@ internal class KtFirErrorType( internal class KtFirTypeParameterType( coneType: ConeTypeParameterType, typeCheckerContext: ConeTypeCheckerContext, - override val token: Invalidatable, + override val token: ValidityOwner, private val firBuilder: KtSymbolByFirBuilder, ) : KtTypeParameterType(), KtFirType { override val coneType by weakRef(coneType) @@ -104,7 +104,7 @@ internal class KtFirTypeParameterType( internal class KtFirFlexibleType( coneType: ConeFlexibleType, typeCheckerContext: ConeTypeCheckerContext, - override val token: Invalidatable, + override val token: ValidityOwner, private val firBuilder: KtSymbolByFirBuilder, ) : KtFlexibleType(), KtFirType { override val coneType by weakRef(coneType) @@ -117,7 +117,7 @@ internal class KtFirFlexibleType( internal class KtFirIntersectionType( coneType: ConeIntersectionType, typeCheckerContext: ConeTypeCheckerContext, - override val token: Invalidatable, + override val token: ValidityOwner, private val firBuilder: KtSymbolByFirBuilder, ) : KtIntersectionType(), KtFirType { override val coneType by weakRef(coneType) diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/KtSymbolByFirBuilder.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/KtSymbolByFirBuilder.kt index 9a1c97a46c7..2b59c757b89 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/KtSymbolByFirBuilder.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/KtSymbolByFirBuilder.kt @@ -16,14 +16,7 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl import org.jetbrains.kotlin.idea.frontend.api.* -import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider -import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag -import org.jetbrains.kotlin.fir.symbols.ConeTypeParameterLookupTag -import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol -import org.jetbrains.kotlin.fir.types.* -import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl -import org.jetbrains.kotlin.idea.frontend.api.* -import org.jetbrains.kotlin.idea.frontend.api.Invalidatable +import org.jetbrains.kotlin.idea.frontend.api.ValidityOwner import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.* import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.KtFirClassOrObjectSymbol import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.KtFirLocalVariableSymbol diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirAnonymousFunctionSymbol.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirAnonymousFunctionSymbol.kt index 734004c923a..aad7ee4efab 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirAnonymousFunctionSymbol.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirAnonymousFunctionSymbol.kt @@ -9,7 +9,7 @@ import com.intellij.psi.PsiElement import org.jetbrains.kotlin.fir.declarations.FirAnonymousFunction import org.jetbrains.kotlin.fir.declarations.impl.FirValueParameterImpl import org.jetbrains.kotlin.idea.fir.findPsi -import org.jetbrains.kotlin.idea.frontend.api.Invalidatable +import org.jetbrains.kotlin.idea.frontend.api.ValidityOwner import org.jetbrains.kotlin.idea.frontend.api.KtType import org.jetbrains.kotlin.idea.frontend.api.fir.KtSymbolByFirBuilder import org.jetbrains.kotlin.idea.frontend.api.fir.utils.cached @@ -18,7 +18,7 @@ import org.jetbrains.kotlin.idea.frontend.api.symbols.* internal class KtFirAnonymousFunctionSymbol( fir: FirAnonymousFunction, - override val token: Invalidatable, + override val token: ValidityOwner, private val builder: KtSymbolByFirBuilder ) : KtAnonymousFunctionSymbol(), KtFirSymbol { override val fir: FirAnonymousFunction by weakRef(fir) diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirClassOrObjectSymbol.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirClassOrObjectSymbol.kt index b9ce205197f..47f3a3c24b4 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirClassOrObjectSymbol.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirClassOrObjectSymbol.kt @@ -10,7 +10,7 @@ import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.idea.fir.findPsi -import org.jetbrains.kotlin.idea.frontend.api.Invalidatable +import org.jetbrains.kotlin.idea.frontend.api.ValidityOwner import org.jetbrains.kotlin.idea.frontend.api.fir.KtSymbolByFirBuilder import org.jetbrains.kotlin.idea.frontend.api.fir.utils.ReadOnlyWeakRef import org.jetbrains.kotlin.idea.frontend.api.fir.utils.cached @@ -23,7 +23,7 @@ import org.jetbrains.kotlin.name.Name internal class KtFirClassOrObjectSymbol( fir: FirRegularClass, - override val token: Invalidatable, + override val token: ValidityOwner, private val builder: KtSymbolByFirBuilder ) : KtClassOrObjectSymbol(), KtFirSymbol { override val fir: FirRegularClass by ReadOnlyWeakRef(fir, this) diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirConstructorSymbol.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirConstructorSymbol.kt index 1c1444bbb82..8be3d63c270 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirConstructorSymbol.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirConstructorSymbol.kt @@ -11,7 +11,7 @@ import org.jetbrains.kotlin.fir.declarations.FirRegularClass import org.jetbrains.kotlin.fir.declarations.impl.FirValueParameterImpl import org.jetbrains.kotlin.fir.resolve.firSymbolProvider import org.jetbrains.kotlin.idea.fir.findPsi -import org.jetbrains.kotlin.idea.frontend.api.Invalidatable +import org.jetbrains.kotlin.idea.frontend.api.ValidityOwner import org.jetbrains.kotlin.idea.frontend.api.KtType import org.jetbrains.kotlin.idea.frontend.api.fir.KtSymbolByFirBuilder import org.jetbrains.kotlin.idea.frontend.api.fir.utils.cached @@ -24,7 +24,7 @@ import org.jetbrains.kotlin.idea.frontend.api.withValidityAssertion internal class KtFirConstructorSymbol( fir: FirConstructor, - override val token: Invalidatable, + override val token: ValidityOwner, private val builder: KtSymbolByFirBuilder ) : KtConstructorSymbol(), KtFirSymbol { override val fir: FirConstructor by weakRef(fir) diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirEnumEntrySymbol.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirEnumEntrySymbol.kt index 6b5430e39bd..e2ba7f8dae6 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirEnumEntrySymbol.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirEnumEntrySymbol.kt @@ -8,7 +8,7 @@ package org.jetbrains.kotlin.idea.frontend.api.fir.symbols import com.intellij.psi.PsiElement import org.jetbrains.kotlin.fir.declarations.FirEnumEntry import org.jetbrains.kotlin.idea.fir.findPsi -import org.jetbrains.kotlin.idea.frontend.api.Invalidatable +import org.jetbrains.kotlin.idea.frontend.api.ValidityOwner import org.jetbrains.kotlin.idea.frontend.api.KtType import org.jetbrains.kotlin.idea.frontend.api.fir.KtSymbolByFirBuilder import org.jetbrains.kotlin.idea.frontend.api.fir.utils.cached diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirFieldSymbol.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirFieldSymbol.kt index 77d335f5bed..255c314ef28 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirFieldSymbol.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirFieldSymbol.kt @@ -8,7 +8,7 @@ package org.jetbrains.kotlin.idea.frontend.api.fir.symbols import com.intellij.psi.PsiElement import org.jetbrains.kotlin.fir.declarations.FirField import org.jetbrains.kotlin.idea.fir.findPsi -import org.jetbrains.kotlin.idea.frontend.api.Invalidatable +import org.jetbrains.kotlin.idea.frontend.api.ValidityOwner import org.jetbrains.kotlin.idea.frontend.api.KtType import org.jetbrains.kotlin.idea.frontend.api.fir.KtSymbolByFirBuilder import org.jetbrains.kotlin.idea.frontend.api.fir.utils.cached diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirFunctionSymbol.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirFunctionSymbol.kt index 30e7ab1eb05..7640280e8db 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirFunctionSymbol.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirFunctionSymbol.kt @@ -12,7 +12,7 @@ import org.jetbrains.kotlin.fir.declarations.isLocal import org.jetbrains.kotlin.fir.declarations.isOperator import org.jetbrains.kotlin.fir.declarations.isSuspend import org.jetbrains.kotlin.idea.fir.findPsi -import org.jetbrains.kotlin.idea.frontend.api.Invalidatable +import org.jetbrains.kotlin.idea.frontend.api.ValidityOwner import org.jetbrains.kotlin.idea.frontend.api.KtType import org.jetbrains.kotlin.idea.frontend.api.fir.KtSymbolByFirBuilder import org.jetbrains.kotlin.idea.frontend.api.fir.utils.cached @@ -25,7 +25,7 @@ import org.jetbrains.kotlin.name.Name internal class KtFirFunctionSymbol( fir: FirSimpleFunction, - override val token: Invalidatable, + override val token: ValidityOwner, private val builder: KtSymbolByFirBuilder, ) : KtFunctionSymbol(), KtFirSymbol { override val fir: FirSimpleFunction by weakRef(fir) diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirFunctionValueParameterSymbol.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirFunctionValueParameterSymbol.kt index 3b2c2c409f2..98c89736f82 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirFunctionValueParameterSymbol.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirFunctionValueParameterSymbol.kt @@ -8,7 +8,7 @@ package org.jetbrains.kotlin.idea.frontend.api.fir.symbols import com.intellij.psi.PsiElement import org.jetbrains.kotlin.fir.declarations.impl.FirValueParameterImpl import org.jetbrains.kotlin.idea.fir.findPsi -import org.jetbrains.kotlin.idea.frontend.api.Invalidatable +import org.jetbrains.kotlin.idea.frontend.api.ValidityOwner import org.jetbrains.kotlin.idea.frontend.api.KtType import org.jetbrains.kotlin.idea.frontend.api.fir.KtSymbolByFirBuilder import org.jetbrains.kotlin.idea.frontend.api.fir.utils.cached diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirLocalVariableSymbol.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirLocalVariableSymbol.kt index c0a319f9707..e70b09ed28b 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirLocalVariableSymbol.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirLocalVariableSymbol.kt @@ -8,7 +8,7 @@ package org.jetbrains.kotlin.idea.frontend.api.fir.symbols import com.intellij.psi.PsiElement import org.jetbrains.kotlin.fir.declarations.FirProperty import org.jetbrains.kotlin.idea.fir.findPsi -import org.jetbrains.kotlin.idea.frontend.api.Invalidatable +import org.jetbrains.kotlin.idea.frontend.api.ValidityOwner import org.jetbrains.kotlin.idea.frontend.api.KtType import org.jetbrains.kotlin.idea.frontend.api.fir.KtSymbolByFirBuilder import org.jetbrains.kotlin.idea.frontend.api.fir.utils.cached diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirPropertySymbol.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirPropertySymbol.kt index c25bd1d6fee..f5ab4191b48 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirPropertySymbol.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirPropertySymbol.kt @@ -8,7 +8,7 @@ package org.jetbrains.kotlin.idea.frontend.api.fir.symbols import com.intellij.psi.PsiElement import org.jetbrains.kotlin.fir.declarations.FirProperty import org.jetbrains.kotlin.idea.fir.findPsi -import org.jetbrains.kotlin.idea.frontend.api.Invalidatable +import org.jetbrains.kotlin.idea.frontend.api.ValidityOwner import org.jetbrains.kotlin.idea.frontend.api.KtType import org.jetbrains.kotlin.idea.frontend.api.fir.KtSymbolByFirBuilder import org.jetbrains.kotlin.idea.frontend.api.fir.utils.cached diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirSymbol.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirSymbol.kt index 29a6952415c..db8b4f20f46 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirSymbol.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirSymbol.kt @@ -7,12 +7,12 @@ package org.jetbrains.kotlin.idea.frontend.api.fir.symbols import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin -import org.jetbrains.kotlin.idea.frontend.api.InvalidatableByValidityToken +import org.jetbrains.kotlin.idea.frontend.api.ValidityOwnerByValidityToken import org.jetbrains.kotlin.idea.frontend.api.symbols.KtSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.KtSymbolOrigin import org.jetbrains.kotlin.idea.frontend.api.withValidityAssertion -internal interface KtFirSymbol : KtSymbol, InvalidatableByValidityToken { +internal interface KtFirSymbol : KtSymbol, ValidityOwnerByValidityToken { val fir: F override val origin: KtSymbolOrigin get() = withValidityAssertion { fir.origin.asKtSymbolOrigin() } } diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirSymbolProvider.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirSymbolProvider.kt index f04339b29b7..dbaa5f3d196 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirSymbolProvider.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirSymbolProvider.kt @@ -8,8 +8,8 @@ package org.jetbrains.kotlin.idea.frontend.api.fir.symbols import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol import org.jetbrains.kotlin.idea.fir.getOrBuildFirOfType -import org.jetbrains.kotlin.idea.frontend.api.Invalidatable -import org.jetbrains.kotlin.idea.frontend.api.InvalidatableByValidityToken +import org.jetbrains.kotlin.idea.frontend.api.ValidityOwner +import org.jetbrains.kotlin.idea.frontend.api.ValidityOwnerByValidityToken import org.jetbrains.kotlin.idea.frontend.api.fir.KtSymbolByFirBuilder import org.jetbrains.kotlin.idea.frontend.api.fir.utils.weakRef import org.jetbrains.kotlin.idea.frontend.api.symbols.* @@ -18,10 +18,10 @@ import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.psi.* internal class KtFirSymbolProvider( - override val token: Invalidatable, + override val token: ValidityOwner, firSymbolProvider: FirSymbolProvider, private val firSymbolBuilder: KtSymbolByFirBuilder -) : KtSymbolProvider(), InvalidatableByValidityToken { +) : KtSymbolProvider(), ValidityOwnerByValidityToken { private val firSymbolProvider by weakRef(firSymbolProvider) override fun getParameterSymbol(psi: KtParameter): KtParameterSymbol = withValidityAssertion { diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirTypeAliasSymbol.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirTypeAliasSymbol.kt index c66b6779fad..191e1cedbdd 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirTypeAliasSymbol.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirTypeAliasSymbol.kt @@ -8,7 +8,7 @@ package org.jetbrains.kotlin.idea.frontend.api.fir.symbols import com.intellij.psi.PsiElement import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.idea.fir.findPsi -import org.jetbrains.kotlin.idea.frontend.api.Invalidatable +import org.jetbrains.kotlin.idea.frontend.api.ValidityOwner import org.jetbrains.kotlin.idea.frontend.api.fir.utils.ReadOnlyWeakRef import org.jetbrains.kotlin.idea.frontend.api.fir.utils.cached import org.jetbrains.kotlin.idea.frontend.api.symbols.KtTypeAliasSymbol @@ -18,7 +18,7 @@ import org.jetbrains.kotlin.name.Name internal class KtFirTypeAliasSymbol( fir: FirTypeAlias, - override val token: Invalidatable + override val token: ValidityOwner ) : KtTypeAliasSymbol(), KtFirSymbol { override val fir: FirTypeAlias by ReadOnlyWeakRef(fir, this) override val psi: PsiElement? by cached { fir.findPsi(fir.session) } diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirTypeParameterSymbol.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirTypeParameterSymbol.kt index 566ec6753af..ee17228f610 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirTypeParameterSymbol.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirTypeParameterSymbol.kt @@ -8,7 +8,7 @@ package org.jetbrains.kotlin.idea.frontend.api.fir.symbols import com.intellij.psi.PsiElement import org.jetbrains.kotlin.fir.declarations.FirTypeParameter import org.jetbrains.kotlin.idea.fir.findPsi -import org.jetbrains.kotlin.idea.frontend.api.Invalidatable +import org.jetbrains.kotlin.idea.frontend.api.ValidityOwner import org.jetbrains.kotlin.idea.frontend.api.fir.utils.cached import org.jetbrains.kotlin.idea.frontend.api.fir.utils.weakRef import org.jetbrains.kotlin.idea.frontend.api.symbols.KtTypeParameterSymbol @@ -17,7 +17,7 @@ import org.jetbrains.kotlin.name.Name internal class KtFirTypeParameterSymbol( fir: FirTypeParameter, - override val token: Invalidatable + override val token: ValidityOwner ) : KtTypeParameterSymbol(), KtFirSymbol { override val fir: FirTypeParameter by weakRef(fir) override val psi: PsiElement? by cached { fir.findPsi(fir.session) } diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/utils/ReadOnlyWeakRef.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/utils/ReadOnlyWeakRef.kt index a0907ee13cc..c1e2ab6a316 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/utils/ReadOnlyWeakRef.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/utils/ReadOnlyWeakRef.kt @@ -5,16 +5,16 @@ package org.jetbrains.kotlin.idea.frontend.api.fir.utils -import org.jetbrains.kotlin.idea.frontend.api.Invalidatable +import org.jetbrains.kotlin.idea.frontend.api.ValidityOwner import java.lang.ref.WeakReference import kotlin.reflect.KProperty -class ReadOnlyWeakRef(value: V, val invalidatable: Invalidatable) { +class ReadOnlyWeakRef(value: V, val validityOwner: ValidityOwner) { val weakRef = WeakReference(value) @Suppress("NOTHING_TO_INLINE") inline operator fun getValue(thisRef: Any, property: KProperty<*>): V = - weakRef.get() ?: if (invalidatable.isValid()) { + weakRef.get() ?: if (validityOwner.isValid()) { error("Cone type was garbage collected while analysis session is still valid") } else { error("Accessing the invalid coneType") @@ -22,4 +22,4 @@ class ReadOnlyWeakRef(value: V, val invalidatable: Invalidatable) { } @Suppress("NOTHING_TO_INLINE") -internal inline fun Invalidatable.weakRef(value: V) = ReadOnlyWeakRef(value, this) \ No newline at end of file +internal inline fun ValidityOwner.weakRef(value: V) = ReadOnlyWeakRef(value, this) \ No newline at end of file diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/utils/ValidityAwareCachedValue.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/utils/ValidityAwareCachedValue.kt index 90cc8312573..e85c198cb4d 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/utils/ValidityAwareCachedValue.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/utils/ValidityAwareCachedValue.kt @@ -5,8 +5,8 @@ package org.jetbrains.kotlin.idea.frontend.api.fir.utils -import org.jetbrains.kotlin.idea.frontend.api.Invalidatable -import org.jetbrains.kotlin.idea.frontend.api.InvalidatableByValidityToken +import org.jetbrains.kotlin.idea.frontend.api.ValidityOwner +import org.jetbrains.kotlin.idea.frontend.api.ValidityOwnerByValidityToken import org.jetbrains.kotlin.idea.frontend.api.assertIsValid import kotlin.properties.ReadOnlyProperty import kotlin.reflect.KProperty @@ -14,14 +14,14 @@ import kotlin.reflect.KProperty // all access are considered to be from a single thread // which should be checked in invalidatable.assertIsValid() class ValidityAwareCachedValue( - private val invalidatable: Invalidatable, + private val validityOwner: ValidityOwner, private val init: () -> T ) : ReadOnlyProperty { var value: Any? = UNITITIALIZED @Suppress("UNCHECKED_CAST") override fun getValue(thisRef: Any, property: KProperty<*>): T { - invalidatable.assertIsValid() + validityOwner.assertIsValid() if (value === UNITITIALIZED) { value = init() } @@ -29,6 +29,6 @@ class ValidityAwareCachedValue( } } -internal fun InvalidatableByValidityToken.cached(init: () -> T) = ValidityAwareCachedValue(token, init) +internal fun ValidityOwnerByValidityToken.cached(init: () -> T) = ValidityAwareCachedValue(token, init) internal object UNITITIALIZED \ No newline at end of file