Minor. strip explicit receiver for variable call if needed.

This commit is contained in:
Stanislav Erokhin
2015-12-10 21:16:19 +03:00
parent 1890b8cbd3
commit 616bb444ec
2 changed files with 20 additions and 18 deletions
@@ -139,6 +139,22 @@ public class CallTransformer<D extends CallableDescriptor, F extends D> {
};
}
public static Call stripReceiver(@NotNull Call variableCall) {
return new DelegatingCall(variableCall) {
@Nullable
@Override
public ASTNode getCallOperationNode() {
return null;
}
@NotNull
@Override
public ReceiverValue getExplicitReceiver() {
return ReceiverValue.NO_RECEIVER;
}
};
}
public static CallTransformer<CallableDescriptor, FunctionDescriptor> FUNCTION_CALL_TRANSFORMER = new CallTransformer<CallableDescriptor, FunctionDescriptor>() {
@NotNull
@Override
@@ -197,22 +213,6 @@ public class CallTransformer<D extends CallableDescriptor, F extends D> {
candidateResolveMode);
}
private Call stripReceiver(@NotNull Call variableCall) {
return new DelegatingCall(variableCall) {
@Nullable
@Override
public ASTNode getCallOperationNode() {
return null;
}
@NotNull
@Override
public ReceiverValue getExplicitReceiver() {
return ReceiverValue.NO_RECEIVER;
}
};
}
@NotNull
@Override
public Collection<MutableResolvedCall<FunctionDescriptor>> transformCall(
@@ -240,8 +240,10 @@ class NewResolveOldInference(
}
override fun contextForVariable(stripExplicitReceiver: Boolean): TowerContext<Candidate> {
val basicCallResolutionContext = basicCallContext.replaceCall(CallTransformer.stripCallArguments(basicCallContext.call))
return Context(scopeTower, name, basicCallResolutionContext, tracing)
val newCall = CallTransformer.stripCallArguments(basicCallContext.call).let {
if (stripExplicitReceiver) CallTransformer.stripReceiver(it) else it
}
return Context(scopeTower, name, basicCallContext.replaceCall(newCall), tracing)
}
override fun contextForInvoke(variable: Candidate, useExplicitReceiver: Boolean): Pair<ReceiverValue, TowerContext<Candidate>>? {