[FIR] Make FirResolvedDeclarationStatus.modality non nullable

^KT-58764 Fixed
This commit is contained in:
Dmitriy Novozhilov
2023-08-30 17:40:33 +03:00
committed by Space Team
parent 8299fffae2
commit 6169834bb3
12 changed files with 20 additions and 30 deletions
@@ -20,7 +20,6 @@ import org.jetbrains.kotlin.fir.visitors.*
interface FirResolvedDeclarationStatus : FirDeclarationStatus {
override val source: KtSourceElement?
override val visibility: Visibility
override val modality: Modality?
override val isExpect: Boolean
override val isActual: Boolean
override val isOverride: Boolean
@@ -40,6 +39,7 @@ interface FirResolvedDeclarationStatus : FirDeclarationStatus {
override val isFromEnumClass: Boolean
override val isFun: Boolean
override val hasStableParameterNames: Boolean
override val modality: Modality
val effectiveVisibility: EffectiveVisibility
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitResolvedDeclarationStatus(this, data)
@@ -10,16 +10,10 @@ import org.jetbrains.kotlin.fir.symbols.impl.*
// ---------------------- callables with status ----------------------
inline val FirCallableSymbol<*>.modality: Modality? get() = resolvedStatus.modality
inline val FirCallableSymbol<*>.modalityOrFinal: Modality get() = modality ?: Modality.FINAL
inline val FirCallableSymbol<*>.modality: Modality get() = resolvedStatus.modality
inline val FirCallableSymbol<*>.isAbstract: Boolean get() = resolvedStatus.modality == Modality.ABSTRACT
inline val FirCallableSymbol<*>.isOpen: Boolean get() = resolvedStatus.modality == Modality.OPEN
inline val FirCallableSymbol<*>.isFinal: Boolean
get() {
// member with unspecified modality is final
val modality = resolvedStatus.modality ?: return true
return modality == Modality.FINAL
}
inline val FirCallableSymbol<*>.isFinal: Boolean get() = resolvedStatus.modality == Modality.FINAL
inline val FirCallableSymbol<*>.visibility: Visibility get() = resolvedStatus.visibility
inline val FirCallableSymbol<*>.effectiveVisibility: EffectiveVisibility get() = resolvedStatus.effectiveVisibility
@@ -43,14 +37,9 @@ inline val FirCallableSymbol<*>.isFun: Boolean get() = rawStatus.isFun
// ---------------------- class like with status ----------------------
inline val FirClassLikeSymbol<*>.modality: Modality? get() = resolvedStatus.modality
inline val FirClassLikeSymbol<*>.modality: Modality get() = resolvedStatus.modality
inline val FirClassLikeSymbol<*>.isAbstract: Boolean get() = resolvedStatus.modality == Modality.ABSTRACT
inline val FirClassLikeSymbol<*>.isFinal: Boolean
get() {
// member with unspecified modality is final
val modality = resolvedStatus.modality ?: return true
return modality == Modality.FINAL
}
inline val FirClassLikeSymbol<*>.isFinal: Boolean get() = resolvedStatus.modality == Modality.FINAL
inline val FirClassLikeSymbol<*>.visibility: Visibility get() = resolvedStatus.visibility
inline val FirClassLikeSymbol<*>.effectiveVisibility: EffectiveVisibility get() = resolvedStatus.effectiveVisibility
@@ -80,7 +80,9 @@ object FieldSets {
val effectiveVisibility by lazy { field("effectiveVisibility", effectiveVisibilityType) }
val modality by lazy { field(modalityType, nullable = true) }
fun modality(nullable: Boolean): Field {
return field(modalityType, nullable = nullable)
}
val scopeProvider by lazy { field("scopeProvider", firScopeProviderType) }
@@ -390,7 +390,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
declarationStatus.configure {
+visibility
+modality
+modality(nullable = true)
generateBooleanFields(
"expect", "actual", "override", "operator", "infix", "inline", "tailRec",
"external", "const", "lateInit", "inner", "companion", "data", "suspend", "static",
@@ -399,6 +399,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
}
resolvedDeclarationStatus.configure {
+modality(nullable = false)
+effectiveVisibility
shouldBeAnInterface()
}