On Sep 25, 2012, at 1:30 PM, Brendan Eich wrote:

> Allen Wirfs-Brock wrote:
>> I think we should go the all AssignmentExpression route.  It avoid 
>> ArrayLiteral-like comma confusion in all three positions.  It is also a 
>> simpler set of rules to teach and remember. 
> 
> It's different from the statement forms, though.

The statement form of if is already different in that parens are required.  If 
you have the AssignmentExpression restriction on the paren-feree comprehension 
if clause a parenthesized comma expression would still be valid and look 
exactly like the statement form. 

> 
> Again, this is a non-issue in practice. Nobody writes comma expressions in 
> those places.
> 
>>   Finally, it leave open the future possibility of ArrayLiterals that have 
>> comprehensions in element positions. (not that I'm recommending this...) 
> 
> Why wouldn't comprehensions be allowed in ArrayLiteral element positions? 
> That falls out of any grammar that puts comprehensions at PrimaryExpression 
> precedence, where they must be.

Just to be clear about what I meant... I can imagine in the future somebody 
proposing an extension to ArrayLiteral that would permit something like:
  let a = [0,  n for n in range(1,10) if !(n%2), 100];
which produced similar array to [0,1,3,5,7,9,2,4,6,8,10,100].

If ES6 permits Expression in if clauses this would be incompatible change.

Like you say, it's not a big deal and not necessarily an extension that I would 
be a fan of.

> 
> This is not a huge deal and I defer to Jason as champion-apparent, but it 
> does seem worth agreeing on the same Expression non-terminal for if and for 
> conditions in both statements and comprehensions, or finding a better reason 
> to change in the latter.
> 
> /be
> 

_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to