Rename
receiverForVariableAsFunctionSecondCall -> explicitExtensionReceiver receiverFromVariable -> calleeExpressionAsThisObject
This commit is contained in:
@@ -119,7 +119,7 @@ public class CallTransformer<D extends CallableDescriptor, F extends D> {
|
|||||||
CallCandidateResolutionContext<CallableDescriptor> contextWithoutReceiver = createContextWithChainedTrace(
|
CallCandidateResolutionContext<CallableDescriptor> contextWithoutReceiver = createContextWithChainedTrace(
|
||||||
candidateWithoutReceiver, variableCallWithoutReceiver, candidateTrace, task);
|
candidateWithoutReceiver, variableCallWithoutReceiver, candidateTrace, task);
|
||||||
|
|
||||||
contextWithoutReceiver.receiverForVariableAsFunctionSecondCall = variableCall.getExplicitReceiver();
|
contextWithoutReceiver.explicitExtensionReceiverForInvoke = variableCall.getExplicitReceiver();
|
||||||
|
|
||||||
return Lists.newArrayList(contextWithReceiver, contextWithoutReceiver);
|
return Lists.newArrayList(contextWithReceiver, contextWithoutReceiver);
|
||||||
}
|
}
|
||||||
@@ -192,7 +192,7 @@ public class CallTransformer<D extends CallableDescriptor, F extends D> {
|
|||||||
|
|
||||||
final ResolvedCallWithTrace<VariableDescriptor> variableResolvedCall = (ResolvedCallWithTrace)context.candidateCall;
|
final ResolvedCallWithTrace<VariableDescriptor> variableResolvedCall = (ResolvedCallWithTrace)context.candidateCall;
|
||||||
|
|
||||||
Call functionCall = new CallForImplicitInvoke(context.receiverForVariableAsFunctionSecondCall, task, returnType);
|
Call functionCall = new CallForImplicitInvoke(context.explicitExtensionReceiverForInvoke, task, returnType);
|
||||||
|
|
||||||
DelegatingBindingTrace variableCallTrace = context.candidateCall.getTrace();
|
DelegatingBindingTrace variableCallTrace = context.candidateCall.getTrace();
|
||||||
BasicCallResolutionContext basicCallResolutionContext = BasicCallResolutionContext.create(
|
BasicCallResolutionContext basicCallResolutionContext = BasicCallResolutionContext.create(
|
||||||
@@ -215,33 +215,33 @@ public class CallTransformer<D extends CallableDescriptor, F extends D> {
|
|||||||
|
|
||||||
public static class CallForImplicitInvoke extends DelegatingCall {
|
public static class CallForImplicitInvoke extends DelegatingCall {
|
||||||
final Call outerCall;
|
final Call outerCall;
|
||||||
final ReceiverValue receiverForVariableAsFunctionSecondCall;
|
final ReceiverValue explicitExtensionReceiver;
|
||||||
final ExpressionReceiver receiverFromVariable;
|
final ExpressionReceiver calleeExpressionAsThisObject;
|
||||||
final JetSimpleNameExpression invokeExpression;
|
final JetSimpleNameExpression fakeInvokeExpression;
|
||||||
|
|
||||||
private CallForImplicitInvoke(ReceiverValue receiverForVariableAsFunctionSecondCall,
|
private CallForImplicitInvoke(ReceiverValue explicitExtensionReceiver,
|
||||||
ResolutionTask<CallableDescriptor, FunctionDescriptor> task, JetType returnType) {
|
ResolutionTask<CallableDescriptor, FunctionDescriptor> task, JetType returnType) {
|
||||||
super(task.call);
|
super(task.call);
|
||||||
this.outerCall = task.call;
|
this.outerCall = task.call;
|
||||||
this.receiverForVariableAsFunctionSecondCall = receiverForVariableAsFunctionSecondCall;
|
this.explicitExtensionReceiver = explicitExtensionReceiver;
|
||||||
this.receiverFromVariable = new ExpressionReceiver(task.reference, returnType);
|
this.calleeExpressionAsThisObject = new ExpressionReceiver(task.reference, returnType);
|
||||||
this.invokeExpression = (JetSimpleNameExpression) JetPsiFactory.createExpression(task.call.getCallElement().getProject(), "invoke");
|
this.fakeInvokeExpression = (JetSimpleNameExpression) JetPsiFactory.createExpression(task.call.getCallElement().getProject(), "invoke");
|
||||||
}
|
}
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public ReceiverValue getExplicitReceiver() {
|
public ReceiverValue getExplicitReceiver() {
|
||||||
return receiverForVariableAsFunctionSecondCall;
|
return explicitExtensionReceiver;
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public ReceiverValue getThisObject() {
|
public ReceiverValue getThisObject() {
|
||||||
return receiverFromVariable;
|
return calleeExpressionAsThisObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public JetExpression getCalleeExpression() {
|
public JetExpression getCalleeExpression() {
|
||||||
return invokeExpression;
|
return fakeInvokeExpression;
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@@ -254,7 +254,7 @@ public class CallTransformer<D extends CallableDescriptor, F extends D> {
|
|||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return invokeExpression;
|
return fakeInvokeExpression;
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
+1
-1
@@ -34,7 +34,7 @@ import org.jetbrains.jet.lang.types.expressions.LabelResolver;
|
|||||||
public final class CallCandidateResolutionContext<D extends CallableDescriptor> extends CallResolutionContext<CallCandidateResolutionContext<D>> {
|
public final class CallCandidateResolutionContext<D extends CallableDescriptor> extends CallResolutionContext<CallCandidateResolutionContext<D>> {
|
||||||
public final ResolvedCallImpl<D> candidateCall;
|
public final ResolvedCallImpl<D> candidateCall;
|
||||||
public final TracingStrategy tracing;
|
public final TracingStrategy tracing;
|
||||||
public ReceiverValue receiverForVariableAsFunctionSecondCall = ReceiverValue.NO_RECEIVER;
|
public ReceiverValue explicitExtensionReceiverForInvoke = ReceiverValue.NO_RECEIVER;
|
||||||
|
|
||||||
private CallCandidateResolutionContext(
|
private CallCandidateResolutionContext(
|
||||||
@NotNull ResolvedCallImpl<D> candidateCall,
|
@NotNull ResolvedCallImpl<D> candidateCall,
|
||||||
|
|||||||
Reference in New Issue
Block a user