From 425ce8c3ab7740688b3f707e2899b7428b8db3f0 Mon Sep 17 00:00:00 2001 From: Mark Punzalan Date: Mon, 18 May 2020 15:07:03 -0700 Subject: [PATCH] [FIR] Use flexible type lower bound when approximating type for IntegerLiteral. --- .../jetbrains/kotlin/fir/types/ConeIntegerLiteralTypeImpl.kt | 4 ++-- .../testData/codegen/box/controlStructures/continueInFor.kt | 1 - .../codegen/box/controlStructures/continueToLabelInFor.kt | 1 - .../longIterator/MultiDeclForComponentExtensions.kt | 1 - .../MultiDeclForComponentExtensionsValCaptured.kt | 1 - .../longIterator/MultiDeclForComponentMemberExtensions.kt | 1 - ...ultiDeclForComponentMemberExtensionsInExtensionFunction.kt | 1 - 7 files changed, 2 insertions(+), 8 deletions(-) diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/ConeIntegerLiteralTypeImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/ConeIntegerLiteralTypeImpl.kt index d6d4cd780b0..ef5e47d1c91 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/ConeIntegerLiteralTypeImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/ConeIntegerLiteralTypeImpl.kt @@ -61,9 +61,9 @@ class ConeIntegerLiteralTypeImpl : ConeIntegerLiteralType { } override fun getApproximatedType(expectedType: ConeKotlinType?): ConeClassLikeType { - val approximatedType = when (expectedType) { + val approximatedType = when (val expectedTypeForApproximation = expectedType?.lowerBoundIfFlexible()) { null, !in possibleTypes -> possibleTypes.first() - else -> expectedType as ConeClassLikeType + else -> expectedTypeForApproximation as ConeClassLikeType } return approximatedType.withNullability(nullability) } diff --git a/compiler/testData/codegen/box/controlStructures/continueInFor.kt b/compiler/testData/codegen/box/controlStructures/continueInFor.kt index 5afb331a136..7ca3279026b 100644 --- a/compiler/testData/codegen/box/controlStructures/continueInFor.kt +++ b/compiler/testData/codegen/box/controlStructures/continueInFor.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR // KJS_WITH_FULL_RUNTIME fun for_int_range(): Int { var c = 0 diff --git a/compiler/testData/codegen/box/controlStructures/continueToLabelInFor.kt b/compiler/testData/codegen/box/controlStructures/continueToLabelInFor.kt index d84acebcab6..0942c5725e0 100644 --- a/compiler/testData/codegen/box/controlStructures/continueToLabelInFor.kt +++ b/compiler/testData/codegen/box/controlStructures/continueToLabelInFor.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR // KJS_WITH_FULL_RUNTIME fun for_int_range(): Int { var c = 0 diff --git a/compiler/testData/codegen/box/multiDecl/forIterator/longIterator/MultiDeclForComponentExtensions.kt b/compiler/testData/codegen/box/multiDecl/forIterator/longIterator/MultiDeclForComponentExtensions.kt index 4686ca051e3..872d2a9545b 100644 --- a/compiler/testData/codegen/box/multiDecl/forIterator/longIterator/MultiDeclForComponentExtensions.kt +++ b/compiler/testData/codegen/box/multiDecl/forIterator/longIterator/MultiDeclForComponentExtensions.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR // KJS_WITH_FULL_RUNTIME operator fun Long.component1() = this + 1 operator fun Long.component2() = this + 2 diff --git a/compiler/testData/codegen/box/multiDecl/forIterator/longIterator/MultiDeclForComponentExtensionsValCaptured.kt b/compiler/testData/codegen/box/multiDecl/forIterator/longIterator/MultiDeclForComponentExtensionsValCaptured.kt index bee4da253a9..814344fba6e 100644 --- a/compiler/testData/codegen/box/multiDecl/forIterator/longIterator/MultiDeclForComponentExtensionsValCaptured.kt +++ b/compiler/testData/codegen/box/multiDecl/forIterator/longIterator/MultiDeclForComponentExtensionsValCaptured.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR // KJS_WITH_FULL_RUNTIME operator fun Long.component1() = this + 1 operator fun Long.component2() = this + 2 diff --git a/compiler/testData/codegen/box/multiDecl/forIterator/longIterator/MultiDeclForComponentMemberExtensions.kt b/compiler/testData/codegen/box/multiDecl/forIterator/longIterator/MultiDeclForComponentMemberExtensions.kt index ea6c01770bd..3c8e9e671e8 100644 --- a/compiler/testData/codegen/box/multiDecl/forIterator/longIterator/MultiDeclForComponentMemberExtensions.kt +++ b/compiler/testData/codegen/box/multiDecl/forIterator/longIterator/MultiDeclForComponentMemberExtensions.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR // KJS_WITH_FULL_RUNTIME class M { operator fun Long.component1() = this + 1 diff --git a/compiler/testData/codegen/box/multiDecl/forIterator/longIterator/MultiDeclForComponentMemberExtensionsInExtensionFunction.kt b/compiler/testData/codegen/box/multiDecl/forIterator/longIterator/MultiDeclForComponentMemberExtensionsInExtensionFunction.kt index a4630572c52..dc8fc860e69 100644 --- a/compiler/testData/codegen/box/multiDecl/forIterator/longIterator/MultiDeclForComponentMemberExtensionsInExtensionFunction.kt +++ b/compiler/testData/codegen/box/multiDecl/forIterator/longIterator/MultiDeclForComponentMemberExtensionsInExtensionFunction.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR // KJS_WITH_FULL_RUNTIME class M { operator fun Long.component1() = this + 1