Fixed bug: do not lose all candidates when updating status

to success
This commit is contained in:
Svetlana Isakova
2014-04-23 20:44:00 +04:00
parent b915ff2faf
commit b89f260d25
2 changed files with 12 additions and 1 deletions
@@ -406,7 +406,7 @@ public class CallResolver {
candidateResolver.completeTypeInferenceForAllCandidates(context, results);
if (resolvedCall.getStatus().isSuccess()) {
return OverloadResolutionResultsImpl.success(resolvedCall);
return results.changeStatusToSuccess();
}
return results;
}
@@ -140,4 +140,15 @@ public class OverloadResolutionResultsImpl<D extends CallableDescriptor> impleme
public Collection<ResolvedCall<D>> getAllCandidates() {
return allCandidates;
}
public OverloadResolutionResultsImpl<D> 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<D> newResults = new OverloadResolutionResultsImpl<D>(Code.SUCCESS, getResultingCalls());
newResults.setAllCandidates(getAllCandidates());
return newResults;
}
}