Allen Wirfs-Brock (2013-11-28T19:24:16.000Z)
On Nov 28, 2013, at 10:40 AM, Brendan Eich wrote:

> Kevin Smith wrote:
>> 
>>    function*(a = yield/b/g) {
>>      a = yield/b/g;
>>    }
>> 
>> 
>> Why allow yield as an identifier in parameter defaults of generators?  Wouldn't it be simpler just to disallow there as well?
> 
> When proposing an irregularity, you need a better reason than "why allow?"
> 
> Parameter default values pave a cowpath of the form
> 
>  function f(a) {
>    a = a || default_a;
>    ...
>  }
> 
> (yes, falsy test and all).
> 
> The new form does not desugar that way, of course. But defaults are evaluated on each activation (contrast with Python, the mutable value default shared singleton side-channel). So why shouldn't yield in a default work? There could be a reason, but we don't have it yet.
> 
> Allen may have a thought.

'yield' is already disallowed in generator function default initializer expressions (although I was reviewing the latest spec. revision yesterday and there may still be still bugs I have to fix in that regard).

The reason it isn't allowed is that the generator object is not yet instantiated and active at the point where a default value initializer would be evaluated. (note you yield from a invocation on the generator object, not the generator function that creates a generator object) .

Allen
domenic at domenicdenicola.com (2013-12-10T01:25:55.792Z)
`yield` is already disallowed in generator function default initializer expressions (although I was reviewing the latest spec. revision yesterday and there may still be still bugs I have to fix in that regard).

The reason it isn't allowed is that the generator object is not yet instantiated and active at the point where a default value initializer would be evaluated. (note you yield from a invocation on the generator object, not the generator function that creates a generator object) .