Fix static name resolution in presence of instance extension members with matching names #13973
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #13965
The fix is conservative in that name resolution filters extension members on static v. instance (except on error diagnostic paths when all get included)
As a side note, realistically we could have name resolution filter more content on static v. instance which would allow, for example, static methods to have the same name as instance methods. This is allowed in C# but not allowed in F#. However we don't currently do this and there's no particular language suggestion for it. I've written the code so that the same types could be extended to that.
It's important to do the filtering for (instance) extension methods because they can definitely have the same name as static content in the type (nested types, properties etc.).