Added asserts about unfinished state

to ResolutionTaskHolder
This commit is contained in:
Svetlana Isakova
2014-03-18 17:40:05 +04:00
parent 3a14ab0af3
commit d90e6460d1
@@ -58,17 +58,23 @@ public class ResolutionTaskHolder<D extends CallableDescriptor, F extends D> {
} }
public void addCandidates(@NotNull Collection<ResolutionCandidate<D>> candidates) { public void addCandidates(@NotNull Collection<ResolutionCandidate<D>> candidates) {
assertNotFinished();
if (!candidates.isEmpty()) { if (!candidates.isEmpty()) {
candidatesList.add(setIsSafeCall(candidates)); candidatesList.add(setIsSafeCall(candidates));
} }
} }
public void addCandidates(@NotNull List<Collection<ResolutionCandidate<D>>> candidatesList) { public void addCandidates(@NotNull List<Collection<ResolutionCandidate<D>>> candidatesList) {
assertNotFinished();
for (Collection<ResolutionCandidate<D>> candidates : candidatesList) { for (Collection<ResolutionCandidate<D>> candidates : candidatesList) {
addCandidates(candidates); addCandidates(candidates);
} }
} }
private void assertNotFinished() {
assert tasks == null : "Can't add candidates after the resulting tasks were computed.";
}
public List<ResolutionTask<D, F>> getTasks() { public List<ResolutionTask<D, F>> getTasks() {
if (tasks == null) { if (tasks == null) {
tasks = Lists.newArrayList(); tasks = Lists.newArrayList();
@@ -76,12 +82,14 @@ public class ResolutionTaskHolder<D extends CallableDescriptor, F extends D> {
for (int priority = priorityProvider.getMaxPriority(); priority >= 0; priority--) { for (int priority = priorityProvider.getMaxPriority(); priority >= 0; priority--) {
final int finalPriority = priority; final int finalPriority = priority;
for (Collection<ResolutionCandidate<D>> candidates : candidatesList) { for (Collection<ResolutionCandidate<D>> candidates : candidatesList) {
Collection<ResolutionCandidate<D>> filteredCandidates = Collections2.filter(candidates, new Predicate<ResolutionCandidate<D>>() { Collection<ResolutionCandidate<D>> filteredCandidates = Collections2.filter(
@Override candidates, new Predicate<ResolutionCandidate<D>>() {
public boolean apply(@Nullable ResolutionCandidate<D> input) { @Override
return finalPriority == priorityProvider.getPriority(input); public boolean apply(@Nullable ResolutionCandidate<D> input) {
} return finalPriority == priorityProvider.getPriority(input);
}); }
}
);
if (!filteredCandidates.isEmpty()) { if (!filteredCandidates.isEmpty()) {
tasks.add(new ResolutionTask<D, F>(filteredCandidates, basicCallResolutionContext, tracing)); tasks.add(new ResolutionTask<D, F>(filteredCandidates, basicCallResolutionContext, tracing));
} }