diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/FirBuilderInferenceSession.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/FirBuilderInferenceSession.kt index 8c629c0a162..29324697b17 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/FirBuilderInferenceSession.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/FirBuilderInferenceSession.kt @@ -23,7 +23,7 @@ import org.jetbrains.kotlin.resolve.calls.inference.buildAbstractResultingSubsti import org.jetbrains.kotlin.resolve.calls.inference.components.ConstraintSystemCompletionMode import org.jetbrains.kotlin.resolve.calls.inference.model.ConstraintKind import org.jetbrains.kotlin.resolve.calls.inference.model.ConstraintStorage -import org.jetbrains.kotlin.resolve.calls.inference.model.CoroutinePosition +import org.jetbrains.kotlin.resolve.calls.inference.model.BuilderInferencePosition import org.jetbrains.kotlin.resolve.calls.inference.model.NewConstraintSystemImpl import org.jetbrains.kotlin.resolve.descriptorUtil.BUILDER_INFERENCE_ANNOTATION_FQ_NAME import org.jetbrains.kotlin.types.model.TypeConstructorMarker @@ -219,7 +219,7 @@ class FirBuilderInferenceSession( for ((variableConstructor, type) in storage.fixedTypeVariables) { val typeVariable = storage.allTypeVariables.getValue(variableConstructor) commonSystem.registerVariable(typeVariable) - commonSystem.addEqualityConstraint((typeVariable as ConeTypeVariable).defaultType, type, CoroutinePosition) + commonSystem.addEqualityConstraint((typeVariable as ConeTypeVariable).defaultType, type, BuilderInferencePosition) introducedConstraint = true } } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/PostponedArgumentsAnalyzer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/PostponedArgumentsAnalyzer.kt index 10bbea5bfb8..b52e2e34b8f 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/PostponedArgumentsAnalyzer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/PostponedArgumentsAnalyzer.kt @@ -25,7 +25,7 @@ import org.jetbrains.kotlin.fir.types.isMarkedNullable import org.jetbrains.kotlin.resolve.calls.components.PostponedArgumentsAnalyzerContext import org.jetbrains.kotlin.resolve.calls.inference.ConstraintSystemBuilder import org.jetbrains.kotlin.resolve.calls.inference.components.ConstraintSystemCompletionMode -import org.jetbrains.kotlin.resolve.calls.inference.model.CoroutinePosition +import org.jetbrains.kotlin.resolve.calls.inference.model.BuilderInferencePosition import org.jetbrains.kotlin.types.model.StubTypeMarker import org.jetbrains.kotlin.types.model.TypeVariableMarker import org.jetbrains.kotlin.types.model.freshTypeConstructor @@ -176,7 +176,7 @@ class PostponedArgumentsAnalyzer( val variable = variableWithConstraints.typeVariable as ConeTypeVariable c.getBuilder().unmarkPostponedVariable(variable) - c.getBuilder().addEqualityConstraint(variable.defaultType, resultType, CoroutinePosition) + c.getBuilder().addEqualityConstraint(variable.defaultType, resultType, BuilderInferencePosition) } } } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CallResolver.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CallResolver.java index 36ab2c2a29a..e275fd15baf 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CallResolver.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CallResolver.java @@ -28,7 +28,7 @@ import org.jetbrains.kotlin.resolve.calls.callResolverUtil.ResolveArgumentsMode; import org.jetbrains.kotlin.resolve.calls.callUtil.CallUtilKt; import org.jetbrains.kotlin.resolve.calls.components.InferenceSession; import org.jetbrains.kotlin.resolve.calls.context.*; -import org.jetbrains.kotlin.resolve.calls.inference.CoroutineInferenceUtilKt; +import org.jetbrains.kotlin.resolve.calls.inference.BuilderInferenceUtilKt; import org.jetbrains.kotlin.resolve.calls.model.MutableDataFlowInfoForArguments; import org.jetbrains.kotlin.resolve.calls.results.OverloadResolutionResults; import org.jetbrains.kotlin.resolve.calls.results.OverloadResolutionResultsImpl; @@ -616,7 +616,7 @@ public class CallResolver { OverloadResolutionResultsImpl results = doResolveCall(newContext, resolutionTask, tracing); // this is necessary because we already run CallCompleter for such calls - if (CoroutineInferenceUtilKt.isResultWithCoroutineInference(results)) { + if (BuilderInferenceUtilKt.isResultWithBuilderInference(results)) { traceToResolveCall.commit(); return results; } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/GenericCandidateResolver.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/GenericCandidateResolver.kt index 490dac8ef07..fd54b441267 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/GenericCandidateResolver.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/GenericCandidateResolver.kt @@ -54,7 +54,7 @@ val SPECIAL_FUNCTION_NAMES = ResolveConstruct.values().map { it.specialFunctionN class GenericCandidateResolver( private val argumentTypeResolver: ArgumentTypeResolver, - private val coroutineInferenceSupport: CoroutineInferenceSupport, + private val builderInferenceSupport: BuilderInferenceSupport, private val languageVersionSettings: LanguageVersionSettings, private val dataFlowValueFactory: DataFlowValueFactory ) { @@ -384,8 +384,8 @@ class GenericCandidateResolver( val effectiveExpectedType = getEffectiveExpectedType(valueParameterDescriptor, valueArgument, context) - if (isCoroutineCallWithAdditionalInference(valueParameterDescriptor, valueArgument, languageVersionSettings)) { - coroutineInferenceSupport.analyzeCoroutine(functionLiteral, valueArgument, constraintSystem, context, effectiveExpectedType) + if (isBuilderInferenceCall(valueParameterDescriptor, valueArgument, languageVersionSettings)) { + builderInferenceSupport.analyzeBuilderInferenceCall(functionLiteral, valueArgument, constraintSystem, context, effectiveExpectedType) } val currentSubstitutor = constraintSystem.build().currentSubstitutor diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/inference/BuilderInferenceSession.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/inference/BuilderInferenceSession.kt index adc088fe90c..85163ca6777 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/inference/BuilderInferenceSession.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/inference/BuilderInferenceSession.kt @@ -365,7 +365,7 @@ class BuilderInferenceSession( for ((variableConstructor, type) in storage.fixedTypeVariables) { val typeVariable = storage.allTypeVariables.getValue(variableConstructor) commonSystem.registerVariable(typeVariable) - commonSystem.addEqualityConstraint((typeVariable as NewTypeVariable).defaultType, type, CoroutinePosition) + commonSystem.addEqualityConstraint((typeVariable as NewTypeVariable).defaultType, type, BuilderInferencePosition) } } } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/inference/CoroutineInferenceUtil.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/inference/BuilderInferenceUtil.kt similarity index 89% rename from compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/inference/CoroutineInferenceUtil.kt rename to compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/inference/BuilderInferenceUtil.kt index 7fcf0f14425..bd828abf868 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/inference/CoroutineInferenceUtil.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/inference/BuilderInferenceUtil.kt @@ -48,7 +48,7 @@ import javax.inject.Inject class TypeTemplate( val typeVariable: TypeVariable, - val coroutineInferenceData: CoroutineInferenceData, + val builderInferenceData: BuilderInferenceData, nullable: Boolean = true ) : FlexibleType( typeVariable.originalTypeParameter.builtIns.nothingType, @@ -56,7 +56,7 @@ class TypeTemplate( ) { override fun replaceAnnotations(newAnnotations: Annotations) = this - override fun makeNullableAsSpecified(newNullability: Boolean) = TypeTemplate(typeVariable, coroutineInferenceData, newNullability) + override fun makeNullableAsSpecified(newNullability: Boolean) = TypeTemplate(typeVariable, builderInferenceData, newNullability) override val delegate: SimpleType get() = upperBound @@ -68,7 +68,7 @@ class TypeTemplate( override fun refine(kotlinTypeRefiner: KotlinTypeRefiner) = this } -class CoroutineInferenceData { +class BuilderInferenceData { private val csBuilder = ConstraintSystemBuilderImpl() private val typeTemplates = HashMap() private var hereIsBadCall = false @@ -129,7 +129,7 @@ class CoroutineInferenceData { } } -class CoroutineInferenceSupport( +class BuilderInferenceSupport( val argumentTypeResolver: ArgumentTypeResolver, val expressionTypingServices: ExpressionTypingServices ) { @@ -138,7 +138,7 @@ class CoroutineInferenceSupport( private val languageVersionSettings get() = expressionTypingServices.languageVersionSettings - fun analyzeCoroutine( + fun analyzeBuilderInferenceCall( functionLiteral: KtFunction, valueArgument: ValueArgument, csBuilder: ConstraintSystem.Builder, @@ -150,7 +150,7 @@ class CoroutineInferenceSupport( val lambdaReceiverType = lambdaExpectedType.getReceiverTypeFromFunctionType() ?: return - val inferenceData = CoroutineInferenceData() + val inferenceData = BuilderInferenceData() val constraintSystem = csBuilder.build() val newSubstitution = object : DelegatedTypeSubstitution(constraintSystem.currentSubstitutor.substitution) { @@ -189,13 +189,13 @@ class CoroutineInferenceSupport( inferenceData.initSystem() // this trace shouldn't be committed - val temporaryForCoroutine = TemporaryTraceAndCache.create( - context, "trace for type argument inference for coroutine", functionLiteral + val temporaryForBuilderInference = TemporaryTraceAndCache.create( + context, "trace to infer a type argument using the builder inference", functionLiteral ) val newContext = context.replaceExpectedType(newExpectedType) .replaceDataFlowInfo(context.candidateCall.dataFlowInfoForArguments.getInfo(valueArgument)) - .replaceContextDependency(ContextDependency.INDEPENDENT).replaceTraceAndCache(temporaryForCoroutine) + .replaceContextDependency(ContextDependency.INDEPENDENT).replaceTraceAndCache(temporaryForBuilderInference) argumentTypeResolver.getFunctionLiteralTypeInfo(argumentExpression, functionLiteral, newContext, RESOLVE_FUNCTION_ARGUMENTS, true) inferenceData.reportInferenceResult(csBuilder) @@ -208,12 +208,12 @@ class CoroutineInferenceSupport( expectedType.isSuspendFunctionType } - fun checkCoroutineCalls( + fun checkBuilderInferenceCalls( context: BasicCallResolutionContext, tracingStrategy: TracingStrategy, overloadResults: OverloadResolutionResultsImpl<*> ) { - val inferenceData = overloadResults.getCoroutineInferenceData() ?: return + val inferenceData = overloadResults.getBuilderInferenceData() ?: return val resultingCall = overloadResults.resultingCall @@ -232,7 +232,7 @@ class CoroutineInferenceSupport( with(NewKotlinTypeChecker.Default) { val parameterType = getEffectiveExpectedType(argumentMatch.valueParameter, valueArgument, context) - CoroutineTypeCheckerContext(allowOnlyTrivialConstraints = false).isSubtypeOf(kotlinType.unwrap(), parameterType.unwrap()) + BuilderInferenceTypeCheckerContext(allowOnlyTrivialConstraints = false).isSubtypeOf(kotlinType.unwrap(), parameterType.unwrap()) } } @@ -245,14 +245,14 @@ class CoroutineInferenceSupport( resultingCall.extensionReceiver?.let { actualReceiver -> with(NewKotlinTypeChecker.Default) { - CoroutineTypeCheckerContext(allowOnlyTrivialConstraints = allowOnlyTrivialConstraintsForReceiver).isSubtypeOf( + BuilderInferenceTypeCheckerContext(allowOnlyTrivialConstraints = allowOnlyTrivialConstraintsForReceiver).isSubtypeOf( actualReceiver.type.unwrap(), extensionReceiver.value.type.unwrap() ) } } } - private class CoroutineTypeCheckerContext( + private class BuilderInferenceTypeCheckerContext( private val allowOnlyTrivialConstraints: Boolean ) : ClassicTypeCheckerContext(errorTypeEqualsToAnything = true) { @@ -260,7 +260,7 @@ class CoroutineInferenceSupport( require(subType is UnwrappedType) require(superType is UnwrappedType) val typeTemplate = subType as? TypeTemplate ?: superType as? TypeTemplate - typeTemplate?.coroutineInferenceData?.addConstraint(subType, superType, allowOnlyTrivialConstraints) + typeTemplate?.builderInferenceData?.addConstraint(subType, superType, allowOnlyTrivialConstraints) return null } } @@ -302,7 +302,7 @@ fun isApplicableCallForBuilderInference(descriptor: CallableDescriptor, language if (languageVersionSettings.supportsFeature(LanguageFeature.UnrestrictedBuilderInference)) return true if (!languageVersionSettings.supportsFeature(LanguageFeature.ExperimentalBuilderInference)) { - return isGoodCallForOldCoroutines(descriptor) + return isGoodCallForOldBuilderInference(descriptor) } if (descriptor.isExtension && !descriptor.hasBuilderInferenceAnnotation()) { @@ -313,7 +313,7 @@ fun isApplicableCallForBuilderInference(descriptor: CallableDescriptor, language return !returnType.containsTypeTemplate() } -private fun isGoodCallForOldCoroutines(resultingDescriptor: CallableDescriptor): Boolean { +private fun isGoodCallForOldBuilderInference(resultingDescriptor: CallableDescriptor): Boolean { val returnType = resultingDescriptor.returnType ?: return false if (returnType.containsTypeTemplate()) return false @@ -324,7 +324,7 @@ private fun isGoodCallForOldCoroutines(resultingDescriptor: CallableDescriptor): return true } -fun isCoroutineCallWithAdditionalInference( +fun isBuilderInferenceCall( parameterDescriptor: ValueParameterDescriptor, argument: ValueArgument, languageVersionSettings: LanguageVersionSettings @@ -342,18 +342,18 @@ fun isCoroutineCallWithAdditionalInference( parameterDescriptor.type.let { it.isBuiltinFunctionalType && it.getReceiverTypeFromFunctionType() != null } } -fun OverloadResolutionResultsImpl<*>.isResultWithCoroutineInference() = getCoroutineInferenceData() != null +fun OverloadResolutionResultsImpl<*>.isResultWithBuilderInference() = getBuilderInferenceData() != null -private fun OverloadResolutionResultsImpl<*>.getCoroutineInferenceData(): CoroutineInferenceData? { +private fun OverloadResolutionResultsImpl<*>.getBuilderInferenceData(): BuilderInferenceData? { if (!isSingleResult) return null - fun getData(receiverValue: ReceiverValue?): CoroutineInferenceData? { - var coroutineInferenceData: CoroutineInferenceData? = null + fun getData(receiverValue: ReceiverValue?): BuilderInferenceData? { + var builderInferenceData: BuilderInferenceData? = null receiverValue?.type?.contains { - (it as? TypeTemplate)?.coroutineInferenceData?.let { coroutineInferenceData = it } + (it as? TypeTemplate)?.builderInferenceData?.let { builderInferenceData = it } false } - return coroutineInferenceData + return builderInferenceData } return getData(resultingCall.dispatchReceiver) ?: getData(resultingCall.extensionReceiver) } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/KotlinResolutionStatelessCallbacksImpl.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/KotlinResolutionStatelessCallbacksImpl.kt index 789203ef1e7..f1f62a92921 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/KotlinResolutionStatelessCallbacksImpl.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/KotlinResolutionStatelessCallbacksImpl.kt @@ -32,7 +32,7 @@ import org.jetbrains.kotlin.resolve.calls.components.KotlinResolutionStatelessCa import org.jetbrains.kotlin.resolve.calls.inference.ConstraintSystemBuilderImpl import org.jetbrains.kotlin.resolve.calls.inference.components.ConstraintInjector import org.jetbrains.kotlin.resolve.calls.inference.components.SimpleConstraintSystemImpl -import org.jetbrains.kotlin.resolve.calls.inference.isCoroutineCallWithAdditionalInference +import org.jetbrains.kotlin.resolve.calls.inference.isBuilderInferenceCall import org.jetbrains.kotlin.resolve.calls.model.CallableReferenceKotlinCallArgument import org.jetbrains.kotlin.resolve.calls.model.KotlinCall import org.jetbrains.kotlin.resolve.calls.model.KotlinCallArgument @@ -92,8 +92,8 @@ class KotlinResolutionStatelessCallbacksImpl( override fun getVariableCandidateIfInvoke(functionCall: KotlinCall) = functionCall.safeAs()?.variableCall - override fun isCoroutineCall(argument: KotlinCallArgument, parameter: ValueParameterDescriptor): Boolean = - isCoroutineCallWithAdditionalInference(parameter, argument.psiCallArgument.valueArgument, languageVersionSettings) + override fun isBuilderInferenceCall(argument: KotlinCallArgument, parameter: ValueParameterDescriptor): Boolean = + isBuilderInferenceCall(parameter, argument.psiCallArgument.valueArgument, languageVersionSettings) override fun isApplicableCallForBuilderInference( descriptor: CallableDescriptor, diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/NewResolutionOldInference.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/NewResolutionOldInference.kt index 72d6ba0bb2a..7e31a186e80 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/NewResolutionOldInference.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/NewResolutionOldInference.kt @@ -37,7 +37,7 @@ import org.jetbrains.kotlin.resolve.calls.callResolverUtil.isConventionCall import org.jetbrains.kotlin.resolve.calls.callResolverUtil.isInfixCall import org.jetbrains.kotlin.resolve.calls.callUtil.createLookupLocation import org.jetbrains.kotlin.resolve.calls.context.* -import org.jetbrains.kotlin.resolve.calls.inference.CoroutineInferenceSupport +import org.jetbrains.kotlin.resolve.calls.inference.BuilderInferenceSupport import org.jetbrains.kotlin.resolve.calls.model.KotlinCallDiagnostic import org.jetbrains.kotlin.resolve.calls.model.MutableResolvedCall import org.jetbrains.kotlin.resolve.calls.model.ResolvedCallImpl @@ -71,7 +71,7 @@ class NewResolutionOldInference( private val dynamicCallableDescriptors: DynamicCallableDescriptors, private val syntheticScopes: SyntheticScopes, private val languageVersionSettings: LanguageVersionSettings, - private val coroutineInferenceSupport: CoroutineInferenceSupport, + private val builderInferenceSupport: BuilderInferenceSupport, private val deprecationResolver: DeprecationResolver, private val typeApproximator: TypeApproximator, private val implicitsResolutionFilter: ImplicitsExtensionsResolutionFilter, @@ -218,7 +218,7 @@ class NewResolutionOldInference( } val overloadResults = convertToOverloadResults(candidates, tracing, context) - coroutineInferenceSupport.checkCoroutineCalls(context, tracing, overloadResults) + builderInferenceSupport.checkBuilderInferenceCalls(context, tracing, overloadResults) return overloadResults } diff --git a/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/inference/model/ConstraintPositionAndErrors.kt b/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/inference/model/ConstraintPositionAndErrors.kt index 5352ac98140..9f70a269da1 100644 --- a/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/inference/model/ConstraintPositionAndErrors.kt +++ b/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/inference/model/ConstraintPositionAndErrors.kt @@ -80,8 +80,8 @@ data class IncorporationConstraintPosition( override fun toString(): String = "Incorporate $initialConstraint from position $from" } -object CoroutinePosition : ConstraintPosition() { - override fun toString(): String = "for coroutine call" +object BuilderInferencePosition : ConstraintPosition() { + override fun toString(): String = "For builder inference call" } // TODO: should be used only in SimpleConstraintSystemImpl diff --git a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/ExternalComponents.kt b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/ExternalComponents.kt index edd3b2de0b9..95812bb77e7 100644 --- a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/ExternalComponents.kt +++ b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/ExternalComponents.kt @@ -38,7 +38,7 @@ interface KotlinResolutionStatelessCallbacks { fun isSuperExpression(receiver: SimpleKotlinCallArgument?): Boolean fun getScopeTowerForCallableReferenceArgument(argument: CallableReferenceKotlinCallArgument): ImplicitScopeTower fun getVariableCandidateIfInvoke(functionCall: KotlinCall): KotlinResolutionCandidate? - fun isCoroutineCall(argument: KotlinCallArgument, parameter: ValueParameterDescriptor): Boolean + fun isBuilderInferenceCall(argument: KotlinCallArgument, parameter: ValueParameterDescriptor): Boolean fun isApplicableCallForBuilderInference(descriptor: CallableDescriptor, languageVersionSettings: LanguageVersionSettings): Boolean fun isOldIntersectionIsEmpty(types: Collection): Boolean diff --git a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/PostponedArgumentsAnalyzer.kt b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/PostponedArgumentsAnalyzer.kt index 3fbec460fbe..f5b1d8a0223 100644 --- a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/PostponedArgumentsAnalyzer.kt +++ b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/PostponedArgumentsAnalyzer.kt @@ -13,7 +13,7 @@ import org.jetbrains.kotlin.descriptors.annotations.Annotations import org.jetbrains.kotlin.descriptors.annotations.FilteredAnnotations import org.jetbrains.kotlin.resolve.calls.inference.addSubsystemFromArgument import org.jetbrains.kotlin.resolve.calls.inference.components.ConstraintSystemCompletionMode -import org.jetbrains.kotlin.resolve.calls.inference.model.CoroutinePosition +import org.jetbrains.kotlin.resolve.calls.inference.model.BuilderInferencePosition import org.jetbrains.kotlin.resolve.calls.inference.model.LambdaArgumentConstraintPositionImpl import org.jetbrains.kotlin.resolve.calls.model.* import org.jetbrains.kotlin.types.KotlinType @@ -199,7 +199,7 @@ class PostponedArgumentsAnalyzer( val variable = variableWithConstraints.typeVariable c.getBuilder().unmarkPostponedVariable(variable) - c.getBuilder().addEqualityConstraint(variable.defaultType(c), resultType, CoroutinePosition) + c.getBuilder().addEqualityConstraint(variable.defaultType(c), resultType, BuilderInferencePosition) } } } diff --git a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/ResolutionParts.kt b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/ResolutionParts.kt index aa303d826fb..ef84bb63520 100644 --- a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/ResolutionParts.kt +++ b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/ResolutionParts.kt @@ -272,7 +272,7 @@ internal object CreateFreshVariablesSubstitutor : ResolutionPart() { internal object PostponedVariablesInitializerResolutionPart : ResolutionPart() { override fun KotlinResolutionCandidate.process(workIndex: Int) { for ((argument, parameter) in resolvedCall.argumentToCandidateParameter) { - if (!callComponents.statelessCallbacks.isCoroutineCall(argument, parameter)) continue + if (!callComponents.statelessCallbacks.isBuilderInferenceCall(argument, parameter)) continue val receiverType = parameter.type.getReceiverTypeFromFunctionType() ?: continue if (argument is LambdaKotlinCallArgument && !argument.hasBuilderInferenceAnnotation) {