[FIR] Make FirResolvedDeclarationStatus.modality non nullable
^KT-58764 Fixed
This commit is contained in:
committed by
Space Team
parent
8299fffae2
commit
6169834bb3
+1
-1
@@ -98,7 +98,7 @@ internal class KtFirFunctionSymbol(
|
||||
}
|
||||
}
|
||||
|
||||
override val modality: Modality get() = withValidityAssertion { firSymbol.modalityOrFinal }
|
||||
override val modality: Modality get() = withValidityAssertion { firSymbol.modality }
|
||||
override val visibility: Visibility get() = withValidityAssertion { firSymbol.visibility }
|
||||
|
||||
context(KtAnalysisSession)
|
||||
|
||||
+2
-2
@@ -22,7 +22,7 @@ import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isStatic
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.modalityOrFinal
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.modality
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.visibility
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirFieldSymbol
|
||||
import org.jetbrains.kotlin.name.CallableId
|
||||
@@ -46,7 +46,7 @@ internal class KtFirJavaFieldSymbol(
|
||||
|
||||
override val callableIdIfNonLocal: CallableId? get() = withValidityAssertion { firSymbol.getCallableIdIfNonLocal() }
|
||||
|
||||
override val modality: Modality get() = withValidityAssertion { firSymbol.modalityOrFinal }
|
||||
override val modality: Modality get() = withValidityAssertion { firSymbol.modality }
|
||||
override val visibility: Visibility get() = withValidityAssertion { firSymbol.visibility }
|
||||
|
||||
override val isStatic: Boolean get() = withValidityAssertion { firSymbol.isStatic }
|
||||
|
||||
+1
-1
@@ -73,7 +73,7 @@ internal class KtFirKotlinPropertySymbol(
|
||||
}
|
||||
}
|
||||
|
||||
override val modality: Modality get() = withValidityAssertion { firSymbol.modalityOrFinal }
|
||||
override val modality: Modality get() = withValidityAssertion { firSymbol.modality }
|
||||
override val visibility: Visibility get() = withValidityAssertion { firSymbol.visibility }
|
||||
|
||||
override val annotationsList by cached {
|
||||
|
||||
+1
-1
@@ -51,7 +51,7 @@ internal class KtFirPropertyGetterSymbol(
|
||||
|
||||
override val hasBody: Boolean get() = withValidityAssertion { firSymbol.fir.hasBody }
|
||||
|
||||
override val modality: Modality get() = withValidityAssertion { firSymbol.modalityOrFinal }
|
||||
override val modality: Modality get() = withValidityAssertion { firSymbol.modality }
|
||||
override val visibility: Visibility get() = withValidityAssertion { firSymbol.visibility }
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -65,7 +65,7 @@ internal class KtFirPropertySetterSymbol(
|
||||
|
||||
override val hasBody: Boolean get() = withValidityAssertion { firSymbol.fir.hasBody }
|
||||
|
||||
override val modality: Modality get() = withValidityAssertion { firSymbol.modalityOrFinal }
|
||||
override val modality: Modality get() = withValidityAssertion { firSymbol.modality }
|
||||
override val visibility: Visibility get() = withValidityAssertion { firSymbol.visibility }
|
||||
|
||||
override val annotationsList by cached {
|
||||
|
||||
+1
-1
@@ -51,7 +51,7 @@ internal class KtFirSyntheticJavaPropertySymbol(
|
||||
|
||||
override val initializer: KtInitializerValue? by cached { firSymbol.getKtConstantInitializer(analysisSession.firResolveSession) }
|
||||
|
||||
override val modality: Modality get() = withValidityAssertion { firSymbol.modality ?: firSymbol.invalidModalityError() }
|
||||
override val modality: Modality get() = withValidityAssertion { firSymbol.modality }
|
||||
override val visibility: Visibility get() = withValidityAssertion { firSymbol.visibility }
|
||||
|
||||
override val annotationsList by cached {
|
||||
|
||||
+1
-3
@@ -86,9 +86,7 @@ object FirOverrideChecker : FirClassChecker() {
|
||||
overriddenSymbols: List<FirCallableSymbol<*>>,
|
||||
): FirCallableSymbol<*>? {
|
||||
for (overridden in overriddenSymbols) {
|
||||
val modality = overridden.modality
|
||||
val isEffectivelyFinal = modality == null || modality == Modality.FINAL
|
||||
if (isEffectivelyFinal) {
|
||||
if (overridden.modality == Modality.FINAL) {
|
||||
return overridden
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -109,12 +109,12 @@ class FirExpectActualMatchingContextImpl private constructor(
|
||||
override val ClassLikeSymbolMarker.typeParameters: List<TypeParameterSymbolMarker>
|
||||
get() = asSymbol().typeParameterSymbols
|
||||
|
||||
override val ClassLikeSymbolMarker.modality: Modality?
|
||||
override val ClassLikeSymbolMarker.modality: Modality
|
||||
get() = asSymbol().resolvedStatus.modality
|
||||
override val ClassLikeSymbolMarker.visibility: Visibility
|
||||
get() = asSymbol().resolvedStatus.visibility
|
||||
|
||||
override val CallableSymbolMarker.modality: Modality?
|
||||
override val CallableSymbolMarker.modality: Modality
|
||||
get() = asSymbol().resolvedStatus.modality
|
||||
override val CallableSymbolMarker.visibility: Visibility
|
||||
get() = asSymbol().resolvedStatus.visibility
|
||||
|
||||
+1
-1
@@ -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)
|
||||
|
||||
+4
-15
@@ -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
|
||||
|
||||
+3
-1
@@ -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) }
|
||||
|
||||
|
||||
+2
-1
@@ -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()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user