On Apr 24, 2014, at 12:16 PM, Brendan Eich wrote:
> Jason Orendorff wrote:
>> OnThu, Apr 24, 2014 at 1:38 PM, Allen Wirfs-Brock
>> <[email protected]> wrote:
>>> > [...]What we did take seriously was the concern about not running
>>> > generator finally blocks when a for-of initiated generator has an early
>>> > exit. We don't need to redefine @@iterator conventions to address that
>>> > issue.
>>
>> This reminds me --- "for-of initiated" here refers all the places
>> where the spec uses IteratorStep etc., right? Things like the spread
>> operator, destructuring assignment, and Array.from, for example?
>>
>> That is, we're talking about a protocol change, not a narrow change to
>> for-of evaluation. Right?
>
> No one is talking seriously about such a change.
This was always a consideration that I was aware of in this discussion and I
assume that I would have to review all the spec. level uses of IteratorStep.
The issue arises whenever there is a exist condition from the iterator draining
loop that can be trigger outside of the iterator's logic.
For example, if think I would expect this:
lines = Array.from(LineReader("file/path"), line => {if (line==="***eval***)
throw "evil exists in file" else return line});
to cleanup it open file descriptor, if this did:
for (line of LineReader("file/path"),{ine => {
if (line==="***eval***) throw "evil exists in file";
}
>
> The only proposal (let's table whether the name is 'return' or @@return) is
> whether for-of constructs should have a finally maybe-call of the iterator's
> return method, if present. Like SpiderMonkey's JS1.7-1.8 close method, based
> in part on Python 2.5 and up.
>
Really, the only reason we even considered this at the TC39 meeting was because
we believed it was a fix it now, or never situation. I'm now less convinced
that this is the situation. If we shipped ES6 as is and later added @@return
and the finally maybe-call within for-of, is anybody going to be unhappy or
broken? It would only really impact any generators that have finally cleanups
and and which are used in for-of loops with early terminations.
Allen
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss