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>() {
|
public static CallTransformer<CallableDescriptor, FunctionDescriptor> FUNCTION_CALL_TRANSFORMER = new CallTransformer<CallableDescriptor, FunctionDescriptor>() {
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
@@ -197,22 +213,6 @@ public class CallTransformer<D extends CallableDescriptor, F extends D> {
|
|||||||
candidateResolveMode);
|
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
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public Collection<MutableResolvedCall<FunctionDescriptor>> transformCall(
|
public Collection<MutableResolvedCall<FunctionDescriptor>> transformCall(
|
||||||
|
|||||||
+4
-2
@@ -240,8 +240,10 @@ class NewResolveOldInference(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun contextForVariable(stripExplicitReceiver: Boolean): TowerContext<Candidate> {
|
override fun contextForVariable(stripExplicitReceiver: Boolean): TowerContext<Candidate> {
|
||||||
val basicCallResolutionContext = basicCallContext.replaceCall(CallTransformer.stripCallArguments(basicCallContext.call))
|
val newCall = CallTransformer.stripCallArguments(basicCallContext.call).let {
|
||||||
return Context(scopeTower, name, basicCallResolutionContext, tracing)
|
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>>? {
|
override fun contextForInvoke(variable: Candidate, useExplicitReceiver: Boolean): Pair<ReceiverValue, TowerContext<Candidate>>? {
|
||||||
|
|||||||
Reference in New Issue
Block a user