Minor. strip explicit receiver for variable call if needed.
This commit is contained in:
@@ -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(
|
||||
|
||||
+4
-2
@@ -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>>? {
|
||||
|
||||
Reference in New Issue
Block a user