diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/ResolvedAtomCompleter.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/ResolvedAtomCompleter.kt index 4a39aff3f57..8413b809893 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/ResolvedAtomCompleter.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/ResolvedAtomCompleter.kt @@ -403,15 +403,20 @@ class ResolvedAtomCompleter( callableCandidate: CallableReferenceCandidate, recordedDescriptor: CallableDescriptor ): CallableReferenceResultTypeInfo { + val dispatchReceiver = recordedDescriptor.dispatchReceiverParameter?.value + ?: callableCandidate.dispatchReceiver?.receiver?.receiverValue + val extensionReceiver = recordedDescriptor.extensionReceiverParameter?.value + ?: callableCandidate.extensionReceiver?.receiver?.receiverValue + val explicitCallableReceiver = when (callableCandidate.explicitReceiverKind) { - ExplicitReceiverKind.DISPATCH_RECEIVER -> callableCandidate.dispatchReceiver - ExplicitReceiverKind.EXTENSION_RECEIVER -> callableCandidate.extensionReceiver + ExplicitReceiverKind.DISPATCH_RECEIVER -> dispatchReceiver + ExplicitReceiverKind.EXTENSION_RECEIVER -> extensionReceiver else -> null } return CallableReferenceResultTypeInfo( - recordedDescriptor.dispatchReceiverParameter?.value, - recordedDescriptor.extensionReceiverParameter?.value, - explicitCallableReceiver?.receiver?.receiverValue, + dispatchReceiver, + extensionReceiver, + explicitCallableReceiver, TypeSubstitutor.EMPTY, callableCandidate.reflectionCandidateType.replaceFunctionTypeArgumentsByDescriptor(recordedDescriptor) ) diff --git a/compiler/testData/codegen/box/inference/builderInference/kt45083.kt b/compiler/testData/codegen/box/inference/builderInference/kt45083.kt new file mode 100644 index 00000000000..bc41188b88a --- /dev/null +++ b/compiler/testData/codegen/box/inference/builderInference/kt45083.kt @@ -0,0 +1,19 @@ +// WITH_RUNTIME +// DONT_TARGET_EXACT_BACKEND: WASM + +import kotlin.experimental.ExperimentalTypeInference +object Hello { + val hello = "hello" +} + +@OptIn(ExperimentalTypeInference::class) +fun buildList0(@BuilderInference builder: MutableList.() -> Unit): List = mutableListOf().apply { builder() } + +val numbers = buildList0 { + add(Hello.let { it::hello }.get()) +} + +fun box(): String { + numbers + return "OK" +}