Skip to content

Commit e7064f5

Browse files
committed
[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
1 parent ada41fb commit e7064f5

File tree

4 files changed

+19
-2
lines changed

4 files changed

+19
-2
lines changed

compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/KotlinResolutionStatelessCallbacksImpl.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package org.jetbrains.kotlin.resolve.calls.tower
1818

19+
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
1920
import org.jetbrains.kotlin.config.LanguageVersionSettings
2021
import org.jetbrains.kotlin.descriptors.CallableDescriptor
2122
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
@@ -27,11 +28,14 @@ import org.jetbrains.kotlin.resolve.calls.callResolverUtil.isInfixCall
2728
import org.jetbrains.kotlin.resolve.calls.callResolverUtil.isSuperOrDelegatingConstructorCall
2829
import org.jetbrains.kotlin.resolve.calls.components.KotlinResolutionCallbacks
2930
import org.jetbrains.kotlin.resolve.calls.components.KotlinResolutionStatelessCallbacks
31+
import org.jetbrains.kotlin.resolve.calls.inference.components.ConstraintInjector
32+
import org.jetbrains.kotlin.resolve.calls.inference.components.SimpleConstraintSystemImpl
3033
import org.jetbrains.kotlin.resolve.calls.inference.isCoroutineCallWithAdditionalInference
3134
import org.jetbrains.kotlin.resolve.calls.model.CallableReferenceKotlinCallArgument
3235
import org.jetbrains.kotlin.resolve.calls.model.KotlinCall
3336
import org.jetbrains.kotlin.resolve.calls.model.KotlinCallArgument
3437
import org.jetbrains.kotlin.resolve.calls.model.SimpleKotlinCallArgument
38+
import org.jetbrains.kotlin.resolve.calls.results.SimpleConstraintSystem
3539
import org.jetbrains.kotlin.resolve.deprecation.DeprecationResolver
3640
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
3741

@@ -80,4 +84,10 @@ class KotlinResolutionStatelessCallbacksImpl(
8084
): Boolean {
8185
return org.jetbrains.kotlin.resolve.calls.inference.isApplicableCallForBuilderInference(descriptor, languageVersionSettings)
8286
}
87+
88+
override fun createConstraintSystemForOverloadResolution(
89+
constraintInjector: ConstraintInjector, builtIns: KotlinBuiltIns
90+
): SimpleConstraintSystem {
91+
return SimpleConstraintSystemImpl(constraintInjector, builtIns)
92+
}
8393
}

compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/CallableReferenceResolver.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ class CallableReferenceOverloadConflictResolver(
4444
module,
4545
specificityComparator,
4646
{ it.candidate },
47-
{ SimpleConstraintSystemImpl(constraintInjector, builtIns) },
47+
{ statelessCallbacks.createConstraintSystemForOverloadResolution(constraintInjector, builtIns) },
4848
Companion::createFlatSignature,
4949
{ null },
5050
{ statelessCallbacks.isDescriptorFromSource(it) },

compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/ExternalComponents.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,17 @@
55

66
package org.jetbrains.kotlin.resolve.calls.components
77

8+
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
89
import org.jetbrains.kotlin.config.LanguageVersionSettings
910
import org.jetbrains.kotlin.container.DefaultImplementation
1011
import org.jetbrains.kotlin.descriptors.CallableDescriptor
1112
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
1213
import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor
1314
import org.jetbrains.kotlin.descriptors.annotations.Annotations
15+
import org.jetbrains.kotlin.resolve.calls.inference.components.ConstraintInjector
1416
import org.jetbrains.kotlin.resolve.calls.inference.model.NewTypeVariable
1517
import org.jetbrains.kotlin.resolve.calls.model.*
18+
import org.jetbrains.kotlin.resolve.calls.results.SimpleConstraintSystem
1619
import org.jetbrains.kotlin.resolve.calls.tower.ImplicitScopeTower
1720
import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValueWithSmartCastInfo
1821
import org.jetbrains.kotlin.types.StubType
@@ -33,6 +36,10 @@ interface KotlinResolutionStatelessCallbacks {
3336
fun getVariableCandidateIfInvoke(functionCall: KotlinCall): KotlinResolutionCandidate?
3437
fun isCoroutineCall(argument: KotlinCallArgument, parameter: ValueParameterDescriptor): Boolean
3538
fun isApplicableCallForBuilderInference(descriptor: CallableDescriptor, languageVersionSettings: LanguageVersionSettings): Boolean
39+
40+
fun createConstraintSystemForOverloadResolution(
41+
constraintInjector: ConstraintInjector, builtIns: KotlinBuiltIns
42+
): SimpleConstraintSystem
3643
}
3744

3845
// This components hold state (trace). Work with this carefully.

compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/NewOverloadingConflictResolver.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ class NewOverloadingConflictResolver(
4343
// todo investigate
4444
it.resolvedCall.candidateDescriptor
4545
},
46-
{ SimpleConstraintSystemImpl(constraintInjector, builtIns) },
46+
{ statelessCallbacks.createConstraintSystemForOverloadResolution(constraintInjector, builtIns) },
4747
Companion::createFlatSignature,
4848
{ it.variableCandidateIfInvoke },
4949
{ statelessCallbacks.isDescriptorFromSource(it) },

0 commit comments

Comments
 (0)