Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

InMemory: Add translation for object.Equals when object is null #23391

Merged
merged 1 commit into from
Nov 23, 2020

Conversation

smitpatel
Copy link
Member

Selectively assert exception in tests for other providers which works for InMemory

Selectively assert exception in tests for other providers which works for InMemory
@smitpatel smitpatel requested a review from a team November 19, 2020 02:14
@ghost
Copy link

ghost commented Nov 19, 2020

Hello @smitpatel!

Because this pull request has the auto-merge label, I will be glad to assist with helping to merge this pull request once all check-in policies pass.

p.s. you can customize the way I help with merging this pull request, such as holding this pull request until a specific person approves. Simply @mention me (@msftbot) and give me an instruction to get started! Learn more here.

@ghost
Copy link

ghost commented Nov 19, 2020

Apologies, while this PR appears ready to be merged, I've been configured to only merge when all checks have explicitly passed. The following integrations have not reported any progress on their checks and are blocking auto-merge:

  1. Azure Pipelines

These integrations are possibly never going to report a check, and unblocking auto-merge likely requires a human being to update my configuration to exempt these integrations from requiring a passing check.

Give feedback on this
From the bot dev team

We've tried to tune the bot such that it posts a comment like this only when auto-merge is blocked for exceptional, non-intuitive reasons. When the bot's auto-merge capability is properly configured, auto-merge should operate as you would intuitively expect and you should not see any spurious comments.

Please reach out to us at fabricbotservices@microsoft.com to provide feedback if you believe you're seeing this comment appear spuriously. Please note that we usually are unable to update your bot configuration on your team's behalf, but we're happy to help you identify your bot admin.

@smitpatel
Copy link
Member Author

/azp run

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

if (method.Name == nameof(object.Equals))
{
var argument = arguments[0];
if (argument.NodeType == ExpressionType.Convert
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

also ConvertChecked

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When we are here we are basically matching instance.Equals(param) method.
By default there would be method coming from object, Equals(object), the Type can also add overload of Equals(Type).
Now, we always flow null forward except for parameter values of the a method call since the method may not be take nullable parameters so we convert all the parameter to match their types if they are non-nullable type. Which can happen for the latter overload if any. Since we do this conversion (by calling ConvertToNonNullable function), it would always be a Convert node from nullable to non-nullable value, which we want to remove here since ((bool?)(bool)nullableBoolColumn) == null would throw exception even before comparing to null. Hence I put Convert node. Do you still think we need ConvertChecked here? (This is speculative future proofing), the tests work fine without this if block too.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In that case let's keep Convert only. Perhaps add a comment in case we decide to sweep thru entire codebase and unify convert+convertchecked checks. But I don't feel strongly.

@maumar maumar removed the auto-merge label Nov 20, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants