From cee72023fa08e43b4ca893982587c09cc7d07078 Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Thu, 20 Aug 2020 13:07:53 +0300 Subject: [PATCH] Remove TypeSystemContext::mayBeTypeVariable optimization It doesn't work now since anyway it's required to obtain type constructor At the same time, now it's not very expensive to obtain the constructor since it's just a lookup tag --- .../org/jetbrains/kotlin/fir/types/ConeInferenceContext.kt | 5 ----- .../calls/components/ClassicTypeSystemContextForCS.kt | 5 ----- .../resolve/calls/inference/components/ConstraintInjector.kt | 2 +- .../kotlin/types/checker/ClassicTypeSystemContext.kt | 4 ---- .../org/jetbrains/kotlin/types/model/TypeSystemContext.kt | 2 -- 5 files changed, 1 insertion(+), 17 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/ConeInferenceContext.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/ConeInferenceContext.kt index b2d7b425db2..1b94c70a7ec 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/ConeInferenceContext.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/ConeInferenceContext.kt @@ -263,11 +263,6 @@ interface ConeInferenceContext : TypeSystemInferenceExtensionContext, ConeTypeCo return this.typeConstructor } - override fun KotlinTypeMarker.mayBeTypeVariable(): Boolean { - require(this is ConeKotlinType) - return this.typeConstructor() is ConeTypeVariableTypeConstructor - } - override fun CapturedTypeMarker.typeConstructorProjection(): TypeArgumentMarker { require(this is ConeCapturedType) return this.constructor.projection diff --git a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/ClassicTypeSystemContextForCS.kt b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/ClassicTypeSystemContextForCS.kt index 5049cd87d33..e13bc9acb51 100644 --- a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/ClassicTypeSystemContextForCS.kt +++ b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/ClassicTypeSystemContextForCS.kt @@ -34,11 +34,6 @@ class ClassicTypeSystemContextForCS(override val builtIns: KotlinBuiltIns) : Typ return this.freshTypeConstructor } - override fun KotlinTypeMarker.mayBeTypeVariable(): Boolean { - require(this is KotlinType, this::errorMessage) - return this.constructor is TypeVariableTypeConstructor - } - override fun createCapturedType( constructorProjection: TypeArgumentMarker, constructorSupertypes: List, diff --git a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/inference/components/ConstraintInjector.kt b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/inference/components/ConstraintInjector.kt index 674092abba9..43aeb074b93 100644 --- a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/inference/components/ConstraintInjector.kt +++ b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/inference/components/ConstraintInjector.kt @@ -219,7 +219,7 @@ class ConstraintInjector( // from AbstractTypeCheckerContextForConstraintSystem override fun isMyTypeVariable(type: SimpleTypeMarker): Boolean = - type.mayBeTypeVariable() && c.allTypeVariables.containsKey(type.typeConstructor()) + c.allTypeVariables.containsKey(type.typeConstructor()) override fun addUpperConstraint(typeVariable: TypeConstructorMarker, superType: KotlinTypeMarker) = addConstraint(typeVariable, superType, UPPER) 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 b45ad6a18b6..9872f3b81ad 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/checker/ClassicTypeSystemContext.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/types/checker/ClassicTypeSystemContext.kt @@ -401,10 +401,6 @@ interface ClassicTypeSystemContext : TypeSystemInferenceExtensionContext, TypeSy errorSupportedOnlyInTypeInference() } - override fun KotlinTypeMarker.mayBeTypeVariable(): Boolean { - errorSupportedOnlyInTypeInference() - } - override fun CapturedTypeMarker.typeConstructorProjection(): TypeArgumentMarker { require(this is NewCapturedType, this::errorMessage) return this.constructor.projection diff --git a/core/type-system/src/org/jetbrains/kotlin/types/model/TypeSystemContext.kt b/core/type-system/src/org/jetbrains/kotlin/types/model/TypeSystemContext.kt index d4dde15b306..7d5e706bd9c 100644 --- a/core/type-system/src/org/jetbrains/kotlin/types/model/TypeSystemContext.kt +++ b/core/type-system/src/org/jetbrains/kotlin/types/model/TypeSystemContext.kt @@ -155,8 +155,6 @@ interface TypeSystemInferenceExtensionContext : TypeSystemContext, TypeSystemBui fun TypeVariableMarker.freshTypeConstructor(): TypeConstructorMarker - fun KotlinTypeMarker.mayBeTypeVariable(): Boolean - fun CapturedTypeMarker.typeConstructorProjection(): TypeArgumentMarker fun CapturedTypeMarker.typeParameter(): TypeParameterMarker? fun CapturedTypeMarker.withNotNullProjection(): KotlinTypeMarker