From 32299a7b9b2b932c45ecc32ad4268861558793f7 Mon Sep 17 00:00:00 2001 From: svtk Date: Mon, 11 Nov 2013 17:51:23 +0400 Subject: [PATCH] Resolve fake call for 'equals(Any?)' with actual right expression instead of fake one --- .../expressions/BasicExpressionTypingVisitor.java | 10 ++++++++-- .../types/expressions/ExpressionTypingUtils.java | 12 +++++++++++- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/BasicExpressionTypingVisitor.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/BasicExpressionTypingVisitor.java index 0f1d1bb377b..ebaebcc9e0a 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/BasicExpressionTypingVisitor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/BasicExpressionTypingVisitor.java @@ -878,8 +878,14 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor { dataFlowInfo = leftTypeInfo.getDataFlowInfo(); ExpressionTypingContext contextWithDataFlow = context.replaceDataFlowInfo(dataFlowInfo); - OverloadResolutionResults resolutionResults = resolveFakeCall( - contextWithDataFlow, receiver, OperatorConventions.EQUALS, KotlinBuiltIns.getInstance().getNullableAnyType()); + TemporaryBindingTrace traceInterpretingRightAsNullableAny = TemporaryBindingTrace.create( + context.trace, "trace to resolve 'equals(Any?)' interpreting as of type Any? an expression:" + right); + traceInterpretingRightAsNullableAny.record(EXPRESSION_TYPE, right, KotlinBuiltIns.getInstance().getNullableAnyType()); + traceInterpretingRightAsNullableAny.record(PROCESSED, right); + + OverloadResolutionResults resolutionResults = + resolveFakeCall(receiver, context.replaceBindingTrace(traceInterpretingRightAsNullableAny), + Collections.singletonList(right), OperatorConventions.EQUALS); dataFlowInfo = facade.getTypeInfo(right, contextWithDataFlow).getDataFlowInfo(); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingUtils.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingUtils.java index 3731491ae63..eeedff37c39 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingUtils.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingUtils.java @@ -362,7 +362,17 @@ public class ExpressionTypingUtils { @NotNull ReceiverValue receiver, @NotNull Name name ) { - return makeAndResolveFakeCall(receiver, context, Collections.emptyList(), name).getSecond(); + return resolveFakeCall(receiver, context, Collections.emptyList(), name); + } + + @NotNull + public static OverloadResolutionResults resolveFakeCall( + @NotNull ReceiverValue receiver, + @NotNull ExpressionTypingContext context, + @NotNull List valueArguments, + @NotNull Name name + ) { + return makeAndResolveFakeCall(receiver, context, valueArguments, name).getSecond(); } @NotNull