From 64b10d827d3d9f91508df5ddfec36ba93c31ec6d Mon Sep 17 00:00:00 2001 From: Mikhail Zarechenskiy Date: Fri, 4 May 2018 17:03:08 +0300 Subject: [PATCH] [NI] Refactoring: rename NonFixedType -> StubType --- .../resolve/calls/inference/CoroutineInferenceSession.kt | 4 ++-- .../resolve/calls/tower/KotlinResolutionCallbacksImpl.kt | 2 +- .../kotlin/resolve/calls/components/ExternalComponents.kt | 5 ++--- .../calls/components/PostponedArgumentsAnalyzer.kt | 6 +++--- .../kotlin/resolve/calls/inference/InferenceUtils.kt | 3 +-- .../calls/inference/model/NewConstraintSystemImpl.kt | 8 ++++---- .../kotlin/types/{NonFixedType.kt => StubType.kt} | 4 ++-- .../kotlin/types/checker/NewKotlinTypeChecker.kt | 2 +- 8 files changed, 16 insertions(+), 18 deletions(-) rename core/descriptors/src/org/jetbrains/kotlin/types/{NonFixedType.kt => StubType.kt} (92%) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/inference/CoroutineInferenceSession.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/inference/CoroutineInferenceSession.kt index c25790b797b..369fb3685f1 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/inference/CoroutineInferenceSession.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/inference/CoroutineInferenceSession.kt @@ -25,7 +25,7 @@ import org.jetbrains.kotlin.resolve.calls.model.KotlinCallComponents import org.jetbrains.kotlin.resolve.calls.model.KotlinResolutionCandidate import org.jetbrains.kotlin.resolve.calls.model.ResolvedLambdaAtom import org.jetbrains.kotlin.resolve.calls.tower.* -import org.jetbrains.kotlin.types.NonFixedType +import org.jetbrains.kotlin.types.StubType import org.jetbrains.kotlin.types.TypeConstructor import org.jetbrains.kotlin.types.UnwrappedType import org.jetbrains.kotlin.types.expressions.DoubleColonExpressionResolver @@ -38,7 +38,7 @@ class CoroutineInferenceSession( callComponents: KotlinCallComponents, builtIns: KotlinBuiltIns, private val topLevelCallContext: BasicCallResolutionContext, - private val stubsForPostponedVariables: Map, + private val stubsForPostponedVariables: Map, private val trace: BindingTrace, private val kotlinToResolvedCallTransformer: KotlinToResolvedCallTransformer, private val expressionTypingServices: ExpressionTypingServices, 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 8f2e65c888e..88d0ab8eca5 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 @@ -86,7 +86,7 @@ class KotlinResolutionCallbacksImpl( receiverType: UnwrappedType?, parameters: List, expectedReturnType: UnwrappedType?, - stubsForPostponedVariables: Map + stubsForPostponedVariables: Map ): Pair, InferenceSession?> { val psiCallArgument = lambdaArgument.psiCallArgument as PSIFunctionKotlinCallArgument val outerCallContext = psiCallArgument.outerCallContext diff --git a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/ExternalComponents.kt b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/ExternalComponents.kt index f8ca23eb94b..c9c482bec5b 100644 --- a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/ExternalComponents.kt +++ b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/ExternalComponents.kt @@ -12,8 +12,7 @@ import org.jetbrains.kotlin.resolve.calls.inference.model.NewTypeVariable import org.jetbrains.kotlin.resolve.calls.model.* import org.jetbrains.kotlin.resolve.calls.tower.ImplicitScopeTower import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValueWithSmartCastInfo -import org.jetbrains.kotlin.types.KotlinType -import org.jetbrains.kotlin.types.NonFixedType +import org.jetbrains.kotlin.types.StubType import org.jetbrains.kotlin.types.UnwrappedType // stateless component @@ -37,7 +36,7 @@ interface KotlinResolutionCallbacks { receiverType: UnwrappedType?, parameters: List, expectedReturnType: UnwrappedType?, // null means, that return type is not proper i.e. it depends on some type variables - stubsForPostponedVariables: Map + stubsForPostponedVariables: Map ): Pair, InferenceSession?> fun bindStubResolvedCallForCandidate(candidate: ResolvedCallAtom) diff --git a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/PostponedArgumentsAnalyzer.kt b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/PostponedArgumentsAnalyzer.kt index fff5cf29e5d..14dba211d4e 100644 --- a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/PostponedArgumentsAnalyzer.kt +++ b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/PostponedArgumentsAnalyzer.kt @@ -10,7 +10,7 @@ import org.jetbrains.kotlin.resolve.calls.inference.addSubsystemFromArgument import org.jetbrains.kotlin.resolve.calls.inference.components.NewTypeSubstitutor import org.jetbrains.kotlin.resolve.calls.inference.model.* import org.jetbrains.kotlin.resolve.calls.model.* -import org.jetbrains.kotlin.types.NonFixedType +import org.jetbrains.kotlin.types.StubType import org.jetbrains.kotlin.types.TypeConstructor import org.jetbrains.kotlin.types.UnwrappedType import org.jetbrains.kotlin.types.typeUtil.builtIns @@ -19,8 +19,8 @@ class PostponedArgumentsAnalyzer( private val callableReferenceResolver: CallableReferenceResolver ) { interface Context { - fun buildCurrentSubstitutor(additionalBindings: Map): NewTypeSubstitutor - fun bindingStubsForPostponedVariables(): Map + fun buildCurrentSubstitutor(additionalBindings: Map): NewTypeSubstitutor + fun bindingStubsForPostponedVariables(): Map // type can be proper if it not contains not fixed type variables fun canBeProper(type: UnwrappedType): Boolean diff --git a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/inference/InferenceUtils.kt b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/inference/InferenceUtils.kt index 6957dd550a8..0c5baeca6d7 100644 --- a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/inference/InferenceUtils.kt +++ b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/inference/InferenceUtils.kt @@ -20,11 +20,10 @@ import org.jetbrains.kotlin.descriptors.CallableDescriptor import org.jetbrains.kotlin.resolve.calls.inference.components.NewTypeSubstitutor import org.jetbrains.kotlin.resolve.calls.inference.components.NewTypeSubstitutorByConstructorMap import org.jetbrains.kotlin.resolve.calls.inference.model.ConstraintStorage -import org.jetbrains.kotlin.resolve.calls.inference.model.NewTypeVariable import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns import org.jetbrains.kotlin.types.* -fun ConstraintStorage.buildCurrentSubstitutor(additionalBindings: Map): NewTypeSubstitutorByConstructorMap = +fun ConstraintStorage.buildCurrentSubstitutor(additionalBindings: Map): NewTypeSubstitutorByConstructorMap = NewTypeSubstitutorByConstructorMap(fixedTypeVariables.entries.associate { it.key to it.value } + additionalBindings) fun ConstraintStorage.buildResultingSubstitutor(): NewTypeSubstitutor { diff --git a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/inference/model/NewConstraintSystemImpl.kt b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/inference/model/NewConstraintSystemImpl.kt index 6ca035b69ed..58125615b85 100644 --- a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/inference/model/NewConstraintSystemImpl.kt +++ b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/inference/model/NewConstraintSystemImpl.kt @@ -13,7 +13,7 @@ import org.jetbrains.kotlin.resolve.calls.inference.components.KotlinConstraintS import org.jetbrains.kotlin.resolve.calls.inference.components.NewTypeSubstitutor import org.jetbrains.kotlin.resolve.calls.inference.components.ResultTypeResolver import org.jetbrains.kotlin.resolve.calls.model.KotlinCallDiagnostic -import org.jetbrains.kotlin.types.NonFixedType +import org.jetbrains.kotlin.types.StubType import org.jetbrains.kotlin.types.TypeConstructor import org.jetbrains.kotlin.types.UnwrappedType import org.jetbrains.kotlin.types.typeUtil.contains @@ -273,14 +273,14 @@ class NewConstraintSystemImpl( return buildCurrentSubstitutor(emptyMap()) } - override fun buildCurrentSubstitutor(additionalBindings: Map): NewTypeSubstitutor { + override fun buildCurrentSubstitutor(additionalBindings: Map): NewTypeSubstitutor { checkState(State.BUILDING, State.COMPLETION) return storage.buildCurrentSubstitutor(additionalBindings) } - override fun bindingStubsForPostponedVariables(): Map { + override fun bindingStubsForPostponedVariables(): Map { checkState(State.BUILDING, State.COMPLETION) - return storage.postponedTypeVariables.associate { it to NonFixedType(it.freshTypeConstructor, it.defaultType.isMarkedNullable) } + return storage.postponedTypeVariables.associate { it to StubType(it.freshTypeConstructor, it.defaultType.isMarkedNullable) } } override fun currentStorage(): ConstraintStorage { diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/NonFixedType.kt b/core/descriptors/src/org/jetbrains/kotlin/types/StubType.kt similarity index 92% rename from core/descriptors/src/org/jetbrains/kotlin/types/NonFixedType.kt rename to core/descriptors/src/org/jetbrains/kotlin/types/StubType.kt index 931245e01a1..f822bd2364a 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/NonFixedType.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/types/StubType.kt @@ -9,7 +9,7 @@ import org.jetbrains.kotlin.descriptors.annotations.Annotations import org.jetbrains.kotlin.resolve.scopes.MemberScope // This type is used as a stub for postponed type variables, which are important for coroutine inference -class NonFixedType( +class StubType( private val originalTypeVariable: TypeConstructor, override val isMarkedNullable: Boolean, override val constructor: TypeConstructor = @@ -32,7 +32,7 @@ class NonFixedType( return if (newNullability == isMarkedNullable) this else - NonFixedType(originalTypeVariable, newNullability, constructor, memberScope) + StubType(originalTypeVariable, newNullability, constructor, memberScope) } override fun toString(): String { diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/checker/NewKotlinTypeChecker.kt b/core/descriptors/src/org/jetbrains/kotlin/types/checker/NewKotlinTypeChecker.kt index b02f101b8c3..ad25c01a2d0 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/checker/NewKotlinTypeChecker.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/types/checker/NewKotlinTypeChecker.kt @@ -186,7 +186,7 @@ object NewKotlinTypeChecker : KotlinTypeChecker { return StrictEqualityTypeChecker.strictEqualTypes(subType.makeNullableAsSpecified(false), superType.makeNullableAsSpecified(false)) } - if (subType is NonFixedType || superType is NonFixedType) return true + if (subType is StubType || superType is StubType) return true if (superType is NewCapturedType && superType.lowerType != null) { when (getLowerCapturedTypePolicy(subType, superType)) {