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.
Revamp proposal for list patterns on enumerables #9165
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
base: main
Are you sure you want to change the base?
Revamp proposal for list patterns on enumerables #9165
Changes from all commits
a799a09
5385390
f3a1c75
d41e83d
f67d6bf
b520e79
66f3321
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Needs consideration: is the no-multiple-enumeration guarantee even possible when switching on the enumerable?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think so. I also don't think any of these scenarios would necessarily absolutely be expected to reduce multiple enumeration compared to each other:
The existing analyzers that warn about multiple enumeration in the last case can be augmented to see it happening in the prior two cases as well.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The compiler may be able to guarantee no multiple enumeration though. And then maybe
is [1] or [1, 2]
may not have to enumerate multiple times, and maybe this is worth guaranteeing.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think that must result in multiple enumerations because the
||
is not pattern matching. Basically it's two independent pattern matching expressions each of which has single enumeration ofenumerable
.This though is a case where we'd want to avoid multiple enumerations.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Think that would be important for us to support list patterns on
IEnumerable<T>
. Basically within a single pattern expression orswitch
there should be only a single enumeration of the enumerable. Once you break out of the pattern, with say an||
, then all bets are off.