<div dir="ltr">that wouldn't solve the issue we are trying to solve, because the desugared version will have x, and y in scope, right?<div><br></div><div>we are trying to avoid issues with name clashes. If the new syntax doesn't solve that, it's not any more helpful than `<span style="font-size:12.8px">import * as foo from "mod"</span>`</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Dec 15, 2017 at 3:17 AM, Isiah Meadows <span dir="ltr"><<a href="mailto:isiahmeadows@gmail.com" target="_blank">isiahmeadows@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p dir="ltr">I see it as it should semantically be identical to this, short a duplicate module request avoided:</p>
<p dir="ltr">```js<br>
// Proposed<br>
import {x, y} as foo from "mod"</p>
<p dir="ltr">// Desugared<br>
import * as foo from "mod"<br>
import {x, y} from "mod"<br>
```</p>
<p dir="ltr">(This includes the implication `x`/`foo.x` and `y`/`foo.y` are equivalent.)</p><div class="HOEnZb"><div class="h5">
<br><div class="gmail_quote"><div dir="ltr">On Thu, Dec 14, 2017, 15:30 Andrea Giammarchi <<a href="mailto:andrea.giammarchi@gmail.com" target="_blank">andrea.giammarchi@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">I've just tried monkey patching all the scenarios I've described/mentioned and it works right away.<div><br></div><div>// x.js</div><div><div style="color:rgb(212,212,212);background-color:rgb(30,30,30);font-family:"Droid Sans Mono",monospace,monospace,"Droid Sans Fallback";font-size:14px;line-height:19px;white-space:pre-wrap"><div><span style="color:rgb(197,134,192)">export</span> <span style="color:rgb(86,156,214)">let</span> <span style="color:rgb(156,220,254)">x</span> = <span style="color:rgb(181,206,168)">1</span>;</div><div><span style="color:rgb(220,220,170)">setTimeout</span>(() <span style="color:rgb(86,156,214)">=></span> <span style="color:rgb(156,220,254)">x</span> = <span style="color:rgb(181,206,168)">2</span>, <span style="color:rgb(181,206,168)">2000</span>);</div></div></div><div><br>// module.js</div><div><div style="color:rgb(212,212,212);background-color:rgb(30,30,30);font-family:"Droid Sans Mono",monospace,monospace,"Droid Sans Fallback";font-size:14px;line-height:19px;white-space:pre-wrap"><div><span style="color:rgb(197,134,192)">import</span> {<span style="color:rgb(156,220,254)">x</span>} <span style="color:rgb(197,134,192)">from</span> <span style="color:rgb(206,145,120)">'./x.js'</span>;</div><div><span style="color:rgb(86,156,214)">const</span> <span style="color:rgb(156,220,254)">obj</span> = <span style="color:rgb(78,201,176)">Object</span>.<span style="color:rgb(220,220,170)">defineProperty</span>({}, <span style="color:rgb(206,145,120)">'x'</span>, {<span style="color:rgb(220,220,170)">get</span>() { <span style="color:rgb(197,134,192)">return</span> <span style="color:rgb(156,220,254)">x</span>; }});</div><div><span style="color:rgb(197,134,192)">export</span> {<span style="color:rgb(156,220,254)">x</span>, <span style="color:rgb(156,220,254)">obj</span>};</div></div></div><div><br></div><div>// index.js</div><div><div style="color:rgb(212,212,212);background-color:rgb(30,30,30);font-family:"Droid Sans Mono",monospace,monospace,"Droid Sans Fallback";font-size:14px;line-height:19px;white-space:pre-wrap"><div><span style="color:rgb(197,134,192)">import</span> {<span style="color:rgb(156,220,254)">x</span>, <span style="color:rgb(156,220,254)">obj</span>} <span style="color:rgb(197,134,192)">from</span> <span style="color:rgb(206,145,120)">'./module.js'</span>;</div><div><span style="color:rgb(78,201,176)">console</span>.<span style="color:rgb(220,220,170)">log</span>(<span style="color:rgb(156,220,254)">x</span>, <span style="color:rgb(156,220,254)">obj</span>.<span style="color:rgb(156,220,254)">x</span>);</div><div><span style="color:rgb(220,220,170)">setTimeout</span>(() <span style="color:rgb(86,156,214)">=></span> <span style="color:rgb(78,201,176)">console</span>.<span style="color:rgb(220,220,170)">log</span>(<span style="color:rgb(156,220,254)">x</span>, <span style="color:rgb(156,220,254)">obj</span>.<span style="color:rgb(156,220,254)">x</span>), <span style="color:rgb(181,206,168)">3000</span>);</div></div></div><div><br></div><div>I see 1, 1 and then 2, 2 without using proxies or exotic objects.</div><div><br></div><div>`{a, b, c} as obj` should really just avoid `a`, `b`, `c` scope pollution and create those accessors in the `obj` constant object reference.</div><div><br></div><div>Regards</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Dec 14, 2017 at 5:55 PM, Darien Valentine <span dir="ltr"><<a href="mailto:valentinium@gmail.com" target="_blank">valentinium@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">@Andrea I think we are thinking along the same lines. I meant proxy with a lowercase p — what you described fits the bill.</div>
<br>______________________________<wbr>_________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" target="_blank">https://mail.mozilla.org/<wbr>listinfo/es-discuss</a><br>
<br></blockquote></div><br></div>
______________________________<wbr>_________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" target="_blank">https://mail.mozilla.org/<wbr>listinfo/es-discuss</a><br>
</blockquote></div>
</div></div></blockquote></div><br></div>