'DIRTY' resolution result code added

it means there are some candidates with unknown type parameters that need inference completion
This commit is contained in:
Svetlana Isakova
2012-07-03 13:00:25 +04:00
parent e89a09f470
commit 2eece73df9
2 changed files with 22 additions and 1 deletions
@@ -30,7 +30,8 @@ public interface OverloadResolutionResults<D extends CallableDescriptor> {
NAME_NOT_FOUND(false),
SINGLE_CANDIDATE_ARGUMENT_MISMATCH(false),
AMBIGUITY(false),
MANY_FAILED_CANDIDATES(false);
MANY_FAILED_CANDIDATES(false),
DIRTY(false);
private final boolean success;
@@ -18,6 +18,8 @@ package org.jetbrains.jet.lang.resolve.calls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.descriptors.CallableDescriptor;
import org.jetbrains.jet.lang.resolve.BindingTrace;
import org.jetbrains.jet.lang.resolve.TemporaryBindingTrace;
import java.util.Collection;
import java.util.Collections;
@@ -46,8 +48,17 @@ import java.util.Collections;
return new OverloadResolutionResultsImpl<D>(Code.AMBIGUITY, descriptors);
}
public static <D extends CallableDescriptor> OverloadResolutionResultsImpl<D> dirty(Collection<ResolvedCallWithTrace<D>> descriptors) {
return new OverloadResolutionResultsImpl<D>(Code.DIRTY, descriptors);
}
public static <D extends CallableDescriptor> OverloadResolutionResultsImpl<D> dirty(ResolvedCallWithTrace<D> descriptor) {
return new OverloadResolutionResultsImpl<D>(Code.DIRTY, Collections.singleton(descriptor));
}
private final Collection<ResolvedCallWithTrace<D>> results;
private final Code resultCode;
private TemporaryBindingTrace trace;
private OverloadResolutionResultsImpl(@NotNull Code resultCode, @NotNull Collection<ResolvedCallWithTrace<D>> results) {
this.results = results;
@@ -102,4 +113,13 @@ import java.util.Collections;
// public OverloadResolutionResultsImpl<D> newContents(@NotNull Collection<D> functionDescriptors) {
// return new OverloadResolutionResultsImpl<D>(resultCode, functionDescriptors);
// }
public TemporaryBindingTrace getTrace() {
return trace;
}
public OverloadResolutionResultsImpl<D> setTrace(TemporaryBindingTrace trace) {
this.trace = trace;
return this;
}
}