<p dir="ltr">For what it's worth, if the `=` requires a space before it (I disagree that the semantic ambiguity must exist at assignment - it could simply require whitespace), that alone would create sufficient context to differentiate. Compare these two:</p>
<p dir="ltr">```js<br>
a == {} // loose equals, almost always false<br>
a = = {} // a = undefined<br>
```</p>
<p dir="ltr">Labels would already be unambiguous, because it can only parse statements.</p>
<p dir="ltr">Here's my concern about ambiguity, though:</p>
<p dir="ltr">```js<br>
var b = 1<br>
var a = b<br>
= { c }<br>
```</p>
<p dir="ltr">What's `a`? ASI makes this much less obvious to resolve, and resolving this by changing assignment to require no line terminator before the `=` is technically a breaking change. (Oh, and the Closure Compiler can and will spit out that.)</p>
<br><div class="gmail_quote"><div dir="ltr">On Sun, Oct 30, 2016, 23:35 Yongxu Ren <<a href="mailto:renyongxu@gmail.com">renyongxu@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="gmail_msg">For supporting label, yes that is kinda a problem.<div class="gmail_msg">However, IMO jumping around labels is an anti-pattern in functional programming, I don't think it needs to be supported. Syntax error might be the most reasonable way in this case.</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">for 'match', while it is just some thought. I wasn't intended to proposal it but just showing potential of  extending `= expression`.</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Personally I do not think label would be a problem for implementing this pattern. </div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">here are two possible solutions I can think of:</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">1. If `[name]:` exist inside the block, just parse it as object and throw error if the structure doesn't match.</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">2. If `[label]:` does exist inside the block,  only allow in scope jump. (label not accessible outside the scope)</div><div class="gmail_msg"><br class="gmail_msg"></div></div>
_______________________________________________<br class="gmail_msg">
es-discuss mailing list<br class="gmail_msg">
<a href="mailto:es-discuss@mozilla.org" class="gmail_msg" target="_blank">es-discuss@mozilla.org</a><br class="gmail_msg">
<a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" class="gmail_msg" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br class="gmail_msg">
</blockquote></div>