Make mustNotBeNull function from JavaNullabilityChecker available for J2K

This commit is contained in:
Ilya Kirillov
2019-04-18 14:45:11 +03:00
committed by Ilya Kirillov
parent 98651f3484
commit 0a88276f68
@@ -167,20 +167,6 @@ class JavaNullabilityChecker : AdditionalTypeChecker {
else
null
private class EnhancedNullabilityInfo(val enhancedType: KotlinType, val isFromJava: Boolean) {
val isFromKotlin get() = !isFromJava
}
private fun KotlinType.enhancementFromKotlin() = EnhancedNullabilityInfo(this, isFromJava = false)
private fun TypeWithEnhancement.enhancementFromJava() = EnhancedNullabilityInfo(enhancement, isFromJava = true)
private fun KotlinType.mustNotBeNull(): EnhancedNullabilityInfo? = when {
!isError && !isFlexible() && !TypeUtils.acceptsNullable(this) -> enhancementFromKotlin()
isFlexible() && !TypeUtils.acceptsNullable(asFlexibleType().upperBound) -> enhancementFromKotlin()
this is TypeWithEnhancement && enhancement.mustNotBeNull() != null -> enhancementFromJava()
else -> null
}
private fun KotlinType.mayBeNull(): EnhancedNullabilityInfo? = when {
!isError && !isFlexible() && TypeUtils.acceptsNullable(this) -> enhancementFromKotlin()
isFlexible() && TypeUtils.acceptsNullable(asFlexibleType().lowerBound) -> enhancementFromKotlin()
@@ -188,3 +174,17 @@ class JavaNullabilityChecker : AdditionalTypeChecker {
else -> null
}
}
class EnhancedNullabilityInfo(val enhancedType: KotlinType, val isFromJava: Boolean) {
val isFromKotlin get() = !isFromJava
}
private fun KotlinType.enhancementFromKotlin() = EnhancedNullabilityInfo(this, isFromJava = false)
private fun TypeWithEnhancement.enhancementFromJava() = EnhancedNullabilityInfo(enhancement, isFromJava = true)
fun KotlinType.mustNotBeNull(): EnhancedNullabilityInfo? = when {
!isError && !isFlexible() && !TypeUtils.acceptsNullable(this) -> enhancementFromKotlin()
isFlexible() && !TypeUtils.acceptsNullable(asFlexibleType().upperBound) -> enhancementFromKotlin()
this is TypeWithEnhancement && enhancement.mustNotBeNull() != null -> enhancementFromJava()
else -> null
}