[LC] Fix invalid nullability for properties

Fixed #KT-46097 and #KT-41671
This commit is contained in:
Igor Yakovlev
2021-04-15 18:55:53 +02:00
parent 8071a1e246
commit 63160293fb
4 changed files with 14 additions and 4 deletions
@@ -346,13 +346,14 @@ open class KtLightNullabilityAnnotation<D : KtLightElement<*, PsiModifierListOwn
annotatedElement.bodyExpression?.let { it.getType(it.analyze()) }?.let { return it }
}
if (annotatedElement is KtProperty) {
annotatedElement.initializer?.let { it.getType(it.analyze()) }?.let { return it }
(annotatedElement.initializer ?: annotatedElement.getter?.initializer)
?.let { it.getType(it.analyze()) }?.let { return it }
annotatedElement.delegateExpression?.let { it.getType(it.analyze())?.arguments?.firstOrNull()?.type }?.let { return it }
}
return annotatedElement.getParentOfType<KtProperty>(false)?.let {
it.typeReference?.getType()
?: it.initializer
?: (it.initializer ?: it.getter?.initializer)
?.let { initializer -> initializer.getType(initializer.analyze()) }
}
}
@@ -253,7 +253,7 @@ fun fastCheckIsNullabilityApplied(lightElement: KtLightElement<*, PsiModifierLis
}
val parent = annotatedElement.parent.parent
if (parent is KtModifierListOwner && parent.isPrivate()) return false
if (parent is KtModifierListOwner && parent !is KtPrimaryConstructor && parent.isPrivate()) return false
if (parent is KtPropertyAccessor) {
val propertyOfAccessor = parent.parent