FIR: Introduce FirClassLikeDeclaration::supertypesComputationStatus

This commit is contained in:
Denis Zharkov
2019-08-27 20:08:16 +03:00
parent 6058f9d286
commit d9d6c38c2b
5 changed files with 18 additions and 1 deletions
@@ -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
}
@@ -25,6 +25,12 @@ interface FirClassLikeDeclaration<F : FirClassLikeDeclaration<F>> :
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
super<FirMemberDeclaration>.acceptChildren(visitor, data)
}
enum class SupertypesComputationStatus {
NOT_COMPUTED, COMPUTING, COMPUTED
}
var supertypesComputationStatus: SupertypesComputationStatus
}
fun ConeClassifierSymbol.toFirClassLike(): FirClassLikeDeclaration<*>? =
@@ -27,4 +27,6 @@ abstract class FirEnumEntry(
typeRef.accept(visitor, data)
super<FirRegularClass>.acceptChildren(visitor, data)
}
}
override var supertypesComputationStatus = FirClassLikeDeclaration.SupertypesComputationStatus.NOT_COMPUTED
}
@@ -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
}
@@ -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<FirAbstractMemberDeclaration>.transformChildren(transformer, data)
}
override var supertypesComputationStatus = FirClassLikeDeclaration.SupertypesComputationStatus.NOT_COMPUTED
}