From de17604fe7c0e7f4f335f39046c78e4d9790d1a9 Mon Sep 17 00:00:00 2001 From: Stanislav Erokhin Date: Wed, 24 May 2017 22:49:52 +0300 Subject: [PATCH] [NI] Bind all new resolved calls before update arguments. --- .../calls/tower/KotlinToResolvedCallTransformer.kt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/KotlinToResolvedCallTransformer.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/KotlinToResolvedCallTransformer.kt index 59b3ad095da..bc97d47b49d 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/KotlinToResolvedCallTransformer.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/KotlinToResolvedCallTransformer.kt @@ -71,6 +71,11 @@ class KotlinToResolvedCallTransformer( runCallCheckers(resolvedCall, callCheckerContext) } runLambdaArgumentsChecks(context, trace, baseResolvedCall.lambdaArguments) + allResolvedCalls.map { + if (it is VariableAsFunctionResolvedCall) it.functionCall else it + }.forEach { + runArgumentsChecks(context, trace, it as NewResolvedCallImpl<*>) + } } return result @@ -115,13 +120,13 @@ class KotlinToResolvedCallTransformer( return when (completedCall) { is CompletedKotlinCall.Simple -> { - NewResolvedCallImpl(completedCall).runIfTraceNotNull(this::bindResolvedCall).runIfTraceNotNull(this::runArgumentsChecks) + NewResolvedCallImpl(completedCall).runIfTraceNotNull(this::bindResolvedCall) } is CompletedKotlinCall.VariableAsFunction -> { val resolvedCall = NewVariableAsFunctionResolvedCallImpl( completedCall, NewResolvedCallImpl(completedCall.variableCall), - NewResolvedCallImpl(completedCall.invokeCall).runIfTraceNotNull(this::runArgumentsChecks) + NewResolvedCallImpl(completedCall.invokeCall) ).runIfTraceNotNull(this::bindResolvedCall) @Suppress("UNCHECKED_CAST")