> This is a minor point, but rather than all, we'd use * instead, to mirror 
> import M.* or M.{*} or import * from M; whatever it ends up being.

Agreed.

As for the meaning: from my experience with PLT Scheme it works well for 
"export *;" to export everything that's defined in the module, but not 
re-export any imports. For that you'd have to explicitly re-export them. I 
think either semantics (import "all defined here" vs. "all in scope here") 
works fine, but the common case of importing is for private use, and 
re-exporting is the less common case.

On a related note, I forgot to stipulate in the proposal what happens with 
diamond imports. For example:

    module Shared {
        export var x = ...
    }

    module Lib1 {
        import Shared.x;
        export x;
    }

    module Lib2 {
        import Shared.x;
        export x;
    }

    module Client {
        import Lib1.*;
        import Lib2.*;
        ... x ... // error or no error?
    }

Because module bindings are static, it's straightforward to determine that both 
Lib1.x and Lib2.x point to the same binding (Shared.x). So I claim that we 
should loosen the error condition to the following:

It is a static error to import the same name from two different modules *unless 
both bindings are the same*.

Dave

_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to