From d9d6c38c2bd6ac24e4c560baec896adcca41945d Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Tue, 27 Aug 2019 20:08:16 +0300 Subject: [PATCH] FIR: Introduce FirClassLikeDeclaration::supertypesComputationStatus --- .../jetbrains/kotlin/fir/java/declarations/FirJavaClass.kt | 3 +++ .../kotlin/fir/declarations/FirClassLikeDeclaration.kt | 6 ++++++ .../org/jetbrains/kotlin/fir/declarations/FirEnumEntry.kt | 4 +++- .../jetbrains/kotlin/fir/declarations/impl/FirClassImpl.kt | 3 +++ .../kotlin/fir/declarations/impl/FirTypeAliasImpl.kt | 3 +++ 5 files changed, 18 insertions(+), 1 deletion(-) diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaClass.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaClass.kt index 0d0141ee99d..abbe06bd774 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaClass.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaClass.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.fir.FirSession +import org.jetbrains.kotlin.fir.declarations.FirClassLikeDeclaration import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.FirRegularClass import org.jetbrains.kotlin.fir.declarations.FirResolvePhase @@ -60,4 +61,6 @@ class FirJavaClass internal constructor( override fun setCallbackOnSupertypesComputed(callback: () -> Unit) = error("Supertypes computation should happen just before the instance is published") + + override var supertypesComputationStatus = FirClassLikeDeclaration.SupertypesComputationStatus.NOT_COMPUTED } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirClassLikeDeclaration.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirClassLikeDeclaration.kt index 598d76ff990..a58aa7bd65d 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirClassLikeDeclaration.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirClassLikeDeclaration.kt @@ -25,6 +25,12 @@ interface FirClassLikeDeclaration> : override fun acceptChildren(visitor: FirVisitor, data: D) { super.acceptChildren(visitor, data) } + + enum class SupertypesComputationStatus { + NOT_COMPUTED, COMPUTING, COMPUTED + } + + var supertypesComputationStatus: SupertypesComputationStatus } fun ConeClassifierSymbol.toFirClassLike(): FirClassLikeDeclaration<*>? = diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirEnumEntry.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirEnumEntry.kt index 53002b284e1..45c03d2d228 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirEnumEntry.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirEnumEntry.kt @@ -27,4 +27,6 @@ abstract class FirEnumEntry( typeRef.accept(visitor, data) super.acceptChildren(visitor, data) } -} \ No newline at end of file + + override var supertypesComputationStatus = FirClassLikeDeclaration.SupertypesComputationStatus.NOT_COMPUTED +} diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirClassImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirClassImpl.kt index 9a0be985e19..3cfa88a7ede 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirClassImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirClassImpl.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.fir.FirSession +import org.jetbrains.kotlin.fir.declarations.FirClassLikeDeclaration import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.FirRegularClass import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol @@ -84,4 +85,6 @@ open class FirClassImpl( override fun setCallbackOnSupertypesComputed(callback: () -> Unit) { callbackOnSupertypesComputed = callback } + + override var supertypesComputationStatus = FirClassLikeDeclaration.SupertypesComputationStatus.NOT_COMPUTED } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirTypeAliasImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirTypeAliasImpl.kt index f87751fa11c..657b128740d 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirTypeAliasImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirTypeAliasImpl.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.FirSession +import org.jetbrains.kotlin.fir.declarations.FirClassLikeDeclaration import org.jetbrains.kotlin.fir.declarations.FirTypeAlias import org.jetbrains.kotlin.fir.symbols.impl.FirTypeAliasSymbol import org.jetbrains.kotlin.fir.transformSingle @@ -42,4 +43,6 @@ class FirTypeAliasImpl( return super.transformChildren(transformer, data) } + + override var supertypesComputationStatus = FirClassLikeDeclaration.SupertypesComputationStatus.NOT_COMPUTED }