diff --git a/idea/src/org/jetbrains/jet/lang/resolve/calls/CallResolver.java b/idea/src/org/jetbrains/jet/lang/resolve/calls/CallResolver.java index 520e06781eb..50cb3ec88eb 100644 --- a/idea/src/org/jetbrains/jet/lang/resolve/calls/CallResolver.java +++ b/idea/src/org/jetbrains/jet/lang/resolve/calls/CallResolver.java @@ -565,7 +565,16 @@ public class CallResolver { @NotNull public OverloadResolutionResult resolveExactSignature(@NotNull JetScope scope, @Nullable JetType receiverType, @NotNull String name, @NotNull List parameterTypes) { List result = findCandidatesByExactSignature(scope, receiverType, name, parameterTypes); - return listToOverloadResolutionResult(result); + + BindingTraceContext trace = new BindingTraceContext(); + TemporaryBindingTrace temporaryBindingTrace = TemporaryBindingTrace.create(trace); + Map traces = Maps.newHashMap(); + Map candidates = Maps.newLinkedHashMap(); + for (FunctionDescriptor functionDescriptor : result) { + candidates.put(functionDescriptor, functionDescriptor); + traces.put(functionDescriptor, temporaryBindingTrace); + } + return computeResultAndReportErrors(trace, TracingStrategy.EMPTY, candidates, Collections.emptySet(), Collections.emptySet(), traces); } private List findCandidatesByExactSignature(JetScope scope, JetType receiverType, String name, List parameterTypes) { diff --git a/idea/src/org/jetbrains/jet/lang/resolve/calls/TracingStrategy.java b/idea/src/org/jetbrains/jet/lang/resolve/calls/TracingStrategy.java index 09fed95601d..53ffb30dfd6 100644 --- a/idea/src/org/jetbrains/jet/lang/resolve/calls/TracingStrategy.java +++ b/idea/src/org/jetbrains/jet/lang/resolve/calls/TracingStrategy.java @@ -10,6 +10,29 @@ import java.util.Collection; * @author abreslav */ /*package*/ interface TracingStrategy { + TracingStrategy EMPTY = new TracingStrategy() { + @Override + public void bindReference(@NotNull BindingTrace trace, @NotNull CallableDescriptor descriptor) {} + + @Override + public void reportOverallResolutionError(@NotNull BindingTrace trace, @NotNull String message) {} + + @Override + public void reportWrongTypeArguments(@NotNull BindingTrace trace, @NotNull String message) {} + + @Override + public void reportWrongValueArguments(@NotNull BindingTrace trace, @NotNull String message) {} + + @Override + public void reportUnresolvedReference(@NotNull BindingTrace trace) {} + + @Override + public void reportErrorOnReference(BindingTrace trace, String message) {} + + @Override + public void recordAmbiguity(BindingTrace trace, Collection candidates) {} + }; + void bindReference(@NotNull BindingTrace trace, @NotNull CallableDescriptor descriptor); void reportOverallResolutionError(@NotNull BindingTrace trace, @NotNull String message);