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

Throw when flatMap's mapper returns a non-iterable #59

Merged
merged 2 commits into from Nov 7, 2019
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
41 changes: 16 additions & 25 deletions spec.html
Expand Up @@ -354,19 +354,14 @@ <h1>%Iterator.prototype%.flatMap ( _mapper_ )</h1>
1. Let _value_ be ? IteratorValue(_next_).
1. Let _mapped_ be Call(_mapper_, *undefined*, &laquo; _value_ &raquo;).
1. IfAbruptCloseIterator(_mapped_, _iterated_).
1. Let _usingIterator_ be Get(_mapped_, @@iterator).
1. IfAbruptCloseIterator(_usingIterator_, _iterated_).
1. If _usingIterator_ is *undefined*, then
1. Perform ? Yield(_mapped_).
1. Else,
1. Let _innerIterator_ be ? GetIterator(_mapped_, ~sync~, _usingIterator_).
1. Let _innerAlive_ be *true*.
1. Repeat, while _innerAlive_ is *true*,
1. Let _innerNext_ be ? IteratorNext(_innerIterator_).
1. If ? IteratorComplete(_innerNext_) is *false*, set _innerAlive_ to *false*.
1. Else,
1. Let _innerValue_ be ? IteratorValue(_innerNext_).
1. Perform ? Yield(_innerValue_).
1. Let _innerIterator_ be ? GetIterator(_mapped_, ~sync~).
devsnek marked this conversation as resolved.
Show resolved Hide resolved
1. Let _innerAlive_ be *true*.
1. Repeat, while _innerAlive_ is *true*,
1. Let _innerNext_ be ? IteratorNext(_innerIterator_).
1. If ? IteratorComplete(_innerNext_) is *false*, set _innerAlive_ to *false*.
1. Else,
1. Let _innerValue_ be ? IteratorValue(_innerNext_).
1. Perform ? Yield(_innerValue_).
</emu-alg>
</emu-clause>

Expand Down Expand Up @@ -587,18 +582,14 @@ <h1>%AsyncIterator.prototype%.flatMap ( _mapper_ )</h1>
1. If ? IteratorComplete(_next_) is *true*, return *undefined*.
1. Let _value_ be ? IteratorValue(_next_).
1. Let _mapped_ be ? Await(? Call(_mapper_, *undefined*, &laquo; _value_ &raquo;)).
1. Let _usingIterator_ be ? Get(_mapped_, @@iterator).
1. If _usingIterator_ is *undefined*, then
1. Perform ? Yield(_mapped_).
1. Else,
1. Let _innerIterator_ be ? GetIterator(_mapped_, ~sync~, _usingIterator_).
1. Let _innerAlive_ be *true*.
1. Repeat, while _innerAlive_ is *true*,
1. Let _innerNext_ be ? Await(? IteratorNext(_innerIterator_)).
1. If ? IteratorComplete(_nextNext_) is *true*, set _innerAlive_ to *false*.
1. Else,
1. Let _innerValue_ be ? IteratorValue(_innerNext_).
1. Perform ? Yield(_innerValue_).
1. Let _innerIterator_ be ? GetIterator(_mapped_, ~async~).
devsnek marked this conversation as resolved.
Show resolved Hide resolved
1. Let _innerAlive_ be *true*.
1. Repeat, while _innerAlive_ is *true*,
1. Let _innerNext_ be ? Await(? IteratorNext(_innerIterator_)).
1. If ? IteratorComplete(_nextNext_) is *true*, set _innerAlive_ to *false*.
bakkot marked this conversation as resolved.
Show resolved Hide resolved
1. Else,
1. Let _innerValue_ be ? IteratorValue(_innerNext_).
1. Perform ? Yield(_innerValue_).
</emu-alg>
</emu-clause>

Expand Down