<br><br><div class="gmail_quote">On Sat, Jun 30, 2012 at 12:03 PM, Kevin Smith <span dir="ltr"><<a href="mailto:khs4473@gmail.com" target="_blank">khs4473@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 class="gmail_quote"><div class="im"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_quote"><div><div><div>Just define the order of execution between ES6 and pre-ES6 to run legacy.js first. </div>


</div></div></div></blockquote><div><br></div></div><div>You'd have to detect (before execution) whether a script was "ES6" or not, which is not practical, AFAICT.</div></div></blockquote><div><br></div><div>
As Dave suggests, my gut feeling is that we don't want </div><div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">    // main.js</div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">
    import g from "./legacy.js";</div></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">to mean "legacy.js" can be ES6 or not. It's ES6 or it's an error. </div>
<div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)"><br></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">
However, let's consider your proposal anyway. Let's read main.js and parse it. </div><div style="background-color:rgb(255,255,255)"><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px">    // main.js</div>
<div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px">    import g from "./legacy.js";</div><div><font color="#222222" face="arial, sans-serif">Now we know we need legacy.js, so we fetch it and parse it. Does it form an ES6 module? Go with it. No? Ok fallback and execute it using compatibility rules. This could include looking for clues that tell us this is an AMD or node file. We know this mode is a hack, we only need it to be good enough to push modules over the hump.</font></div>
</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_quote"><div><br></div><div>But even if you could, then simply upgrading "legacy.js" to use ES6 modules would change the order of execution, which could cause observable differences of behavior in the program.</div>
</div></blockquote><div><br></div><div>yes, modules change the order of execution.  I doubt we can hope for "simply upgrading".  However, I don't think it necessarily follows that interoperation is impossible and that is much more important.</div>
<div><br></div><div>jjb<br><div class="gmail_quote"><span class="HOEnZb"><font color="#888888">

<div><br></div><div>- Kevin</div></font></span></div>
</div></div><br>