From 37789cf7f5613eba05b4964e0a782cfab5d938bb Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Mon, 11 Dec 2023 15:11:36 +0100 Subject: [PATCH] K2: introduce unwrapFlexibleAndDefinitelyNotNull --- .../checkers/declaration/FirCyclicTypeBoundsChecker.kt | 2 +- .../checkers/declaration/FirTopLevelTypeAliasChecker.kt | 2 +- .../fir/cones/src/org/jetbrains/kotlin/fir/types/ConeTypes.kt | 4 ++++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirCyclicTypeBoundsChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirCyclicTypeBoundsChecker.kt index 7b65e89339f..8ad177e0d82 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirCyclicTypeBoundsChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirCyclicTypeBoundsChecker.kt @@ -77,5 +77,5 @@ object FirCyclicTypeBoundsChecker : FirBasicDeclarationChecker() { ref.unwrapBound().mapNotNull { extractTypeParamName(it.coneType) }.toSet() private fun extractTypeParamName(type: ConeKotlinType): Name? = - (type.lowerBoundIfFlexible().unwrapDefinitelyNotNull() as? ConeTypeParameterType)?.lookupTag?.name + (type.unwrapFlexibleAndDefinitelyNotNull() as? ConeTypeParameterType)?.lookupTag?.name } diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirTopLevelTypeAliasChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirTopLevelTypeAliasChecker.kt index bb5ec5c6199..531375b61c8 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirTopLevelTypeAliasChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirTopLevelTypeAliasChecker.kt @@ -24,7 +24,7 @@ object FirTopLevelTypeAliasChecker : FirTypeAliasChecker() { } fun containsTypeParameter(type: ConeKotlinType): Boolean { - val unwrapped = type.lowerBoundIfFlexible().unwrapDefinitelyNotNull() + val unwrapped = type.unwrapFlexibleAndDefinitelyNotNull() if (unwrapped is ConeTypeParameterType) { return true diff --git a/compiler/fir/cones/src/org/jetbrains/kotlin/fir/types/ConeTypes.kt b/compiler/fir/cones/src/org/jetbrains/kotlin/fir/types/ConeTypes.kt index 41a433d5405..949b27f0f01 100644 --- a/compiler/fir/cones/src/org/jetbrains/kotlin/fir/types/ConeTypes.kt +++ b/compiler/fir/cones/src/org/jetbrains/kotlin/fir/types/ConeTypes.kt @@ -118,6 +118,10 @@ fun ConeSimpleKotlinType.unwrapDefinitelyNotNull(): ConeSimpleKotlinType { } } +fun ConeKotlinType.unwrapFlexibleAndDefinitelyNotNull(): ConeKotlinType { + return lowerBoundIfFlexible().unwrapDefinitelyNotNull() +} + class ConeCapturedTypeConstructor( val projection: ConeTypeProjection, var supertypes: List? = null,