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 8c6d653b4a5..1902e51b76f 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 @@ -406,7 +406,7 @@ public class CallResolver { candidateResolver.completeTypeInferenceForAllCandidates(context, results); if (resolvedCall.getStatus().isSuccess()) { - return OverloadResolutionResultsImpl.success(resolvedCall); + return results.changeStatusToSuccess(); } return results; } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/results/OverloadResolutionResultsImpl.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/results/OverloadResolutionResultsImpl.java index 48b8f1c3880..bc775e90d2b 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/results/OverloadResolutionResultsImpl.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/results/OverloadResolutionResultsImpl.java @@ -140,4 +140,15 @@ public class OverloadResolutionResultsImpl impleme public Collection> getAllCandidates() { return allCandidates; } + + public OverloadResolutionResultsImpl changeStatusToSuccess() { + if (getResultCode() == Code.SUCCESS) return this; + + assert isSingleResult() && getResultCode() == Code.INCOMPLETE_TYPE_INFERENCE : + "Only incomplete type inference status with one candidate can be changed to success: " + + getResultCode() + "\n" + getResultingCalls(); + OverloadResolutionResultsImpl newResults = new OverloadResolutionResultsImpl(Code.SUCCESS, getResultingCalls()); + newResults.setAllCandidates(getAllCandidates()); + return newResults; + } }