KT-56835 [SLC] Mark property$delegate fields as final and @NotNull

This commit is contained in:
Pavel Mikhailovskii
2023-02-22 09:40:32 +00:00
committed by Space Team
parent 6ac562a19d
commit de1927abb6
5 changed files with 26 additions and 10 deletions
@@ -98,12 +98,10 @@ internal class SymbolLightFieldForProperty private constructor(
in GranularModifiersBox.VISIBILITY_MODIFIERS -> GranularModifiersBox.computeVisibilityForMember(ktModule, propertySymbolPointer)
in GranularModifiersBox.MODALITY_MODIFIERS -> {
val modality = withPropertySymbol { propertySymbol ->
if (propertySymbol.isVal) {
if (propertySymbol.isVal || propertySymbol.isDelegatedProperty) {
PsiModifier.FINAL
} else {
propertySymbol.computeSimpleModality()?.takeIf {
it != PsiModifier.FINAL || isTopLevel && propertySymbol.isDelegatedProperty
}
propertySymbol.computeSimpleModality()?.takeIf { it != PsiModifier.FINAL }
}
}
@@ -154,10 +152,10 @@ internal class SymbolLightFieldForProperty private constructor(
),
additionalAnnotationsProvider = NullabilityAnnotationsProvider {
withPropertySymbol { propertySymbol ->
if (!(propertySymbol is KtKotlinPropertySymbol && propertySymbol.isLateInit)) {
getTypeNullability(propertySymbol.returnType)
} else {
NullabilityType.Unknown
when {
propertySymbol.isDelegatedProperty -> NullabilityType.NotNull
!(propertySymbol is KtKotlinPropertySymbol && propertySymbol.isLateInit) -> getTypeNullability(propertySymbol.returnType)
else -> NullabilityType.Unknown
}
}
}