[FIR] Use default language settings in inference components
Without settings common inference components require additional parameters to be passed explicitly from components not shared between FIR and FE10. Proper configuration can be postponed in FIR, defaults are good enough for now. ^KT-42080 In progress
This commit is contained in:
-14
@@ -1,14 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2020 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.resolve.calls.inference
|
||||
|
||||
import org.jetbrains.kotlin.config.LanguageFeature
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||
|
||||
class InferenceCompatibilityCheckerImpl(val languageVersionSettings: LanguageVersionSettings) : InferenceCompatibilityChecker {
|
||||
override val isCompatibilityModeEnabled: Boolean
|
||||
get() = languageVersionSettings.getFeatureSupport(LanguageFeature.InferenceCompatibility) == LanguageFeature.State.ENABLED
|
||||
}
|
||||
-9
@@ -5,8 +5,6 @@
|
||||
|
||||
package org.jetbrains.kotlin.resolve.calls.inference.components
|
||||
|
||||
import org.jetbrains.kotlin.config.LanguageFeature
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||
import org.jetbrains.kotlin.resolve.calls.components.transformToResolvedLambda
|
||||
import org.jetbrains.kotlin.resolve.calls.inference.model.*
|
||||
import org.jetbrains.kotlin.resolve.calls.model.*
|
||||
@@ -21,7 +19,6 @@ import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||
class KotlinConstraintSystemCompleter(
|
||||
private val resultTypeResolver: ResultTypeResolver,
|
||||
val variableFixationFinder: VariableFixationFinder,
|
||||
val languageVersionSettings: LanguageVersionSettings,
|
||||
) {
|
||||
private val postponedArgumentInputTypesResolver = PostponedArgumentInputTypesResolver(resultTypeResolver, variableFixationFinder)
|
||||
|
||||
@@ -108,7 +105,6 @@ class KotlinConstraintSystemCompleter(
|
||||
topLevelType,
|
||||
topLevelAtoms,
|
||||
dependencyProvider,
|
||||
inferenceCompatibilityMode = isInferenceCompatibilityModeEnabled(),
|
||||
)
|
||||
|
||||
if (wasFixedSomeVariable)
|
||||
@@ -262,7 +258,6 @@ class KotlinConstraintSystemCompleter(
|
||||
postponedArguments,
|
||||
completionMode,
|
||||
topLevelType,
|
||||
inferenceCompatibilityMode = isInferenceCompatibilityModeEnabled(),
|
||||
) ?: break
|
||||
|
||||
if (!variableForFixation.hasProperConstraint && completionMode == ConstraintSystemCompletionMode.PARTIAL)
|
||||
@@ -373,12 +368,8 @@ class KotlinConstraintSystemCompleter(
|
||||
postponedArguments,
|
||||
completionMode,
|
||||
topLevelType,
|
||||
inferenceCompatibilityMode = isInferenceCompatibilityModeEnabled(),
|
||||
) != null
|
||||
|
||||
private fun isInferenceCompatibilityModeEnabled(): Boolean =
|
||||
languageVersionSettings.supportsFeature(LanguageFeature.InferenceCompatibility)
|
||||
|
||||
companion object {
|
||||
fun getOrderedNotAnalyzedPostponedArguments(topLevelAtoms: List<ResolvedAtom>): List<PostponedResolvedAtom> {
|
||||
fun ResolvedAtom.process(to: MutableList<PostponedResolvedAtom>) {
|
||||
|
||||
+1
-4
@@ -455,7 +455,6 @@ class PostponedArgumentInputTypesResolver(
|
||||
topLevelType: UnwrappedType,
|
||||
topLevelAtoms: List<ResolvedAtom>,
|
||||
dependencyProvider: TypeVariableDependencyInformationProvider,
|
||||
inferenceCompatibilityMode: Boolean = false,
|
||||
): Boolean {
|
||||
val expectedType = argument.run { safeAs<PostponedAtomWithRevisableExpectedType>()?.revisedExpectedType ?: expectedType }
|
||||
|
||||
@@ -467,7 +466,6 @@ class PostponedArgumentInputTypesResolver(
|
||||
topLevelType,
|
||||
topLevelAtoms,
|
||||
dependencyProvider,
|
||||
inferenceCompatibilityMode
|
||||
)
|
||||
|
||||
if (wasFixedSomeVariable)
|
||||
@@ -483,12 +481,11 @@ class PostponedArgumentInputTypesResolver(
|
||||
topLevelType: UnwrappedType,
|
||||
topLevelAtoms: List<ResolvedAtom>,
|
||||
dependencyProvider: TypeVariableDependencyInformationProvider,
|
||||
inferenceCompatibilityMode: Boolean,
|
||||
): Boolean {
|
||||
val relatedVariables = type.getPureArgumentsForFunctionalTypeOrSubtype()
|
||||
.flatMap { getAllDeeplyRelatedTypeVariables(it, dependencyProvider) }
|
||||
val variableForFixation = variableFixationFinder.findFirstVariableForFixation(
|
||||
this, relatedVariables, postponedArguments, ConstraintSystemCompletionMode.FULL, topLevelType, inferenceCompatibilityMode
|
||||
this, relatedVariables, postponedArguments, ConstraintSystemCompletionMode.FULL, topLevelType
|
||||
)
|
||||
|
||||
if (variableForFixation == null || !variableForFixation.hasProperConstraint)
|
||||
|
||||
Reference in New Issue
Block a user