Refactoring: extracted isInvokeCallOnVariable
This commit is contained in:
@@ -399,7 +399,7 @@ public class CallResolver {
|
|||||||
@NotNull OverloadResolutionResultsImpl<D> results,
|
@NotNull OverloadResolutionResultsImpl<D> results,
|
||||||
@NotNull TracingStrategy tracing
|
@NotNull TracingStrategy tracing
|
||||||
) {
|
) {
|
||||||
if (context.call.getCallType() == Call.CallType.INVOKE) return;
|
if (CallResolverUtil.isInvokeCallOnVariable(context.call)) return;
|
||||||
if (!results.isSingleResult()) {
|
if (!results.isSingleResult()) {
|
||||||
if (results.getResultCode() == INCOMPLETE_TYPE_INFERENCE) {
|
if (results.getResultCode() == INCOMPLETE_TYPE_INFERENCE) {
|
||||||
argumentTypeResolver.checkTypesWithNoCallee(context, RESOLVE_FUNCTION_ARGUMENTS);
|
argumentTypeResolver.checkTypesWithNoCallee(context, RESOLVE_FUNCTION_ARGUMENTS);
|
||||||
@@ -417,7 +417,7 @@ public class CallResolver {
|
|||||||
@NotNull OverloadResolutionResultsImpl<D> results,
|
@NotNull OverloadResolutionResultsImpl<D> results,
|
||||||
@NotNull TracingStrategy tracing
|
@NotNull TracingStrategy tracing
|
||||||
) {
|
) {
|
||||||
if (context.call.getCallType() == Call.CallType.INVOKE) return results;
|
if (CallResolverUtil.isInvokeCallOnVariable(context.call)) return results;
|
||||||
|
|
||||||
if (results.isSingleResult()) {
|
if (results.isSingleResult()) {
|
||||||
Set<ValueArgument> unmappedArguments = results.getResultingCall().getCallToCompleteTypeArgumentInference().getUnmappedArguments();
|
Set<ValueArgument> unmappedArguments = results.getResultingCall().getCallToCompleteTypeArgumentInference().getUnmappedArguments();
|
||||||
|
|||||||
@@ -21,12 +21,12 @@ import com.intellij.psi.PsiElement;
|
|||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.lang.descriptors.*;
|
import org.jetbrains.jet.lang.descriptors.*;
|
||||||
import org.jetbrains.jet.lang.psi.Call;
|
import org.jetbrains.jet.lang.psi.*;
|
||||||
import org.jetbrains.jet.lang.psi.CallKey;
|
|
||||||
import org.jetbrains.jet.lang.psi.JetExpression;
|
|
||||||
import org.jetbrains.jet.lang.resolve.calls.context.BasicCallResolutionContext;
|
import org.jetbrains.jet.lang.resolve.calls.context.BasicCallResolutionContext;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.inference.ConstraintPosition;
|
import org.jetbrains.jet.lang.resolve.calls.inference.ConstraintPosition;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.inference.ConstraintSystem;
|
import org.jetbrains.jet.lang.resolve.calls.inference.ConstraintSystem;
|
||||||
|
import org.jetbrains.jet.lang.resolve.scopes.receivers.ExpressionReceiver;
|
||||||
|
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverValue;
|
||||||
import org.jetbrains.jet.lang.types.*;
|
import org.jetbrains.jet.lang.types.*;
|
||||||
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
||||||
|
|
||||||
@@ -104,7 +104,7 @@ public class CallResolverUtil {
|
|||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public static CallKey createCallKey(@NotNull BasicCallResolutionContext context) {
|
public static CallKey createCallKey(@NotNull BasicCallResolutionContext context) {
|
||||||
if (context.call.getCallType() == Call.CallType.INVOKE) {
|
if (isInvokeCallOnVariable(context.call)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
PsiElement callElement = context.call.getCallElement();
|
PsiElement callElement = context.call.getCallElement();
|
||||||
@@ -146,4 +146,12 @@ public class CallResolverUtil {
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean isInvokeCallOnVariable(@NotNull Call call) {
|
||||||
|
if (call.getCallType() != Call.CallType.INVOKE) return false;
|
||||||
|
ReceiverValue thisObject = call.getThisObject();
|
||||||
|
//calleeExpressionAsThisObject for invoke is always ExpressionReceiver, see CallForImplicitInvoke
|
||||||
|
JetExpression expression = ((ExpressionReceiver) thisObject).getExpression();
|
||||||
|
return expression instanceof JetSimpleNameExpression;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -324,7 +324,7 @@ public class CandidateResolver {
|
|||||||
public <D extends CallableDescriptor> void completeNestedCallsInference(
|
public <D extends CallableDescriptor> void completeNestedCallsInference(
|
||||||
@NotNull CallCandidateResolutionContext<D> context
|
@NotNull CallCandidateResolutionContext<D> context
|
||||||
) {
|
) {
|
||||||
if (context.call.getCallType() == Call.CallType.INVOKE) return;
|
if (CallResolverUtil.isInvokeCallOnVariable(context.call)) return;
|
||||||
ResolvedCallImpl<D> resolvedCall = context.candidateCall;
|
ResolvedCallImpl<D> resolvedCall = context.candidateCall;
|
||||||
for (Map.Entry<ValueParameterDescriptor, ResolvedValueArgument> entry : resolvedCall.getValueArguments().entrySet()) {
|
for (Map.Entry<ValueParameterDescriptor, ResolvedValueArgument> entry : resolvedCall.getValueArguments().entrySet()) {
|
||||||
ValueParameterDescriptor parameterDescriptor = entry.getKey();
|
ValueParameterDescriptor parameterDescriptor = entry.getKey();
|
||||||
@@ -398,7 +398,7 @@ public class CandidateResolver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void completeNestedCallsForNotResolvedInvocation(@NotNull CallResolutionContext<?> context, @NotNull Collection<? extends ValueArgument> arguments) {
|
private void completeNestedCallsForNotResolvedInvocation(@NotNull CallResolutionContext<?> context, @NotNull Collection<? extends ValueArgument> arguments) {
|
||||||
if (context.call.getCallType() == Call.CallType.INVOKE) return;
|
if (CallResolverUtil.isInvokeCallOnVariable(context.call)) return;
|
||||||
if (context.checkArguments == CheckValueArgumentsMode.DISABLED) return;
|
if (context.checkArguments == CheckValueArgumentsMode.DISABLED) return;
|
||||||
|
|
||||||
for (ValueArgument argument : arguments) {
|
for (ValueArgument argument : arguments) {
|
||||||
|
|||||||
Reference in New Issue
Block a user