Refactoring: made 'resolveFunctionCall' return OverloadResolutionResults

not OverloadResolutionResultsImpl
This commit is contained in:
Svetlana Isakova
2014-03-20 16:34:40 +04:00
committed by Andrey Breslav
parent 9c21fb3b1f
commit 8f1c7aa8f6
4 changed files with 11 additions and 12 deletions
@@ -227,13 +227,13 @@ public class CallExpressionResolver {
}
@Nullable
public ResolvedCallWithTrace<FunctionDescriptor> getResolvedCallForFunction(
public ResolvedCall<FunctionDescriptor> getResolvedCallForFunction(
@NotNull Call call, @NotNull JetExpression callExpression,
@NotNull ResolutionContext context, @NotNull CheckValueArgumentsMode checkArguments,
@NotNull boolean[] result
) {
CallResolver callResolver = expressionTypingServices.getCallResolver();
OverloadResolutionResultsImpl<FunctionDescriptor> results = callResolver.resolveFunctionCall(
OverloadResolutionResults<FunctionDescriptor> results = callResolver.resolveFunctionCall(
BasicCallResolutionContext.create(context, call, checkArguments));
if (!results.isNothing()) {
checkSuper(call.getExplicitReceiver(), results, context.trace, callExpression);
@@ -343,7 +343,7 @@ public class CallExpressionResolver {
TemporaryTraceAndCache temporaryForFunction = TemporaryTraceAndCache.create(
context, "trace to resolve as function call", callExpression);
ResolvedCallWithTrace<FunctionDescriptor> resolvedCall = getResolvedCallForFunction(
ResolvedCall<FunctionDescriptor> resolvedCall = getResolvedCallForFunction(
call, callExpression, context.replaceTraceAndCache(temporaryForFunction),
CheckValueArgumentsMode.ENABLED, result);
if (result[0]) {
@@ -192,7 +192,7 @@ public class CallResolver {
}
@NotNull
/*package*/ OverloadResolutionResultsImpl<FunctionDescriptor> resolveFunctionCall(@NotNull BasicCallResolutionContext context) {
public OverloadResolutionResults<FunctionDescriptor> resolveFunctionCall(@NotNull BasicCallResolutionContext context) {
ProgressIndicatorProvider.checkCanceled();
@@ -291,11 +291,9 @@ public class CallResolver {
Call call = new CallTransformer.CallForImplicitInvoke(
context.call.getExplicitReceiver(), expressionReceiver, context.call);
TracingStrategyForInvoke tracingForInvoke = new TracingStrategyForInvoke(calleeExpression, call, calleeType);
return (OverloadResolutionResultsImpl<FunctionDescriptor>)
resolveCallForInvoke(context.replaceCall(call), tracingForInvoke);
return resolveCallForInvoke(context.replaceCall(call), tracingForInvoke);
}
else {
// checkTypesWithNoCallee(trace, scope, call);
return checkArgumentTypesAndFail(context);
}
}
@@ -42,17 +42,18 @@ public class OverloadResolutionResultsUtil {
@NotNull OverloadResolutionResults<D> results,
@NotNull ContextDependency contextDependency
) {
ResolvedCall<D> resultingCall = getResultingCall((OverloadResolutionResultsImpl<D>) results, contextDependency);
ResolvedCall<D> resultingCall = getResultingCall(results, contextDependency);
return resultingCall != null ? resultingCall.getResultingDescriptor().getReturnType() : null;
}
@Nullable
public static <D extends CallableDescriptor> ResolvedCallWithTrace<D> getResultingCall(
@NotNull OverloadResolutionResultsImpl<D> results,
public static <D extends CallableDescriptor> ResolvedCall<D> getResultingCall(
@NotNull OverloadResolutionResults<D> results,
@NotNull ContextDependency contextDependency
) {
if (results.isSingleResult() && contextDependency == ContextDependency.INDEPENDENT) {
if (!results.getResultingCall().getCallToCompleteTypeArgumentInference().hasInferredReturnType()) {
ResolvedCall<D> resultingCall = results.getResultingCall();
if (!((ResolvedCallWithTrace<D>)resultingCall).getCallToCompleteTypeArgumentInference().hasInferredReturnType()) {
return null;
}
}
@@ -565,7 +565,7 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
TemporaryBindingTrace trace = TemporaryBindingTrace.create(context.trace, "trace to resolve as function", reference);
ExpressionTypingContext contextForResolve = context.replaceBindingTrace(trace).replaceExpectedType(NO_EXPECTED_TYPE);
ResolvedCallWithTrace<FunctionDescriptor> function = components.expressionTypingServices.getCallExpressionResolver()
ResolvedCall<FunctionDescriptor> function = components.expressionTypingServices.getCallExpressionResolver()
.getResolvedCallForFunction(call, reference, contextForResolve, CheckValueArgumentsMode.DISABLED, result);
if (!result[0]) return null;