From e69e45e2a6fd2e59d42c8754b187f8061578a44c Mon Sep 17 00:00:00 2001 From: Pavel Kirpichenkov Date: Thu, 19 Dec 2019 12:14:35 +0300 Subject: [PATCH] [NI] Remove direcion calculator from variable fixation Force constraint system completer to always fix variable with unknown position. This makes inferred type for in parameters less specific, but OI infers to subtype in such cases, so NI won't infer to less specific types than before. --- .../components/KotlinConstraintSystemCompleter.kt | 7 ++----- .../diagnostics/tests/inference/completion/basic.kt | 5 ++--- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/inference/components/KotlinConstraintSystemCompleter.kt b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/inference/components/KotlinConstraintSystemCompleter.kt index 8f8d1b941c3..08e66cdf0ec 100644 --- a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/inference/components/KotlinConstraintSystemCompleter.kt +++ b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/inference/components/KotlinConstraintSystemCompleter.kt @@ -89,7 +89,7 @@ class KotlinConstraintSystemCompleter( val variableWithConstraints = c.notFixedTypeVariables.getValue(variableForFixation.variable) if (variableForFixation.hasProperConstraint) - fixVariable(c, topLevelType, variableWithConstraints, postponedKtPrimitives, topLevelAtoms) + fixVariable(c, variableWithConstraints, topLevelAtoms) else processVariableWhenNotEnoughInformation(c, variableWithConstraints, topLevelAtoms) @@ -206,13 +206,10 @@ class KotlinConstraintSystemCompleter( private fun fixVariable( c: Context, - topLevelType: UnwrappedType, variableWithConstraints: VariableWithConstraints, - postponedResolveKtPrimitives: List, topLevelAtoms: List ) { - val direction = TypeVariableDirectionCalculator(c, postponedResolveKtPrimitives, topLevelType).getDirection(variableWithConstraints) - fixVariable(c, variableWithConstraints, direction, topLevelAtoms) + fixVariable(c, variableWithConstraints, TypeVariableDirectionCalculator.ResolveDirection.UNKNOWN, topLevelAtoms) } fun fixVariable( diff --git a/compiler/testData/diagnostics/tests/inference/completion/basic.kt b/compiler/testData/diagnostics/tests/inference/completion/basic.kt index a0ee120c7c9..1202d01e319 100644 --- a/compiler/testData/diagnostics/tests/inference/completion/basic.kt +++ b/compiler/testData/diagnostics/tests/inference/completion/basic.kt @@ -57,14 +57,13 @@ fun test7(cls: Cls) { } fun test8(cls: Cls) { - // TODO - id( + id( ")!>wrapIn(cls) ) } fun test9(cls: Cls) { id( - ")!>InB(cls) + ")!>InB(cls) ) }