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