On Fri, Jul 12, 2013 at 4:17 PM, Tab Atkins Jr. <[email protected]> wrote:
> On Fri, Jul 12, 2013 at 3:55 PM, Andrew Fedoniouk
> <[email protected]> wrote:
>> Seems like I am not getting that famous ASI thing.
>>
>> I do not understand why here:
>>
>> foo
>> (exp);
>>
>> there is no semicolon injected. It rather should be this:
>>
>> foo;
>> (exp);
>>
>> if that ASI thing has any traces of logic behind.
>
> It has a very simple logic, just not the one you're assuming.
>
> You're probably thinking that the rule is "if a line doesn't end in a
> semicolon, and you can insert one without causing this line or the
> next to have a parse error, do so". The actual rule is "if a line
> doesn't end in a semicolon, attempt to join it with the following
> line. If that causes a syntax error, insert a semicolon and try
> again".
>
> In other words, ASI only happens when a semicolon is *required*, not
> when one is *possible*.
Your hypothesis would be true if not this case:
return
{ a:1 };
Why it injects ';' after the return? This
return { a:1 };
is perfectly valid construction.
>
>> BTW: what about "use strict" ? Does it govern ASI parsing rules?
>> If not then why?
>
> No, strict mode has no effect on ASI.
>
Too bad IMO.
--
Andrew Fedoniouk.
http://terrainformatica.com
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss