<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">I should have also included:<div><br></div><div>2A) Hopefully, overtime, the old script syntactic goal will fade from use, and the module goal will become the norm for new code.</div><div><br></div><div><br><div><div>On Jan 24, 2014, at 11:38 AM, Allen Wirfs-Brock wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Jan 24, 2014, at 9:32 AM, David Bruant wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">
  
    <meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type">
  
  <div text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">Le 24/01/2014 18:26, John Lenz a
      écrit :<br>
    </div>
    <blockquote cite="mid:CACHUifwRZb29twM8_PB+fQ=TRabSCDkF4YJ3ZwEyFXj0ki2usw@mail.gmail.com" type="cite">
      <div dir="ltr"><br>
        <div class="gmail_extra">
          <div class="gmail_quote">
            <blockquote class="gmail_quote" style="margin:0 0 0
              .8ex;border-left:1px #ccc solid;padding-left:1ex">
              <div dir="ltr">
                <div class="gmail_extra">
                  <div class="gmail_quote">
                    <div><br>
                    </div>
                    <div>REPL is a dilemma: if you parse as module, then
                      obtaining the last expression value is not simple.
                      if you parse as a script, then common cut/paste
                      fails on export/import statements.</div>
                  </div>
                </div>
              </div>
            </blockquote>
            <div><br>
            </div>
            <div>My basic question remains.  As a tool owner how do I
              know if what I'm looking at is intended to be a Module or
              a Script?<br>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
    How do you know if some code is intended for the browser or Node?<br>
    How do you know some code is intended to be used in a WebWorker and
    not in the main thread?<br>
    How do you know the code won't be concatenated a "use strict" when
    someone else uses it?<br>
    <br>
    The code itself lacks the context in which it's being loaded (hence
    very defensive patterns like UMD (Universal Module Definition)).<br>
    If you want to be exhaustive, you'll have to make an assumption or
    make your tool smarter about the context.<br></div></blockquote></div><br><div>I've had some discussion with Dave Herman about this and I think there is a plausible way to handle it.  I'm not sure if Dave would totally agree with 100% of the following but I think it is close to  what seemed to make sense in our discussions.</div><div><br></div><div>1) there are some very good technical reasons for having two syntactic goals (script and module) corresponding to the two semantics.</div><div><br></div><div>2) A module with no imports and no exports is essentially a new form of top level code that is always strict mode and but has its own "file level" scope.</div><div><br></div><div>3) In browsers, html syntax (new attribute on script tag, etc.) can be used to distinguish the two. Dave is working on this.</div><div><br></div><div>4) but there are other situations where the intended syntactic goal of a source file need to be identifiable.  For example, when listing source files on a command-line invocations of a JavaScript engine or tool</div><div><br></div><div>5) Humans when reading or managing code files also need to know which kind of JS source file they are dealing with.</div><div><br></div><div>6) typically we use file extensions to make distinctions of this sort.</div><div><br></div><div>7) Hence, it probably makes sense to promote a convention of using a new file extension for ES6 source files that are intended to be parsed with the modules goal.  .jsm, or mjs, or something similar that is appropriately suggestive and isn't already widely used as an extension. </div><div><br></div><div>Allen</div></div>_______________________________________________<br>es-discuss mailing list<br><a href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a><br>https://mail.mozilla.org/listinfo/es-discuss<br></blockquote></div><br></div></body></html>