Use operation reference as lookup element to preserve old behaviour

See related changes in fb72726f08
This commit is contained in:
Mikhail Zarechenskiy
2017-08-08 16:16:28 +03:00
parent cf3615d279
commit 46d0ea3eed
@@ -1116,7 +1116,7 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
ExpressionTypingContext contextWithDataFlow = context.replaceDataFlowInfo(dataFlowInfo); ExpressionTypingContext contextWithDataFlow = context.replaceDataFlowInfo(dataFlowInfo);
ExpressionReceiver receiver = createReceiverForEquals(left, contextWithDataFlow); ExpressionReceiver receiver = createReceiverForEquals(left, contextWithDataFlow);
Collection<FunctionDescriptor> equalsFunctions = findEqualsWithNullableAnyParameter(receiver, left); Collection<FunctionDescriptor> equalsFunctions = findEqualsWithNullableAnyParameter(receiver, expression);
Call call = CallMaker.makeCallWithExpressions( Call call = CallMaker.makeCallWithExpressions(
expression, expression,
@@ -1158,13 +1158,13 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
private List<FunctionDescriptor> findEqualsWithNullableAnyParameter( private List<FunctionDescriptor> findEqualsWithNullableAnyParameter(
@NotNull ExpressionReceiver receiver, @NotNull ExpressionReceiver receiver,
@NotNull KtExpression left @NotNull KtBinaryExpression expression
) { ) {
KotlinType refinedType = KotlinBuiltIns.isNothingOrNullableNothing(receiver.getType()) ? KotlinType refinedType = KotlinBuiltIns.isNothingOrNullableNothing(receiver.getType()) ?
components.builtIns.getNullableAnyType() : components.builtIns.getNullableAnyType() :
receiver.getType(); receiver.getType();
Collection<SimpleFunctionDescriptor> equalsMembers = Collection<SimpleFunctionDescriptor> equalsMembers = refinedType.getMemberScope().getContributedFunctions(
refinedType.getMemberScope().getContributedFunctions(OperatorNameConventions.EQUALS, new KotlinLookupLocation(left)); OperatorNameConventions.EQUALS, new KotlinLookupLocation(expression.getOperationReference()));
return CollectionsKt.filter(equalsMembers, descriptor -> { return CollectionsKt.filter(equalsMembers, descriptor -> {
if (ErrorUtils.isError(descriptor)) return true; if (ErrorUtils.isError(descriptor)) return true;