diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/ConeTypeContext.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/ConeTypeContext.kt index 36967882b7d..ca1df2bf9db 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/ConeTypeContext.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/ConeTypeContext.kt @@ -31,6 +31,7 @@ import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.FqNameUnsafe import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.StandardClassIds +import org.jetbrains.kotlin.types.AbstractTypeRefiner import org.jetbrains.kotlin.types.TypeCheckerState import org.jetbrains.kotlin.types.TypeCheckerState.SupertypesPolicy.DoCustomTransform import org.jetbrains.kotlin.types.TypeCheckerState.SupertypesPolicy.LowerIfFlexible @@ -571,8 +572,10 @@ class ConeTypeCheckerState( override val isErrorTypeEqualsToAnything: Boolean, override val isStubTypeEqualsToAnything: Boolean, override val typeSystemContext: ConeInferenceContext, - val kotlinTypePreparator: ConeTypePreparator = ConeTypePreparator.getDefault(typeSystemContext.session), + override val kotlinTypePreparator: ConeTypePreparator = ConeTypePreparator(typeSystemContext.session), ) : TypeCheckerState() { + override val kotlinTypeRefiner: AbstractTypeRefiner + get() = AbstractTypeRefiner.Default val session: FirSession = typeSystemContext.session @@ -604,14 +607,6 @@ class ConeTypeCheckerState( } } - override fun refineType(type: KotlinTypeMarker): KotlinTypeMarker { - return kotlinTypePreparator.prepareType(type) - } - - override fun prepareType(type: KotlinTypeMarker): KotlinTypeMarker { - return kotlinTypePreparator.prepareType(type) - } - override val KotlinTypeMarker.isAllowedTypeVariable: Boolean get() = this is ConeKotlinType && this is ConeTypeVariableType } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/ConeTypePreparator.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/ConeTypePreparator.kt index f930478a52d..321b5bc57fd 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/ConeTypePreparator.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/ConeTypePreparator.kt @@ -10,7 +10,7 @@ import org.jetbrains.kotlin.fir.resolve.fullyExpandedType import org.jetbrains.kotlin.types.AbstractTypePreparator import org.jetbrains.kotlin.types.model.KotlinTypeMarker -abstract class ConeTypePreparator(val session: FirSession) : AbstractTypePreparator { +class ConeTypePreparator(val session: FirSession) : AbstractTypePreparator() { override fun prepareType(type: KotlinTypeMarker): KotlinTypeMarker { return when (type) { is ConeClassLikeType -> type.fullyExpandedType(session) @@ -26,8 +26,4 @@ abstract class ConeTypePreparator(val session: FirSession) : AbstractTypePrepara else -> type } } - - companion object { - fun getDefault(session: FirSession) = object : ConeTypePreparator(session) {} - } -} \ No newline at end of file +} diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/OverrideResolver.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/OverrideResolver.kt index 6edb49b59dc..943bb97e61a 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/OverrideResolver.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/OverrideResolver.kt @@ -22,7 +22,6 @@ import com.intellij.psi.PsiElement import com.intellij.util.SmartList import com.intellij.util.containers.ContainerUtil import com.intellij.util.containers.SmartHashSet -import org.jetbrains.kotlin.config.LanguageFeature import org.jetbrains.kotlin.config.LanguageFeature.AbstractClassMemberNotImplementedWithIntermediateAbstractClass import org.jetbrains.kotlin.config.LanguageVersionSettings import org.jetbrains.kotlin.descriptors.* @@ -42,7 +41,7 @@ import org.jetbrains.kotlin.resolve.calls.callResolverUtil.isOrOverridesSynthesi import org.jetbrains.kotlin.types.* import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner import org.jetbrains.kotlin.types.checker.NewKotlinTypeCheckerImpl -import org.jetbrains.kotlin.types.refinement.TypeRefinement +import org.jetbrains.kotlin.types.TypeRefinement import org.jetbrains.kotlin.utils.addToStdlib.assertedCast import java.util.* diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CallExpressionResolver.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CallExpressionResolver.kt index 3f5906103ea..d35b0b63e7c 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CallExpressionResolver.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CallExpressionResolver.kt @@ -57,7 +57,7 @@ import org.jetbrains.kotlin.types.expressions.KotlinTypeInfo import org.jetbrains.kotlin.types.expressions.typeInfoFactory.createTypeInfo import org.jetbrains.kotlin.types.expressions.typeInfoFactory.noTypeInfo import org.jetbrains.kotlin.types.isError -import org.jetbrains.kotlin.types.refinement.TypeRefinement +import org.jetbrains.kotlin.types.TypeRefinement import javax.inject.Inject class CallExpressionResolver( diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/inference/BuilderInferenceUtil.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/inference/BuilderInferenceUtil.kt index f88f5af558d..08748b0efb7 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/inference/BuilderInferenceUtil.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/inference/BuilderInferenceUtil.kt @@ -42,7 +42,7 @@ import org.jetbrains.kotlin.types.checker.NewKotlinTypeChecker import org.jetbrains.kotlin.types.expressions.ExpressionTypingServices import org.jetbrains.kotlin.types.expressions.KotlinTypeInfo import org.jetbrains.kotlin.types.model.KotlinTypeMarker -import org.jetbrains.kotlin.types.refinement.TypeRefinement +import org.jetbrains.kotlin.types.TypeRefinement import org.jetbrains.kotlin.types.typeUtil.* import javax.inject.Inject diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/KotlinResolutionCallbacksImpl.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/KotlinResolutionCallbacksImpl.kt index f6a212d2efc..2beb85ed58f 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/KotlinResolutionCallbacksImpl.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/KotlinResolutionCallbacksImpl.kt @@ -41,7 +41,7 @@ import org.jetbrains.kotlin.types.* import org.jetbrains.kotlin.types.expressions.DoubleColonExpressionResolver import org.jetbrains.kotlin.types.expressions.ExpressionTypingServices import org.jetbrains.kotlin.types.expressions.KotlinTypeInfo -import org.jetbrains.kotlin.types.refinement.TypeRefinement +import org.jetbrains.kotlin.types.TypeRefinement import org.jetbrains.kotlin.types.typeUtil.isUnit import org.jetbrains.kotlin.types.typeUtil.makeNullable import org.jetbrains.kotlin.utils.addToStdlib.safeAs diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyClassMemberScope.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyClassMemberScope.kt index fa87bcc0d98..30dfcd78e0b 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyClassMemberScope.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyClassMemberScope.kt @@ -44,7 +44,7 @@ import org.jetbrains.kotlin.storage.getValue import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner import org.jetbrains.kotlin.types.checker.NewKotlinTypeCheckerImpl -import org.jetbrains.kotlin.types.refinement.TypeRefinement +import org.jetbrains.kotlin.types.TypeRefinement import org.jetbrains.kotlin.utils.addToStdlib.flatMapToNullable import java.util.* diff --git a/compiler/frontend/src/org/jetbrains/kotlin/types/DeferredType.java b/compiler/frontend/src/org/jetbrains/kotlin/types/DeferredType.java index dc32b87255d..2712d0fddfc 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/types/DeferredType.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/types/DeferredType.java @@ -23,7 +23,6 @@ import org.jetbrains.kotlin.resolve.BindingTrace; import org.jetbrains.kotlin.storage.NotNullLazyValue; import org.jetbrains.kotlin.storage.StorageManager; import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner; -import org.jetbrains.kotlin.types.refinement.TypeRefinement; import org.jetbrains.kotlin.util.Box; import org.jetbrains.kotlin.util.ReenteringLazyValueComputationException; diff --git a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/DoubleColonExpressionResolver.kt b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/DoubleColonExpressionResolver.kt index 199c4fe49f1..c1c32231041 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/DoubleColonExpressionResolver.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/DoubleColonExpressionResolver.kt @@ -18,7 +18,6 @@ import org.jetbrains.kotlin.descriptors.impl.LocalVariableDescriptor import org.jetbrains.kotlin.diagnostics.Errors.* import org.jetbrains.kotlin.diagnostics.reportDiagnosticOnce import org.jetbrains.kotlin.lexer.KtTokens -import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.SpecialNames import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.codeFragmentUtil.suppressDiagnosticsInDebugMode @@ -51,7 +50,7 @@ import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner import org.jetbrains.kotlin.types.expressions.FunctionWithBigAritySupport.LanguageVersionDependent import org.jetbrains.kotlin.types.expressions.typeInfoFactory.createTypeInfo import org.jetbrains.kotlin.types.expressions.typeInfoFactory.noTypeInfo -import org.jetbrains.kotlin.types.refinement.TypeRefinement +import org.jetbrains.kotlin.types.TypeRefinement import org.jetbrains.kotlin.types.typeUtil.* import org.jetbrains.kotlin.utils.yieldIfNotNull import java.util.* diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/types/IrTypeCheckerState.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/types/IrTypeCheckerState.kt index d00cfaef133..1a6dd3a9d36 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/types/IrTypeCheckerState.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/types/IrTypeCheckerState.kt @@ -7,12 +7,19 @@ package org.jetbrains.kotlin.ir.types import org.jetbrains.kotlin.ir.IrBuiltIns import org.jetbrains.kotlin.ir.symbols.IrClassSymbol +import org.jetbrains.kotlin.types.AbstractTypePreparator +import org.jetbrains.kotlin.types.AbstractTypeRefiner import org.jetbrains.kotlin.types.TypeCheckerState import org.jetbrains.kotlin.types.model.KotlinTypeMarker import org.jetbrains.kotlin.types.model.SimpleTypeMarker open class IrTypeCheckerState(override val typeSystemContext: IrTypeSystemContext): TypeCheckerState() { + override val kotlinTypePreparator: AbstractTypePreparator + get() = AbstractTypePreparator.Default + override val kotlinTypeRefiner: AbstractTypeRefiner + get() = AbstractTypeRefiner.Default + val irBuiltIns: IrBuiltIns get() = typeSystemContext.irBuiltIns override fun substitutionSupertypePolicy(type: SimpleTypeMarker): SupertypesPolicy.DoCustomTransform { diff --git a/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/inference/components/ConstraintInjector.kt b/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/inference/components/ConstraintInjector.kt index ba1eb8def0d..715e53f2ca0 100644 --- a/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/inference/components/ConstraintInjector.kt +++ b/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/inference/components/ConstraintInjector.kt @@ -10,10 +10,7 @@ import org.jetbrains.kotlin.config.LanguageVersionSettings import org.jetbrains.kotlin.resolve.calls.inference.ConstraintSystemOperation import org.jetbrains.kotlin.resolve.calls.inference.model.* import org.jetbrains.kotlin.resolve.calls.inference.model.ConstraintKind.* -import org.jetbrains.kotlin.types.AbstractTypeApproximator -import org.jetbrains.kotlin.types.AbstractTypeChecker -import org.jetbrains.kotlin.types.TypeCheckerState -import org.jetbrains.kotlin.types.TypeApproximatorConfiguration +import org.jetbrains.kotlin.types.* import org.jetbrains.kotlin.types.model.* import org.jetbrains.kotlin.utils.SmartList import kotlin.math.max @@ -219,6 +216,12 @@ class ConstraintInjector( private inner class TypeCheckerStateForConstraintInjector(val c: Context, val position: IncorporationConstraintPosition) : TypeCheckerStateForConstraintSystem(c), ConstraintIncorporator.Context, TypeSystemInferenceExtensionContext by c { + override val kotlinTypePreparator: AbstractTypePreparator + get() = baseState.kotlinTypePreparator + + override val kotlinTypeRefiner: AbstractTypeRefiner + get() = baseState.kotlinTypeRefiner + // We use `var` intentionally to avoid extra allocations as this property is quite "hot" private var possibleNewConstraints: MutableList>? = null @@ -251,14 +254,6 @@ class ConstraintInjector( return baseState.substitutionSupertypePolicy(type) } - override fun refineType(type: KotlinTypeMarker): KotlinTypeMarker { - return with(constraintIncorporator.utilContext) { - type.refineType() - } - } - - override fun prepareType(type: KotlinTypeMarker) = baseState.prepareType(type) - fun runIsSubtypeOf( lowerType: KotlinTypeMarker, upperType: KotlinTypeMarker, diff --git a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/inference/components/ClassicConstraintSystemUtilContext.kt b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/inference/components/ClassicConstraintSystemUtilContext.kt index b2b7e651121..425ce344b8b 100644 --- a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/inference/components/ClassicConstraintSystemUtilContext.kt +++ b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/inference/components/ClassicConstraintSystemUtilContext.kt @@ -17,7 +17,7 @@ import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner import org.jetbrains.kotlin.types.model.KotlinTypeMarker import org.jetbrains.kotlin.types.model.TypeVariableMarker -import org.jetbrains.kotlin.types.refinement.TypeRefinement +import org.jetbrains.kotlin.types.TypeRefinement import org.jetbrains.kotlin.types.typeUtil.unCapture as unCaptureKotlinType class ClassicConstraintSystemUtilContext( diff --git a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/inference/model/TypeVariable.kt b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/inference/model/TypeVariable.kt index b4201b24c89..1587ae71aa2 100644 --- a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/inference/model/TypeVariable.kt +++ b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/inference/model/TypeVariable.kt @@ -31,7 +31,7 @@ import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner import org.jetbrains.kotlin.types.checker.NewTypeVariableConstructor import org.jetbrains.kotlin.types.model.TypeVariableMarker import org.jetbrains.kotlin.types.model.TypeVariableTypeConstructorMarker -import org.jetbrains.kotlin.types.refinement.TypeRefinement +import org.jetbrains.kotlin.types.TypeRefinement class TypeVariableTypeConstructor( diff --git a/compiler/resolution/src/org/jetbrains/kotlin/resolve/multiplatform/ExpectedActualResolver.kt b/compiler/resolution/src/org/jetbrains/kotlin/resolve/multiplatform/ExpectedActualResolver.kt index 16b05ceb617..8de188e1144 100644 --- a/compiler/resolution/src/org/jetbrains/kotlin/resolve/multiplatform/ExpectedActualResolver.kt +++ b/compiler/resolution/src/org/jetbrains/kotlin/resolve/multiplatform/ExpectedActualResolver.kt @@ -20,7 +20,7 @@ import org.jetbrains.kotlin.resolve.scopes.getDescriptorsFiltered import org.jetbrains.kotlin.types.* import org.jetbrains.kotlin.types.checker.* import org.jetbrains.kotlin.types.model.TypeConstructorMarker -import org.jetbrains.kotlin.types.refinement.TypeRefinement +import org.jetbrains.kotlin.types.TypeRefinement import org.jetbrains.kotlin.types.typeUtil.asTypeProjection import org.jetbrains.kotlin.utils.SmartList import org.jetbrains.kotlin.utils.keysToMap diff --git a/core/compiler.common/src/org/jetbrains/kotlin/types/AbstractTypeChecker.kt b/core/compiler.common/src/org/jetbrains/kotlin/types/AbstractTypeChecker.kt index f90210bf890..1f69fb38ef9 100644 --- a/core/compiler.common/src/org/jetbrains/kotlin/types/AbstractTypeChecker.kt +++ b/core/compiler.common/src/org/jetbrains/kotlin/types/AbstractTypeChecker.kt @@ -22,17 +22,20 @@ import java.util.* * new instance of particular [TypeCheckerState] should be created, with properly specified type system context */ abstract class TypeCheckerState { + abstract val kotlinTypePreparator: AbstractTypePreparator + abstract val kotlinTypeRefiner: AbstractTypeRefiner abstract val typeSystemContext: TypeSystemContext abstract fun substitutionSupertypePolicy(type: SimpleTypeMarker): SupertypesPolicy - open fun refineType(type: KotlinTypeMarker): KotlinTypeMarker { - return type + @OptIn(TypeRefinement::class) + fun refineType(type: KotlinTypeMarker): KotlinTypeMarker { + return kotlinTypeRefiner.refineType(type) } - open fun prepareType(type: KotlinTypeMarker): KotlinTypeMarker { - return type + fun prepareType(type: KotlinTypeMarker): KotlinTypeMarker { + return kotlinTypePreparator.prepareType(type) } open fun customIsSubtypeOf(subType: KotlinTypeMarker, superType: KotlinTypeMarker): Boolean = true diff --git a/core/compiler.common/src/org/jetbrains/kotlin/types/AbstractTypePreparator.kt b/core/compiler.common/src/org/jetbrains/kotlin/types/AbstractTypePreparator.kt index 44d6199d30f..b43613ac07d 100644 --- a/core/compiler.common/src/org/jetbrains/kotlin/types/AbstractTypePreparator.kt +++ b/core/compiler.common/src/org/jetbrains/kotlin/types/AbstractTypePreparator.kt @@ -7,6 +7,12 @@ package org.jetbrains.kotlin.types import org.jetbrains.kotlin.types.model.KotlinTypeMarker -interface AbstractTypePreparator { - fun prepareType(type: KotlinTypeMarker): KotlinTypeMarker -} \ No newline at end of file +abstract class AbstractTypePreparator { + abstract fun prepareType(type: KotlinTypeMarker): KotlinTypeMarker + + object Default : AbstractTypePreparator() { + override fun prepareType(type: KotlinTypeMarker): KotlinTypeMarker { + return type + } + } +} diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/refinement/annotations.kt b/core/compiler.common/src/org/jetbrains/kotlin/types/AbstractTypeRefiner.kt similarity index 65% rename from core/descriptors/src/org/jetbrains/kotlin/types/refinement/annotations.kt rename to core/compiler.common/src/org/jetbrains/kotlin/types/AbstractTypeRefiner.kt index 27d5c4b9e22..d562a8e0259 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/refinement/annotations.kt +++ b/core/compiler.common/src/org/jetbrains/kotlin/types/AbstractTypeRefiner.kt @@ -1,9 +1,11 @@ /* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ -package org.jetbrains.kotlin.types.refinement +package org.jetbrains.kotlin.types + +import org.jetbrains.kotlin.types.model.KotlinTypeMarker /** * This annotation marks part of internal compiler API related to type refinement. @@ -21,3 +23,16 @@ package org.jetbrains.kotlin.types.refinement @Retention(AnnotationRetention.BINARY) @Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY) annotation class TypeRefinement + + +abstract class AbstractTypeRefiner { + @TypeRefinement + abstract fun refineType(type: KotlinTypeMarker): KotlinTypeMarker + + object Default : AbstractTypeRefiner() { + @TypeRefinement + override fun refineType(type: KotlinTypeMarker): KotlinTypeMarker { + return type + } + } +} diff --git a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassMemberScope.kt b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassMemberScope.kt index aca593f5fbb..84b6243def0 100644 --- a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassMemberScope.kt +++ b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassMemberScope.kt @@ -54,7 +54,7 @@ import org.jetbrains.kotlin.storage.NotNullLazyValue import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.kotlin.types.TypeUtils import org.jetbrains.kotlin.types.checker.KotlinTypeChecker -import org.jetbrains.kotlin.types.refinement.TypeRefinement +import org.jetbrains.kotlin.types.TypeRefinement import org.jetbrains.kotlin.utils.SmartSet import org.jetbrains.kotlin.utils.addIfNotNull import org.jetbrains.kotlin.utils.ifEmpty diff --git a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/types/RawType.kt b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/types/RawType.kt index 1dcb57e070c..26cc016473f 100644 --- a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/types/RawType.kt +++ b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/types/RawType.kt @@ -29,7 +29,7 @@ import org.jetbrains.kotlin.resolve.scopes.MemberScope import org.jetbrains.kotlin.types.* import org.jetbrains.kotlin.types.checker.KotlinTypeChecker import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner -import org.jetbrains.kotlin.types.refinement.TypeRefinement +import org.jetbrains.kotlin.types.TypeRefinement import org.jetbrains.kotlin.types.typeUtil.builtIns class RawTypeImpl private constructor(lowerBound: SimpleType, upperBound: SimpleType, disableAssertion: Boolean) : diff --git a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/typeEnhancement/typeEnhancement.kt b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/typeEnhancement/typeEnhancement.kt index bc8341fb574..dcc6ac5e3d3 100644 --- a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/typeEnhancement/typeEnhancement.kt +++ b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/typeEnhancement/typeEnhancement.kt @@ -35,7 +35,7 @@ import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.resolve.constants.ConstantValue import org.jetbrains.kotlin.types.* import org.jetbrains.kotlin.types.checker.SimpleClassicTypeSystemContext -import org.jetbrains.kotlin.types.refinement.TypeRefinement +import org.jetbrains.kotlin.types.TypeRefinement import org.jetbrains.kotlin.types.typeUtil.createProjection import org.jetbrains.kotlin.types.typeUtil.isTypeParameter import org.jetbrains.kotlin.types.typeUtil.makeNotNullable diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/ScopesHolderForClass.kt b/core/descriptors/src/org/jetbrains/kotlin/descriptors/ScopesHolderForClass.kt index f476346ecc2..9f541715a73 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/ScopesHolderForClass.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/ScopesHolderForClass.kt @@ -10,7 +10,7 @@ import org.jetbrains.kotlin.resolve.scopes.MemberScope import org.jetbrains.kotlin.storage.StorageManager import org.jetbrains.kotlin.storage.getValue import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner -import org.jetbrains.kotlin.types.refinement.TypeRefinement +import org.jetbrains.kotlin.types.TypeRefinement class ScopesHolderForClass private constructor( private val classDescriptor: ClassDescriptor, diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/AbstractTypeAliasDescriptor.kt b/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/AbstractTypeAliasDescriptor.kt index 6fc90c256e7..08565623b66 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/AbstractTypeAliasDescriptor.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/AbstractTypeAliasDescriptor.kt @@ -25,7 +25,7 @@ import org.jetbrains.kotlin.resolve.scopes.MemberScope import org.jetbrains.kotlin.storage.StorageManager import org.jetbrains.kotlin.types.* import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner -import org.jetbrains.kotlin.types.refinement.TypeRefinement +import org.jetbrains.kotlin.types.TypeRefinement abstract class AbstractTypeAliasDescriptor( containingDeclaration: DeclarationDescriptor, diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.kt b/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.kt index 7b276e76a5a..c8765d07714 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.kt @@ -30,7 +30,7 @@ import org.jetbrains.kotlin.types.checker.KotlinTypeChecker import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner import org.jetbrains.kotlin.types.checker.REFINER_CAPABILITY import org.jetbrains.kotlin.types.checker.TypeRefinementSupport -import org.jetbrains.kotlin.types.refinement.TypeRefinement +import org.jetbrains.kotlin.types.TypeRefinement import org.jetbrains.kotlin.types.typeUtil.contains import org.jetbrains.kotlin.types.typeUtil.isAnyOrNullableAny import org.jetbrains.kotlin.types.typeUtil.makeNullable diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/SealedClassInheritorsProvider.kt b/core/descriptors/src/org/jetbrains/kotlin/resolve/SealedClassInheritorsProvider.kt index ee7805389f9..9cb3afccadc 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/SealedClassInheritorsProvider.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/SealedClassInheritorsProvider.kt @@ -13,7 +13,7 @@ import org.jetbrains.kotlin.incremental.components.NoLookupLocation import org.jetbrains.kotlin.resolve.descriptorUtil.parents import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter import org.jetbrains.kotlin.resolve.scopes.MemberScope -import org.jetbrains.kotlin.types.refinement.TypeRefinement +import org.jetbrains.kotlin.types.TypeRefinement abstract class SealedClassInheritorsProvider { /** diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/calls/inference/CapturedTypeConstructor.kt b/core/descriptors/src/org/jetbrains/kotlin/resolve/calls/inference/CapturedTypeConstructor.kt index d9469f312e3..8ad85c09cbb 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/calls/inference/CapturedTypeConstructor.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/calls/inference/CapturedTypeConstructor.kt @@ -28,7 +28,7 @@ import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner import org.jetbrains.kotlin.types.checker.NewCapturedTypeConstructor import org.jetbrains.kotlin.types.model.CapturedTypeConstructorMarker import org.jetbrains.kotlin.types.model.CapturedTypeMarker -import org.jetbrains.kotlin.types.refinement.TypeRefinement +import org.jetbrains.kotlin.types.TypeRefinement import org.jetbrains.kotlin.types.typeUtil.builtIns interface CapturedTypeConstructor : CapturedTypeConstructorMarker, TypeConstructor { diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/constants/IntegerLiteralTypeConstructor.kt b/core/descriptors/src/org/jetbrains/kotlin/resolve/constants/IntegerLiteralTypeConstructor.kt index 4a6122f19b7..8278f7643f5 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/constants/IntegerLiteralTypeConstructor.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/constants/IntegerLiteralTypeConstructor.kt @@ -12,7 +12,7 @@ import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor import org.jetbrains.kotlin.descriptors.annotations.Annotations import org.jetbrains.kotlin.types.* import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner -import org.jetbrains.kotlin.types.refinement.TypeRefinement +import org.jetbrains.kotlin.types.TypeRefinement class IntegerLiteralTypeConstructor : TypeConstructor { companion object { diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/constants/IntegerValueTypeConstructor.kt b/core/descriptors/src/org/jetbrains/kotlin/resolve/constants/IntegerValueTypeConstructor.kt index 0d8ca31a3f8..0cb36472f27 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/constants/IntegerValueTypeConstructor.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/constants/IntegerValueTypeConstructor.kt @@ -23,7 +23,7 @@ import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.kotlin.types.TypeConstructor import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner -import org.jetbrains.kotlin.types.refinement.TypeRefinement +import org.jetbrains.kotlin.types.TypeRefinement import java.util.* class IntegerValueTypeConstructor( diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/AbstractTypeConstructor.kt b/core/descriptors/src/org/jetbrains/kotlin/types/AbstractTypeConstructor.kt index 1d1a82ebf19..84a1a5f31f7 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/AbstractTypeConstructor.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/types/AbstractTypeConstructor.kt @@ -18,11 +18,9 @@ package org.jetbrains.kotlin.types import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.descriptors.* -import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.storage.StorageManager import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner import org.jetbrains.kotlin.types.checker.refineTypes -import org.jetbrains.kotlin.types.refinement.TypeRefinement abstract class AbstractTypeConstructor(storageManager: StorageManager) : ClassifierBasedTypeConstructor() { override fun getSupertypes() = supertypes().supertypesWithoutCycles diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/ErrorType.kt b/core/descriptors/src/org/jetbrains/kotlin/types/ErrorType.kt index da4301118e9..9ff6c8c1205 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/ErrorType.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/types/ErrorType.kt @@ -19,7 +19,6 @@ package org.jetbrains.kotlin.types import org.jetbrains.kotlin.descriptors.annotations.Annotations import org.jetbrains.kotlin.resolve.scopes.MemberScope import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner -import org.jetbrains.kotlin.types.refinement.TypeRefinement open class ErrorType @JvmOverloads internal constructor( override val constructor: TypeConstructor, diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/ErrorUtils.java b/core/descriptors/src/org/jetbrains/kotlin/types/ErrorUtils.java index 9ac55d4ee28..95493caf85e 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/ErrorUtils.java +++ b/core/descriptors/src/org/jetbrains/kotlin/types/ErrorUtils.java @@ -37,7 +37,6 @@ import org.jetbrains.kotlin.resolve.scopes.MemberScope; import org.jetbrains.kotlin.storage.LockBasedStorageManager; import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner; import org.jetbrains.kotlin.types.error.ErrorSimpleFunctionDescriptorImpl; -import org.jetbrains.kotlin.types.refinement.TypeRefinement; import org.jetbrains.kotlin.utils.Printer; import java.util.Collection; diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/FunctionPlaceholders.kt b/core/descriptors/src/org/jetbrains/kotlin/types/FunctionPlaceholders.kt index 0579da2b481..1bdc959f9dd 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/FunctionPlaceholders.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/types/FunctionPlaceholders.kt @@ -20,7 +20,6 @@ import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.descriptors.ClassifierDescriptor import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner -import org.jetbrains.kotlin.types.refinement.TypeRefinement class FunctionPlaceholders(private val builtIns: KotlinBuiltIns) { fun createFunctionPlaceholderType( diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/IntersectionTypeConstructor.kt b/core/descriptors/src/org/jetbrains/kotlin/types/IntersectionTypeConstructor.kt index bc7d58c0fbe..27c6390593f 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/IntersectionTypeConstructor.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/types/IntersectionTypeConstructor.kt @@ -24,7 +24,6 @@ import org.jetbrains.kotlin.resolve.scopes.MemberScope import org.jetbrains.kotlin.resolve.scopes.TypeIntersectionScope import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner import org.jetbrains.kotlin.types.model.IntersectionTypeConstructorMarker -import org.jetbrains.kotlin.types.refinement.TypeRefinement import java.util.* class IntersectionTypeConstructor(typesToIntersect: Collection) : TypeConstructor, IntersectionTypeConstructorMarker { diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/KotlinType.kt b/core/descriptors/src/org/jetbrains/kotlin/types/KotlinType.kt index c64601745a4..ae46ab60409 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/KotlinType.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/types/KotlinType.kt @@ -27,7 +27,6 @@ import org.jetbrains.kotlin.types.model.FlexibleTypeMarker import org.jetbrains.kotlin.types.model.KotlinTypeMarker import org.jetbrains.kotlin.types.model.SimpleTypeMarker import org.jetbrains.kotlin.types.model.TypeArgumentListMarker -import org.jetbrains.kotlin.types.refinement.TypeRefinement /** * [KotlinType] has only two direct subclasses: [WrappedType] and [UnwrappedType]. diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/KotlinTypeFactory.kt b/core/descriptors/src/org/jetbrains/kotlin/types/KotlinTypeFactory.kt index 0fec61ef099..97ae4288ae0 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/KotlinTypeFactory.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/types/KotlinTypeFactory.kt @@ -28,7 +28,6 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.getKotlinTypeRefiner import org.jetbrains.kotlin.resolve.descriptorUtil.module import org.jetbrains.kotlin.resolve.scopes.MemberScope import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner -import org.jetbrains.kotlin.types.refinement.TypeRefinement typealias RefinedTypeFactory = (KotlinTypeRefiner) -> SimpleType? diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/KotlinTypeRefinerImpl.kt b/core/descriptors/src/org/jetbrains/kotlin/types/KotlinTypeRefinerImpl.kt index c848d434300..eeb543bfb0c 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/KotlinTypeRefinerImpl.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/types/KotlinTypeRefinerImpl.kt @@ -16,7 +16,7 @@ import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner import org.jetbrains.kotlin.types.checker.NewCapturedTypeConstructor import org.jetbrains.kotlin.types.checker.REFINER_CAPABILITY import org.jetbrains.kotlin.types.checker.TypeRefinementSupport -import org.jetbrains.kotlin.types.refinement.TypeRefinement +import org.jetbrains.kotlin.types.model.KotlinTypeMarker import org.jetbrains.kotlin.utils.DFS import org.jetbrains.kotlin.utils.addToStdlib.safeAs @@ -74,7 +74,8 @@ class KotlinTypeRefinerImpl( * field `x` in it's member scope */ @TypeRefinement - override fun refineType(type: KotlinType): KotlinType { + override fun refineType(type: KotlinTypeMarker): KotlinType { + require(type is KotlinType) return when { !type.needsRefinement() -> type type.canBeCached() -> { diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/SpecialTypes.kt b/core/descriptors/src/org/jetbrains/kotlin/types/SpecialTypes.kt index 24b64969f43..70a8c1c10b5 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/SpecialTypes.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/types/SpecialTypes.kt @@ -26,7 +26,6 @@ import org.jetbrains.kotlin.types.checker.NewCapturedType import org.jetbrains.kotlin.types.checker.NewTypeVariableConstructor import org.jetbrains.kotlin.types.checker.NullabilityChecker import org.jetbrains.kotlin.types.model.DefinitelyNotNullTypeMarker -import org.jetbrains.kotlin.types.refinement.TypeRefinement abstract class DelegatingSimpleType : SimpleType() { protected abstract val delegate: SimpleType diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/StarProjectionImpl.kt b/core/descriptors/src/org/jetbrains/kotlin/types/StarProjectionImpl.kt index b0b75d84a04..a004b1c9835 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/StarProjectionImpl.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/types/StarProjectionImpl.kt @@ -22,7 +22,6 @@ import org.jetbrains.kotlin.descriptors.FunctionDescriptor import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner -import org.jetbrains.kotlin.types.refinement.TypeRefinement class StarProjectionImpl( private val typeParameter: TypeParameterDescriptor diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/StubTypes.kt b/core/descriptors/src/org/jetbrains/kotlin/types/StubTypes.kt index 6bf465bbbd0..d51a85b5fa2 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/StubTypes.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/types/StubTypes.kt @@ -8,7 +8,6 @@ package org.jetbrains.kotlin.types import org.jetbrains.kotlin.descriptors.annotations.Annotations import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner import org.jetbrains.kotlin.types.model.StubTypeMarker -import org.jetbrains.kotlin.types.refinement.TypeRefinement class StubTypeForBuilderInference( originalTypeVariable: TypeConstructor, @@ -77,4 +76,4 @@ abstract class AbstractStubType(val originalTypeVariable: TypeConstructor, overr fun createConstructor(originalTypeVariable: TypeConstructor) = ErrorUtils.createErrorTypeConstructor("Constructor for stub type: $originalTypeVariable") } -} \ No newline at end of file +} diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/TypeConstructor.java b/core/descriptors/src/org/jetbrains/kotlin/types/TypeConstructor.java index 9b08a4d2b9c..25aa0c168be 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/TypeConstructor.java +++ b/core/descriptors/src/org/jetbrains/kotlin/types/TypeConstructor.java @@ -24,7 +24,6 @@ import org.jetbrains.kotlin.descriptors.ClassifierDescriptor; import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor; import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner; import org.jetbrains.kotlin.types.model.TypeConstructorMarker; -import org.jetbrains.kotlin.types.refinement.TypeRefinement; import java.util.Collection; import java.util.List; diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/TypeProjection.java b/core/descriptors/src/org/jetbrains/kotlin/types/TypeProjection.java index 13480f55d69..cd41c4bf4ad 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/TypeProjection.java +++ b/core/descriptors/src/org/jetbrains/kotlin/types/TypeProjection.java @@ -19,7 +19,6 @@ package org.jetbrains.kotlin.types; import org.jetbrains.annotations.NotNull; import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner; import org.jetbrains.kotlin.types.model.TypeArgumentMarker; -import org.jetbrains.kotlin.types.refinement.TypeRefinement; public interface TypeProjection extends TypeArgumentMarker { @NotNull diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/TypeProjectionImpl.java b/core/descriptors/src/org/jetbrains/kotlin/types/TypeProjectionImpl.java index e32aedf5adf..f22be7832cd 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/TypeProjectionImpl.java +++ b/core/descriptors/src/org/jetbrains/kotlin/types/TypeProjectionImpl.java @@ -18,7 +18,6 @@ package org.jetbrains.kotlin.types; import org.jetbrains.annotations.NotNull; import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner; -import org.jetbrains.kotlin.types.refinement.TypeRefinement; public class TypeProjectionImpl extends TypeProjectionBase { private final Variance projection; diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/TypeUtils.java b/core/descriptors/src/org/jetbrains/kotlin/types/TypeUtils.java index 6c29ca117d8..32c4304f4ef 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/TypeUtils.java +++ b/core/descriptors/src/org/jetbrains/kotlin/types/TypeUtils.java @@ -25,7 +25,6 @@ import org.jetbrains.kotlin.resolve.scopes.MemberScope; import org.jetbrains.kotlin.types.checker.KotlinTypeChecker; import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner; import org.jetbrains.kotlin.types.checker.NewTypeVariableConstructor; -import org.jetbrains.kotlin.types.refinement.TypeRefinement; import org.jetbrains.kotlin.utils.SmartSet; import java.util.*; diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/TypeWithEnhancement.kt b/core/descriptors/src/org/jetbrains/kotlin/types/TypeWithEnhancement.kt index 776d77e01e2..9a41986efd7 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/TypeWithEnhancement.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/types/TypeWithEnhancement.kt @@ -20,7 +20,6 @@ import org.jetbrains.kotlin.descriptors.annotations.Annotations import org.jetbrains.kotlin.renderer.DescriptorRenderer import org.jetbrains.kotlin.renderer.DescriptorRendererOptions import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner -import org.jetbrains.kotlin.types.refinement.TypeRefinement interface TypeWithEnhancement { val origin: UnwrappedType diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/checker/ClassicTypeCheckerState.kt b/core/descriptors/src/org/jetbrains/kotlin/types/checker/ClassicTypeCheckerState.kt index c0973b0eefb..8d5fc687e2e 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/checker/ClassicTypeCheckerState.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/types/checker/ClassicTypeCheckerState.kt @@ -19,28 +19,15 @@ package org.jetbrains.kotlin.types.checker import org.jetbrains.kotlin.types.* import org.jetbrains.kotlin.types.model.KotlinTypeMarker import org.jetbrains.kotlin.types.model.SimpleTypeMarker -import org.jetbrains.kotlin.types.refinement.TypeRefinement open class ClassicTypeCheckerState( val errorTypeEqualsToAnything: Boolean, val stubTypeEqualsToAnything: Boolean = true, val allowedTypeVariable: Boolean = true, - val kotlinTypeRefiner: KotlinTypeRefiner = KotlinTypeRefiner.Default, - val kotlinTypePreparator: KotlinTypePreparator = KotlinTypePreparator.Default, + override val kotlinTypeRefiner: KotlinTypeRefiner = KotlinTypeRefiner.Default, + override val kotlinTypePreparator: KotlinTypePreparator = KotlinTypePreparator.Default, override val typeSystemContext: ClassicTypeSystemContext = SimpleClassicTypeSystemContext ) : TypeCheckerState() { - - @OptIn(TypeRefinement::class) - override fun refineType(type: KotlinTypeMarker): KotlinTypeMarker { - require(type is KotlinType, type::errorMessage) - return kotlinTypeRefiner.refineType(type) - } - - override fun prepareType(type: KotlinTypeMarker): KotlinTypeMarker { - require(type is KotlinType, type::errorMessage) - return kotlinTypePreparator.prepareType(type.unwrap()) - } - override val isErrorTypeEqualsToAnything: Boolean get() = errorTypeEqualsToAnything diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/checker/KotlinTypePreparator.kt b/core/descriptors/src/org/jetbrains/kotlin/types/checker/KotlinTypePreparator.kt index bd23141d910..ed38dab1eac 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/checker/KotlinTypePreparator.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/types/checker/KotlinTypePreparator.kt @@ -14,7 +14,7 @@ import org.jetbrains.kotlin.types.model.KotlinTypeMarker import org.jetbrains.kotlin.types.typeUtil.makeNullable @DefaultImplementation(impl = KotlinTypePreparator.Default::class) -abstract class KotlinTypePreparator : AbstractTypePreparator { +abstract class KotlinTypePreparator : AbstractTypePreparator() { private fun transformToNewType(type: SimpleType): SimpleType { when (val constructor = type.constructor) { // Type itself can be just SimpleTypeImpl, not CapturedType. see KT-16147 @@ -72,4 +72,4 @@ abstract class KotlinTypePreparator : AbstractTypePreparator { } object Default : KotlinTypePreparator() -} \ No newline at end of file +} diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/checker/KotlinTypeRefiner.kt b/core/descriptors/src/org/jetbrains/kotlin/types/checker/KotlinTypeRefiner.kt index 1b8d331e744..d3edcd3b2b5 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/checker/KotlinTypeRefiner.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/types/checker/KotlinTypeRefiner.kt @@ -9,14 +9,16 @@ import org.jetbrains.kotlin.container.DefaultImplementation import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.resolve.scopes.MemberScope +import org.jetbrains.kotlin.types.AbstractTypeRefiner import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.kotlin.types.TypeConstructor -import org.jetbrains.kotlin.types.refinement.TypeRefinement +import org.jetbrains.kotlin.types.model.KotlinTypeMarker +import org.jetbrains.kotlin.types.TypeRefinement @DefaultImplementation(impl = KotlinTypeRefiner.Default::class) -abstract class KotlinTypeRefiner { +abstract class KotlinTypeRefiner : AbstractTypeRefiner() { @TypeRefinement - abstract fun refineType(type: KotlinType): KotlinType + abstract override fun refineType(type: KotlinTypeMarker): KotlinType @TypeRefinement abstract fun refineSupertypes(classDescriptor: ClassDescriptor): Collection @@ -38,7 +40,7 @@ abstract class KotlinTypeRefiner { object Default : KotlinTypeRefiner() { @TypeRefinement - override fun refineType(type: KotlinType): KotlinType = type + override fun refineType(type: KotlinTypeMarker): KotlinType = type as KotlinType @TypeRefinement override fun refineSupertypes(classDescriptor: ClassDescriptor): Collection { diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/checker/NewCapturedType.kt b/core/descriptors/src/org/jetbrains/kotlin/types/checker/NewCapturedType.kt index a575683ed5a..b7ec1402762 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/checker/NewCapturedType.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/types/checker/NewCapturedType.kt @@ -26,7 +26,7 @@ import org.jetbrains.kotlin.types.* import org.jetbrains.kotlin.types.FlexibleTypeBoundsChecker.areTypesMayBeLowerAndUpperBoundsOfSameFlexibleTypeByMutability import org.jetbrains.kotlin.types.model.CaptureStatus import org.jetbrains.kotlin.types.model.CapturedTypeMarker -import org.jetbrains.kotlin.types.refinement.TypeRefinement +import org.jetbrains.kotlin.types.TypeRefinement import org.jetbrains.kotlin.types.typeUtil.asTypeProjection import org.jetbrains.kotlin.types.typeUtil.builtIns diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/dynamicTypes.kt b/core/descriptors/src/org/jetbrains/kotlin/types/dynamicTypes.kt index 7722549a206..54fdd815a4c 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/dynamicTypes.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/types/dynamicTypes.kt @@ -24,7 +24,6 @@ import org.jetbrains.kotlin.renderer.DescriptorRenderer import org.jetbrains.kotlin.renderer.DescriptorRendererOptions import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner import org.jetbrains.kotlin.types.model.DynamicTypeMarker -import org.jetbrains.kotlin.types.refinement.TypeRefinement import org.jetbrains.kotlin.types.typeUtil.builtIns @DefaultImplementation(impl = DynamicTypesSettings::class) diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/flexibleTypes.kt b/core/descriptors/src/org/jetbrains/kotlin/types/flexibleTypes.kt index ebd7b37c183..02239334c3f 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/flexibleTypes.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/types/flexibleTypes.kt @@ -26,7 +26,7 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe import org.jetbrains.kotlin.types.checker.ErrorTypesAreEqualToAnything import org.jetbrains.kotlin.types.checker.KotlinTypeChecker import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner -import org.jetbrains.kotlin.types.refinement.TypeRefinement +import org.jetbrains.kotlin.types.TypeRefinement import org.jetbrains.kotlin.types.typeUtil.builtIns fun KotlinType.isFlexible(): Boolean = unwrap() is FlexibleType diff --git a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedClassDescriptor.kt b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedClassDescriptor.kt index 8ddaeabcbf3..7969c27c3cc 100644 --- a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedClassDescriptor.kt +++ b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedClassDescriptor.kt @@ -26,7 +26,7 @@ import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.kotlin.types.SimpleType import org.jetbrains.kotlin.types.TypeConstructor import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner -import org.jetbrains.kotlin.types.refinement.TypeRefinement +import org.jetbrains.kotlin.types.TypeRefinement import org.jetbrains.kotlin.utils.addToStdlib.flatMapToNullable import java.util.*