From 616bb444ecf014c9cb74beb31dd615514fcf875b Mon Sep 17 00:00:00 2001 From: Stanislav Erokhin Date: Thu, 10 Dec 2015 21:16:19 +0300 Subject: [PATCH] Minor. strip explicit receiver for variable call if needed. --- .../kotlin/resolve/calls/CallTransformer.java | 32 +++++++++---------- .../calls/tower/NewResolveOldInference.kt | 6 ++-- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CallTransformer.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CallTransformer.java index 4b1247ca780..678d8ec6ef8 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CallTransformer.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CallTransformer.java @@ -139,6 +139,22 @@ public class CallTransformer { }; } + 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 FUNCTION_CALL_TRANSFORMER = new CallTransformer() { @NotNull @Override @@ -197,22 +213,6 @@ public class CallTransformer { 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> transformCall( diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/NewResolveOldInference.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/NewResolveOldInference.kt index a31143776ae..1cbebda0fae 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/NewResolveOldInference.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/NewResolveOldInference.kt @@ -240,8 +240,10 @@ class NewResolveOldInference( } override fun contextForVariable(stripExplicitReceiver: Boolean): TowerContext { - 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>? {