[NI] Get rid of PostponedArgumentInputTypesResolver.Context

This commit is contained in:
Dmitriy Novozhilov
2020-08-26 12:36:18 +03:00
parent 970a2581a1
commit 11e8552861
5 changed files with 7 additions and 9 deletions
@@ -33,5 +33,4 @@ interface NewConstraintSystem {
fun asConstraintSystemCompleterContext(): ConstraintSystemCompletionContext fun asConstraintSystemCompleterContext(): ConstraintSystemCompletionContext
fun asPostponedArgumentsAnalyzerContext(): PostponedArgumentsAnalyzerContext fun asPostponedArgumentsAnalyzerContext(): PostponedArgumentsAnalyzerContext
fun asPostponedArgumentInputTypesResolverContext(): PostponedArgumentInputTypesResolver.Context
} }
@@ -30,5 +30,5 @@ interface ConstraintSystemCompletionContext : VariableFixationFinder.Context, Re
fun fixVariable(variable: TypeVariableMarker, resultType: KotlinTypeMarker, atom: ResolvedAtom?) fun fixVariable(variable: TypeVariableMarker, resultType: KotlinTypeMarker, atom: ResolvedAtom?)
fun asPostponedArgumentInputTypesResolverContext(): PostponedArgumentInputTypesResolver.Context fun asConstraintSystemCompletionContext(): ConstraintSystemCompletionContext
} }
@@ -89,7 +89,7 @@ class KotlinConstraintSystemCompleter(
// Stage 2: collect parameter types for postponed arguments // Stage 2: collect parameter types for postponed arguments
val wasBuiltNewExpectedTypeForSomeArgument = postponedArgumentInputTypesResolver.collectParameterTypesAndBuildNewExpectedTypes( val wasBuiltNewExpectedTypeForSomeArgument = postponedArgumentInputTypesResolver.collectParameterTypesAndBuildNewExpectedTypes(
asPostponedArgumentInputTypesResolverContext(), postponedArgumentsWithRevisableType, completionMode, dependencyProvider asConstraintSystemCompletionContext(), postponedArgumentsWithRevisableType, completionMode, dependencyProvider
) )
if (wasBuiltNewExpectedTypeForSomeArgument) if (wasBuiltNewExpectedTypeForSomeArgument)
@@ -99,7 +99,7 @@ class KotlinConstraintSystemCompleter(
// Stage 3: fix variables for parameter types of all postponed arguments // Stage 3: fix variables for parameter types of all postponed arguments
for (argument in postponedArguments) { for (argument in postponedArguments) {
val wasFixedSomeVariable = postponedArgumentInputTypesResolver.fixNextReadyVariableForParameterTypeIfNeeded( val wasFixedSomeVariable = postponedArgumentInputTypesResolver.fixNextReadyVariableForParameterTypeIfNeeded(
asPostponedArgumentInputTypesResolverContext(), asConstraintSystemCompletionContext(),
argument, argument,
postponedArguments, postponedArguments,
topLevelType, topLevelType,
@@ -114,7 +114,7 @@ class KotlinConstraintSystemCompleter(
// Stage 4: create atoms with revised expected types if needed // Stage 4: create atoms with revised expected types if needed
for (argument in postponedArgumentsWithRevisableType) { for (argument in postponedArgumentsWithRevisableType) {
val wasTransformedSomeArgument = postponedArgumentInputTypesResolver.transformToAtomWithNewFunctionalExpectedType( val wasTransformedSomeArgument = postponedArgumentInputTypesResolver.transformToAtomWithNewFunctionalExpectedType(
asPostponedArgumentInputTypesResolverContext(), argument, diagnosticsHolder asConstraintSystemCompletionContext(), argument, diagnosticsHolder
) )
if (wasTransformedSomeArgument) if (wasTransformedSomeArgument)
@@ -16,12 +16,12 @@ import org.jetbrains.kotlin.types.typeUtil.builtIns
import org.jetbrains.kotlin.utils.SmartSet import org.jetbrains.kotlin.utils.SmartSet
import org.jetbrains.kotlin.utils.addToStdlib.safeAs import org.jetbrains.kotlin.utils.addToStdlib.safeAs
private typealias Context = ConstraintSystemCompletionContext
class PostponedArgumentInputTypesResolver( class PostponedArgumentInputTypesResolver(
private val resultTypeResolver: ResultTypeResolver, private val resultTypeResolver: ResultTypeResolver,
private val variableFixationFinder: VariableFixationFinder private val variableFixationFinder: VariableFixationFinder
) { ) {
interface Context : ConstraintSystemCompletionContext
private class ParameterTypesInfo( private class ParameterTypesInfo(
val parametersFromDeclaration: List<UnwrappedType?>?, val parametersFromDeclaration: List<UnwrappedType?>?,
val parametersFromDeclarationOfRelatedLambdas: Set<List<UnwrappedType?>>?, val parametersFromDeclarationOfRelatedLambdas: Set<List<UnwrappedType?>>?,
@@ -28,7 +28,6 @@ class NewConstraintSystemImpl(
ConstraintInjector.Context, ConstraintInjector.Context,
ResultTypeResolver.Context, ResultTypeResolver.Context,
ConstraintSystemCompletionContext, ConstraintSystemCompletionContext,
PostponedArgumentInputTypesResolver.Context,
PostponedArgumentsAnalyzerContext { PostponedArgumentsAnalyzerContext {
private val storage = MutableConstraintStorage() private val storage = MutableConstraintStorage()
private var state = State.BUILDING private var state = State.BUILDING
@@ -85,7 +84,7 @@ class NewConstraintSystemImpl(
override fun asPostponedArgumentsAnalyzerContext() = apply { checkState(State.BUILDING) } override fun asPostponedArgumentsAnalyzerContext() = apply { checkState(State.BUILDING) }
override fun asPostponedArgumentInputTypesResolverContext() = apply { checkState(State.BUILDING) } override fun asConstraintSystemCompletionContext(): ConstraintSystemCompletionContext = apply { checkState(State.BUILDING) }
// ConstraintSystemOperation // ConstraintSystemOperation
override fun registerVariable(variable: TypeVariableMarker) { override fun registerVariable(variable: TypeVariableMarker) {