diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolver.java index db57ef77340..7e577956fc3 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolver.java @@ -358,14 +358,6 @@ public class CallResolver { if (context.contextDependency == ContextDependency.INDEPENDENT) { results = completeTypeInferenceDependentOnExpectedType(context, results, tracing); - if (results.isSingleResult()) { - //todo clean internal data for several resulting calls - results.getResultingCall().markCallAsCompleted(); - } - else { - argumentTypeResolver.checkTypesForFunctionArgumentsWithNoCallee(context); - candidateResolver.completeNestedCallsForNotResolvedInvocation(context); - } } if (results.isSingleResult()) { @@ -400,21 +392,24 @@ public class CallResolver { ) { if (CallResolverUtil.isInvokeCallOnVariable(context.call)) return results; - if (results.isSingleResult()) { - Set unmappedArguments = results.getResultingCall().getCallToCompleteTypeArgumentInference().getUnmappedArguments(); - argumentTypeResolver.checkUnmappedArgumentTypes(context, unmappedArguments); - candidateResolver.completeUnmappedArguments(context, unmappedArguments); + if (!results.isSingleResult()) { + argumentTypeResolver.checkTypesForFunctionArgumentsWithNoCallee(context); + candidateResolver.completeNestedCallsForNotResolvedInvocation(context); + return results; } - if (!results.isSingleResult()) return results; - ResolvedCallWithTrace resolvedCall = results.getResultingCall(); ResolvedCallImpl callToCompleteInference = resolvedCall.getCallToCompleteTypeArgumentInference(); + Set unmappedArguments = callToCompleteInference.getUnmappedArguments(); + argumentTypeResolver.checkUnmappedArgumentTypes(context, unmappedArguments); + candidateResolver.completeUnmappedArguments(context, unmappedArguments); + CallCandidateResolutionContext callCandidateResolutionContext = CallCandidateResolutionContext.createForCallBeingAnalyzed(callToCompleteInference, context, tracing); candidateResolver.completeTypeInferenceDependentOnExpectedTypeForCall(callCandidateResolutionContext, false); + resolvedCall.markCallAsCompleted(); if (callToCompleteInference.getStatus().isSuccess()) { return OverloadResolutionResultsImpl.success(resolvedCall); }