From 6f9f9fc087708d80170b36c58968d5979a762b51 Mon Sep 17 00:00:00 2001 From: Simon Ogorodnik Date: Tue, 23 Apr 2019 04:17:40 +0300 Subject: [PATCH] FIR types: relax requirements around flexible types --- .../cones/src/org/jetbrains/kotlin/fir/types/ConeTypes.kt | 7 +++++++ .../kotlin/fir/resolve/calls/ConeInferenceContext.kt | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) 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 4236cac0883..3669a3b62bb 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 @@ -109,6 +109,13 @@ abstract class ConeTypeParameterType : ConeLookupTagBasedType() { class ConeFlexibleType(val lowerBound: ConeKotlinType, val upperBound: ConeKotlinType) : ConeKotlinType(), FlexibleTypeMarker { + + init { + val message = { "Bounds violation: $lowerBound, $upperBound" } + require(lowerBound is SimpleTypeMarker, message) + require(upperBound is SimpleTypeMarker, message) + } + override val typeArguments: Array get() = emptyArray() diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConeInferenceContext.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConeInferenceContext.kt index 41bc5bb6cb0..84291cdf250 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConeInferenceContext.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConeInferenceContext.kt @@ -41,8 +41,8 @@ interface ConeInferenceContext : TypeSystemInferenceExtensionContext, } override fun createFlexibleType(lowerBound: SimpleTypeMarker, upperBound: SimpleTypeMarker): KotlinTypeMarker { - require(lowerBound is ConeLookupTagBasedType) - require(upperBound is ConeLookupTagBasedType) + require(lowerBound is ConeKotlinType) + require(upperBound is ConeKotlinType) return ConeFlexibleType(lowerBound, upperBound) }