<html><body bgcolor="#FFFFFF"><div>Yes, thanks, my mistake on the unexported startCar function declaration. My question is more about semantics, if the author of engine did not want to export start, the grammar allows anyone importing the engine module to override the original author's intent. <br><br>On Jul 10, 2011, at 8:11 PM, David Herman <<a href="mailto:dherman@mozilla.com">dherman@mozilla.com</a>> wrote:<br><br></div><div></div><blockquote type="cite"><div><div><blockquote type="cite"><div><div style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); font-family: 'times new roman', 'new york', times, serif; font-size: 12pt; position: static; z-index: auto; "><div>According to the module grammar, the following is valid:</div><div><br></div><div><span class="Apple-style-span" style="font-family: Menlo, monospace; font-size: 11px; "><div class="console-message console-log-level" style="position: relative; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: rgb(240, 240, 240); padding-top: 1px; padding-right: 22px; padding-bottom: 1px; padding-left: 24px; min-height: 16px; display: block; z-index: auto; "><span class="console-message-text source-code" style="box-sizing: border-box; white-space: pre-wrap; font-family: Menlo, monospace; font-size: 11px !important; "><a href="http://localhost/src/require.js" class="console-message-url webkit-html-resource-link" title="http://localhost/src/require.js" preferred_panel="scripts" line_number="690" source_file_id="http://localhost/src/require.js" style="box-sizing: border-box; float: right; margin-left: 4px; color: rgb(84, 84, 84); cursor: pointer; max-width: 100%; ">691</a><span style="box-sizing: border-box; ">module car {</span></span></div><div class="console-message console-log-level" style="position: relative; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: rgb(240, 240, 240); padding-top: 1px; padding-right: 22px; padding-bottom: 1px; padding-left: 24px; min-height: 16px; display: block; z-index: auto; "><span class="console-message-text source-code" style="box-sizing: border-box; white-space: pre-wrap; font-family: Menlo, monospace; font-size: 11px !important; "><span style="box-sizing: border-box; ">  function startCar() {}
  module engine {
    function start() {}
  }
  export {start:startCar} from engine;
}
</span></span></div><div><span class="console-message-text source-code" style="box-sizing: border-box; white-space: pre-wrap; font-family: Menlo, monospace; font-size: 11px !important; "><span style="box-sizing: border-box; "><br></span></span></div><div><span class="console-message-text source-code" style="box-sizing: border-box; white-space: pre-wrap; font-family: Menlo, monospace; font-size: 11px !important; "><span style="box-sizing: border-box; "><br></span></span></div></span>It seems like there would be issues with exporting module elements after the module has been defined.</div></div></div></blockquote><div><br></div><div>I don't see any conflicts with the code you wrote, but it does contain a linking error, because the car module doesn't have access to the unexported start function. Maybe you intended:</div><div><br></div><div>    module car {</div><div>        export function startCar() { }</div><div>        module engine {</div><div>            export function start()  { }</div><div>        }</div><div>        export { start: startCar } from engine;</div><div>    }</div><div><br></div><div>In this case, you have a conflict, because the car module is attempting to create two different exports with the same name. This is an early error.</div><br><blockquote type="cite"><div><div style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); font-family: 'times new roman', 'new york', times, serif; font-size: 12pt; position: static; z-index: auto; "><div>Also, what is the behavior of aliasing over existing Identifiers? Would the compiler fail or would behavior </div><div>be the 'last' Identifier wins?</div></div></div></blockquote><br></div><div>Early error.</div><div><br></div><div>Dave</div><div><br></div></div></blockquote></body></html>