From eb09a25239ac62650993a604750d90d8074a53a0 Mon Sep 17 00:00:00 2001 From: "Denis.Zharkov" Date: Tue, 21 Feb 2023 16:50:29 +0100 Subject: [PATCH] TypeSystemContext: Rework raw types processing All the current usages are about checking if the type is raw, also in K2 it is simply incorrect to assume that only flexible types might be raw --- .../src/org/jetbrains/kotlin/fir/types/ConeTypeContext.kt | 6 +++--- .../org/jetbrains/kotlin/ir/types/IrTypeSystemContext.kt | 2 +- .../org/jetbrains/kotlin/types/AbstractTypeApproximator.kt | 2 +- .../load/java/typeEnhancement/AbstractSignatureParts.kt | 2 +- .../kotlin/types/TypeSystemCommonBackendContext.kt | 2 -- .../org/jetbrains/kotlin/types/model/TypeSystemContext.kt | 2 +- .../kotlin/types/checker/ClassicTypeSystemContext.kt | 6 +++--- 7 files changed, 10 insertions(+), 12 deletions(-) diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/types/ConeTypeContext.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/types/ConeTypeContext.kt index bfe9b060e0d..53685eb1521 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/types/ConeTypeContext.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/types/ConeTypeContext.kt @@ -113,9 +113,9 @@ interface ConeTypeContext : TypeSystemContext, TypeSystemOptimizationContext, Ty return this as? ConeDynamicType } - override fun FlexibleTypeMarker.asRawType(): RawTypeMarker? { - require(this is ConeFlexibleType) - return this as? ConeRawType + override fun KotlinTypeMarker.isRawType(): Boolean { + require(this is ConeKotlinType) + return this.isRaw() } override fun FlexibleTypeMarker.upperBound(): SimpleTypeMarker { diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/types/IrTypeSystemContext.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/types/IrTypeSystemContext.kt index e69884ddbd4..3468808e53a 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/types/IrTypeSystemContext.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/types/IrTypeSystemContext.kt @@ -54,7 +54,7 @@ interface IrTypeSystemContext : TypeSystemContext, TypeSystemCommonSuperTypesCon override fun FlexibleTypeMarker.asDynamicType() = this as? IrDynamicType - override fun FlexibleTypeMarker.asRawType(): RawTypeMarker? = null + override fun KotlinTypeMarker.isRawType(): Boolean = false override fun FlexibleTypeMarker.upperBound(): SimpleTypeMarker { return when (this) { diff --git a/compiler/resolution.common/src/org/jetbrains/kotlin/types/AbstractTypeApproximator.kt b/compiler/resolution.common/src/org/jetbrains/kotlin/types/AbstractTypeApproximator.kt index 76d49e4d49e..47db23dd54b 100644 --- a/compiler/resolution.common/src/org/jetbrains/kotlin/types/AbstractTypeApproximator.kt +++ b/compiler/resolution.common/src/org/jetbrains/kotlin/types/AbstractTypeApproximator.kt @@ -118,7 +118,7 @@ abstract class AbstractTypeApproximator( is FlexibleTypeMarker -> { if (type.isDynamic()) { return if (conf.dynamic) null else type.bound() - } else if (type.asRawType() != null) { + } else if (type.isRawType()) { return if (conf.rawType) null else type.bound() } diff --git a/core/compiler.common.jvm/src/org/jetbrains/kotlin/load/java/typeEnhancement/AbstractSignatureParts.kt b/core/compiler.common.jvm/src/org/jetbrains/kotlin/load/java/typeEnhancement/AbstractSignatureParts.kt index bc37cc65810..fd1213921c1 100644 --- a/core/compiler.common.jvm/src/org/jetbrains/kotlin/load/java/typeEnhancement/AbstractSignatureParts.kt +++ b/core/compiler.common.jvm/src/org/jetbrains/kotlin/load/java/typeEnhancement/AbstractSignatureParts.kt @@ -204,7 +204,7 @@ abstract class AbstractSignatureParts { private fun KotlinTypeMarker.toIndexed(): List = with(typeSystem) { TypeAndDefaultQualifiers(this@toIndexed, extractAndMergeDefaultQualifiers(containerDefaultTypeQualifiers), null).flattenTree { // Enhancement of raw type arguments may enter a loop in FE1.0. - if (skipRawTypeArguments && it.type?.asFlexibleType()?.asRawType() != null) return@flattenTree null + if (skipRawTypeArguments && it.type?.isRawType() == true) return@flattenTree null it.type?.typeConstructor()?.getParameters()?.zip(it.type.getArguments()) { parameter, arg -> if (arg.isStarProjection()) { diff --git a/core/compiler.common/src/org/jetbrains/kotlin/types/TypeSystemCommonBackendContext.kt b/core/compiler.common/src/org/jetbrains/kotlin/types/TypeSystemCommonBackendContext.kt index 014183bb8e4..a73041b1e55 100644 --- a/core/compiler.common/src/org/jetbrains/kotlin/types/TypeSystemCommonBackendContext.kt +++ b/core/compiler.common/src/org/jetbrains/kotlin/types/TypeSystemCommonBackendContext.kt @@ -62,8 +62,6 @@ interface TypeSystemCommonBackendContextForTypeMapping : TypeSystemCommonBackend fun SimpleTypeMarker.isSuspendFunction(): Boolean fun SimpleTypeMarker.isKClass(): Boolean - fun KotlinTypeMarker.isRawType(): Boolean - fun TypeConstructorMarker.typeWithArguments(arguments: List): SimpleTypeMarker fun TypeConstructorMarker.typeWithArguments(vararg arguments: KotlinTypeMarker): SimpleTypeMarker { return typeWithArguments(arguments.toList()) diff --git a/core/compiler.common/src/org/jetbrains/kotlin/types/model/TypeSystemContext.kt b/core/compiler.common/src/org/jetbrains/kotlin/types/model/TypeSystemContext.kt index a9192ea76ac..5e83470185a 100644 --- a/core/compiler.common/src/org/jetbrains/kotlin/types/model/TypeSystemContext.kt +++ b/core/compiler.common/src/org/jetbrains/kotlin/types/model/TypeSystemContext.kt @@ -356,7 +356,7 @@ interface TypeSystemContext : TypeSystemOptimizationContext { fun KotlinTypeMarker.isUninferredParameter(): Boolean fun FlexibleTypeMarker.asDynamicType(): DynamicTypeMarker? - fun FlexibleTypeMarker.asRawType(): RawTypeMarker? + fun KotlinTypeMarker.isRawType(): Boolean fun FlexibleTypeMarker.upperBound(): SimpleTypeMarker fun FlexibleTypeMarker.lowerBound(): SimpleTypeMarker diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/checker/ClassicTypeSystemContext.kt b/core/descriptors/src/org/jetbrains/kotlin/types/checker/ClassicTypeSystemContext.kt index 05c83a11ab7..dfa044f13dc 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/checker/ClassicTypeSystemContext.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/types/checker/ClassicTypeSystemContext.kt @@ -153,9 +153,9 @@ interface ClassicTypeSystemContext : TypeSystemInferenceExtensionContext, TypeSy return this as? DynamicType } - override fun FlexibleTypeMarker.asRawType(): RawTypeMarker? { - require(this is FlexibleType, this::errorMessage) - return this as? RawType + override fun KotlinTypeMarker.isRawType(): Boolean { + require(this is KotlinType, this::errorMessage) + return this is RawType } override fun FlexibleTypeMarker.upperBound(): SimpleTypeMarker {