Adjusted spec of For-In to insist on Iterable #291
Merged
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.
The specification of a for-in statement used to rely on having an
iterator
member on the iterable, and on being able to domoveNext()
andcurrent
on the returned object. With this change, we insist that the iterable must actually have typeIterable<T>
for someT
.Note that deployed code already requires this (verified with
dart
anddart2js
), and it is already specified for an asynchronous for-in that it is a dynamic error for the iterable to not be aStream
. So this is more consistent, not breaking in practice, and more strongly typed.