[NI] Move creation of constraint system under callbacks

This will be needed in the next commit to have access to constraint
 system that is used for old inference
This commit is contained in:
Mikhail Zarechenskiy
2019-06-07 14:08:04 +03:00
parent ada41fb23f
commit e7064f5b77
4 changed files with 19 additions and 2 deletions
@@ -44,7 +44,7 @@ class CallableReferenceOverloadConflictResolver(
module,
specificityComparator,
{ it.candidate },
{ SimpleConstraintSystemImpl(constraintInjector, builtIns) },
{ statelessCallbacks.createConstraintSystemForOverloadResolution(constraintInjector, builtIns) },
Companion::createFlatSignature,
{ null },
{ statelessCallbacks.isDescriptorFromSource(it) },
@@ -5,14 +5,17 @@
package org.jetbrains.kotlin.resolve.calls.components
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.config.LanguageVersionSettings
import org.jetbrains.kotlin.container.DefaultImplementation
import org.jetbrains.kotlin.descriptors.CallableDescriptor
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor
import org.jetbrains.kotlin.descriptors.annotations.Annotations
import org.jetbrains.kotlin.resolve.calls.inference.components.ConstraintInjector
import org.jetbrains.kotlin.resolve.calls.inference.model.NewTypeVariable
import org.jetbrains.kotlin.resolve.calls.model.*
import org.jetbrains.kotlin.resolve.calls.results.SimpleConstraintSystem
import org.jetbrains.kotlin.resolve.calls.tower.ImplicitScopeTower
import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValueWithSmartCastInfo
import org.jetbrains.kotlin.types.StubType
@@ -33,6 +36,10 @@ interface KotlinResolutionStatelessCallbacks {
fun getVariableCandidateIfInvoke(functionCall: KotlinCall): KotlinResolutionCandidate?
fun isCoroutineCall(argument: KotlinCallArgument, parameter: ValueParameterDescriptor): Boolean
fun isApplicableCallForBuilderInference(descriptor: CallableDescriptor, languageVersionSettings: LanguageVersionSettings): Boolean
fun createConstraintSystemForOverloadResolution(
constraintInjector: ConstraintInjector, builtIns: KotlinBuiltIns
): SimpleConstraintSystem
}
// This components hold state (trace). Work with this carefully.
@@ -43,7 +43,7 @@ class NewOverloadingConflictResolver(
// todo investigate
it.resolvedCall.candidateDescriptor
},
{ SimpleConstraintSystemImpl(constraintInjector, builtIns) },
{ statelessCallbacks.createConstraintSystemForOverloadResolution(constraintInjector, builtIns) },
Companion::createFlatSignature,
{ it.variableCandidateIfInvoke },
{ statelessCallbacks.isDescriptorFromSource(it) },