ConeTypeIntersector: reuse isNullableType from type context
This commit is contained in:
committed by
Space Team
parent
ee6af9af5f
commit
b5111d101e
@@ -47,7 +47,9 @@ object ConeTypeIntersector {
|
|||||||
* UNKNOWN means, that we do not know, i.e. more precisely, all singleClassifier types marked nullable if any,
|
* UNKNOWN means, that we do not know, i.e. more precisely, all singleClassifier types marked nullable if any,
|
||||||
* and other types is captured types or type parameters without not-null upper bound. Example: `String? & T` such types we should leave as is.
|
* and other types is captured types or type parameters without not-null upper bound. Example: `String? & T` such types we should leave as is.
|
||||||
*/
|
*/
|
||||||
val isResultNotNullable = inputTypes.any { !it.isNullable(context) }
|
val isResultNotNullable = with(context) {
|
||||||
|
inputTypes.any { !it.isNullableType() }
|
||||||
|
}
|
||||||
val inputTypesMadeNotNullIfNeeded = inputTypes.mapTo(LinkedHashSet()) {
|
val inputTypesMadeNotNullIfNeeded = inputTypes.mapTo(LinkedHashSet()) {
|
||||||
if (isResultNotNullable) it.makeConeTypeDefinitelyNotNullOrNotNull(context) else it
|
if (isResultNotNullable) it.makeConeTypeDefinitelyNotNullOrNotNull(context) else it
|
||||||
}
|
}
|
||||||
@@ -91,11 +93,4 @@ object ConeTypeIntersector {
|
|||||||
|
|
||||||
private fun ConeKotlinType.isStrictSubtypeOf(context: ConeTypeContext, supertype: ConeKotlinType): Boolean =
|
private fun ConeKotlinType.isStrictSubtypeOf(context: ConeTypeContext, supertype: ConeKotlinType): Boolean =
|
||||||
AbstractTypeChecker.isSubtypeOf(context, this, supertype) && !AbstractTypeChecker.isSubtypeOf(context, supertype, this)
|
AbstractTypeChecker.isSubtypeOf(context, this, supertype) && !AbstractTypeChecker.isSubtypeOf(context, supertype, this)
|
||||||
|
|
||||||
private fun ConeKotlinType.isNullable(context: ConeTypeContext): Boolean =
|
|
||||||
when {
|
|
||||||
isMarkedNullable -> true
|
|
||||||
this is ConeFlexibleType -> upperBound.isNullable(context)
|
|
||||||
else -> !ConeNullabilityChecker.isSubtypeOfAny(context, this)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user