On 13 May 2013 17:58, Allen Wirfs-Brock <[email protected]> wrote: > Every other place in the language (syntax and built-in functions) where we > expect Iterables we transparently accept either iterator or generator > objects. Why should yield* be any different.
Generators are subtypes of iterators, but not the other way round. So it is to be expected that there are contexts where you can use the latter but not the former. And 'yield' is quite naturally a feature of generators. > However, there is another alternative to close that addresses the finally > issue. I can make it statically illegal for a "yield" statement to be nested > within a block that is protected by a "finally". This preserve the integrity > of "finally" which is my only concern. It also address the for-of early exit > issues. This restriction is trivial to specify (and should be only slightly > less trivial to implement). Since I don't currently have "close" in the spec. > I probably should have done this anyway. Yes, we had the same discussion in the V8 team the other week. It's a reasonable restriction, but it's also an ad-hoc restriction, which I'm personally not overly fond of. Moreover, there might be use cases where you control both definition and consumption of a generator, so that using finally might be safe and sensible. (On the other hand, there aren't really many meaningful use cases for finally to start with, so I don't worry too much about that.) In short, I could live with that, but don't think it's necessary. /Andreas _______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

