<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><div><br class=""><blockquote type="cite" class=""><div class="">Le 14 janv. 2018 à 03:31, Isiah Meadows <<a href="mailto:isiahmeadows@gmail.com" class="">isiahmeadows@gmail.com</a>> a écrit :</div><br class="Apple-interchange-newline"><div class=""><span style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">Inline</span><br style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">-----</span><br style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">Isiah Meadows</span><br style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><a href="mailto:me@isiahmeadows.com" style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">me@isiahmeadows.com</a><br style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">Looking for web consulting? Or a new website?</span><br style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">Send me an email and we can get started.</span><br style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><a href="http://www.isiahmeadows.com/" style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">www.isiahmeadows.com</a><br style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">On Sat, Jan 13, 2018 at 9:54 AM, Claude Pache <</span><a href="mailto:claude.pache@gmail.com" style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">claude.pache@gmail.com</a><span style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">> wrote:</span><br style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><blockquote type="cite" style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class=""><br class=""><br class="">Le 12 janv. 2018 à 22:09, Isiah Meadows <<a href="mailto:isiahmeadows@gmail.com" class="">isiahmeadows@gmail.com</a>> a écrit :<br class=""><br class="">I know this is probably bad timing (considering [this PR][1] and the<br class="">fallout that followed), but I was thinking that it'd be nice if we<br class="">could insert a `[no LineTerminator here]` clause in a few places, to<br class="">remove some of the ASI hazards for those going semicolon-free, along<br class="">with some extras for consistency:<br class=""><br class="">- Before the `[` in the second rule of [`MemberExpression`][2] and the<br class="">fourth rule of [`CallExpression`][3]<br class="">- Before `Arguments` in the last rule of [`MemberExpression`][2], the<br class="">third and sixth rule of [`CallExpression`][3], and<br class="">[`CoverCallExpressionAndAsyncArrowHead`][4]<br class="">- Before the `(` in [`FunctionDeclaration`][5],<br class="">[`FunctionExpression`][6], the first, fourth, and fifth rule of<br class="">[`MethodDefinition`][7], [`GeneratorMethod`][8], both rules in<br class="">[`GeneratorDeclaration`][9], and [`GeneratorFunction`][10]<br class=""><br class="">One of the practical effects would be this: this source (taken from the<br class="">spec):<br class=""><br class="">```js<br class="">a = b + c<br class="">(d + e).print()<br class="">```<br class=""><br class="">is currently interpreted as:<br class=""><br class="">```js<br class="">a = b + c(d + e).print();<br class="">```<br class=""><br class="">but would, with this proposal, be interpreted as this, which is a<br class="">*lot* more intuitive with what people would expect:<br class=""><br class="">```js<br class="">a = b + c;<br class="">(d + e).print();<br class="">```<br class=""><br class="">I know there's risk of web compat concerns, but I doubt they'd be<br class="">significant for anything that's not minified via the Closure Compiler<br class="">(which limits line length by default for reasons of old IE). Also, for<br class="">most non-ASI people, they probably just forgot a semicolon anyways,<br class="">and [here][11] is a concrete example of this, where ESLint was fixing<br class="">a linter violation incorrectly because it wasn't reading it as you'd<br class="">expect.<br class=""><br class=""><br class="">I think that the BC incompatibility issue is more than just a risk. I recall<br class="">(but I couldn’t find it) that someone gave the example of some library that<br class="">reads better when used as:<br class=""><br class="">```js<br class="">foo<br class=""> (bar)<br class=""> (baz)<br class="">```<br class=""></blockquote><br style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">Do you have any ideas where I could look to potentially find it? I've</span><br style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">never seen *that* kind of DSL before, and that's an interesting use</span><br style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">case I haven't considered.</span><br style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""></div></blockquote><div><br class=""></div><div>I’ve finally found, see:</div><div><a href="https://esdiscuss.org/topic/consider-adding-more-no-lineterminator-here-to-avoid-problem-caused-by-omit-the-semicolon#content-3" class="">https://esdiscuss.org/topic/consider-adding-more-no-lineterminator-here-to-avoid-problem-caused-by-omit-the-semicolon#content-3</a></div><div><br class=""></div><div>Maybe not a significant example, but don’t underestimate the creativity of hackers.</div><div><br class=""></div><blockquote type="cite" class=""><div class=""><br style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><blockquote type="cite" style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class=""><br class="">Also, cases you have forgotten, and where I *really* wish there be a [NLTH]<br class="">rule, are *after* some contextual keywords that are used in prefix position,<br class="">namely `get`, `set` and `static` (as it is already the case for `async`).<br class="">See<br class=""><a href="https://tc39.github.io/proposal-class-fields/#sec-asi-hazards-in-class-bodies" class="">https://tc39.github.io/proposal-class-fields/#sec-asi-hazards-in-class-bodies</a><br class="">for context. This is not only to satisfy my coding style, but also to ensure<br class="">consistency when further contextual keywords will be added in the top level<br class="">of class bodies, since those future keyword will require such a [NLTH] rule<br class="">in order to be compatible with previously written field declarations that<br class="">take advantage ASI.<br class=""></blockquote><br style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">I thought about those, and I would ideally like those to be similarly</span><br style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">chnaged, but I decided against including them in this particular</span><br style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">proposal, since I wanted to focus on `[` and `(`, and I wasn't as keen</span><br style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">on web compat (considering it's actually a style many people prefer).</span><br style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""></div></blockquote><div><br class=""></div>As someone who uses semicolon-less style, `[`, `(` and other punctuation marks are not issues, but `get`, `set` and `static` in class fields are. My analysis:</div><div><a href="https://github.com/tc39/proposal-class-fields/issues/7#issuecomment-331670382" class="">https://github.com/tc39/proposal-class-fields/issues/7#issuecomment-331670382</a></div><div><br class=""></div><div>But regardless of your coding style, the historical behaviour of `get`, `set` and `static` in classes introduces some irregularity, which is always bad, while `(` and `[` do not:</div><div><br class=""></div><div>```js</div><div>class C {</div><div>    post // implicit semicolon here</div><div>    foo () { }</div><div>}</div><div><br class=""></div><div><div>class D {</div><div>    get // no implicit semicolon here</div><div>    foo () { }</div><div>}</div><div class=""><br class=""></div></div><div>```</div><div><br class=""></div><div>There are also issues around `in` and `instanceof`, but those are more likely to produce a syntax error in case of non-working ASI, and I think they are more problematic to correct.</div><div><br class=""></div><div>—Claude</div><div><br class=""></div><div><br class=""><blockquote type="cite" class=""><div class=""><br style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><blockquote type="cite" style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class=""><br class="">—Claude<br class=""><br class=""><br class=""><br class=""><br class="">[1]: <a href="https://github.com/tc39/ecma262/pull/1062" class="">https://github.com/tc39/ecma262/pull/1062</a><br class="">[2]: <a href="https://tc39.github.io/ecma262/#prod-MemberExpression" class="">https://tc39.github.io/ecma262/#prod-MemberExpression</a><br class="">[3]: <a href="https://tc39.github.io/ecma262/#prod-CallExpression" class="">https://tc39.github.io/ecma262/#prod-CallExpression</a><br class="">[4]:<br class=""><a href="https://tc39.github.io/ecma262/#prod-CoverCallExpressionAndAsyncArrowHead" class="">https://tc39.github.io/ecma262/#prod-CoverCallExpressionAndAsyncArrowHead</a><br class="">[5]: https://tc39.github.io/ecma262/#prod-FunctionDeclaration<br class="">[6]: https://tc39.github.io/ecma262/#prod-FunctionExpression<br class="">[7]: https://tc39.github.io/ecma262/#prod-MethodDefinition<br class="">[8]: https://tc39.github.io/ecma262/#prod-GeneratorMethod<br class="">[9]: https://tc39.github.io/ecma262/#prod-GeneratorDeclaration<br class="">[10]: https://tc39.github.io/ecma262/#prod-GeneratorExpression<br class="">[11]: https://github.com/eslint/eslint/issues/7787<br class=""><br class="">-----<br class=""><br class="">Isiah Meadows<br class="">me@isiahmeadows.com<br class=""><br class="">Looking for web consulting? Or a new website?<br class="">Send me an email and we can get started.<br class="">www.isiahmeadows.com<br class="">_______________________________________________<br class="">es-discuss mailing list<br class="">es-discuss@mozilla.org<br class="">https://mail.mozilla.org/listinfo/es-discuss</blockquote></div></blockquote></div><br class=""></body></html>