> 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
[email protected]
https://mail.mozilla.org/listinfo/es-discuss