On Jul 24, 2010, at 3:38 PM, Maciej Stachowiak wrote:

>> ASI has two parts: syntax error correction + restricted productions. The 
>> pain users feel from ASI in my experience is mostly not from the 
>> well-specified error correction part. It's mainly due to those infernal 
>> restricted productions, especially
>> 
>> ReturnStatement:
>>   return [no LineTerminator here] Expressionopt ; 
> 
> That's a good point. If we had a "disable ASI" mode, would it just insert 
> syntax errors wherever a semicolon would have been inserted, or would it make 
> statements that could be valid multiline statements but for ASI have their 
> expected multiline meaning? The latter would remove more of the annoyance of 
> ASI, but it wouldn't be a subset of the language. I could see an argument for 
> either, or for no change.

I see three tenable alternatives:

1. Remove ASI in some opt-in version, in full -- no error correction, no 
restricted productions.

2. Remove ASI's restricted productions in some opt-in version, but keep the 
error correction aspect of ASI (i.e., remove rule 3 of the three rules of ASI 
at ECMA-262 7.9.1).

3. No change.

I don't see why you'd remove error correction but leave the restricted 
productions just to have a subset language. We're adding new syntax to Harmony 
edition(s). Beyond this, the source of most ASI pain is the restricted 
productions. Error correction, especially via ASI rule 1 second bullet 
(inserting a ; before a }) is a win for usability.

I strongly suspect we'll stick with 3 indefinitely, but I'm open to discussing 
2 briefly. Better than discussing would be some codesearch.google type study of 
a large swath of web JS, measuring how much would break under 2.

/be


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

Reply via email to