Yes, but how would that be any different from what you'd have to deal with normally?
To clarify, I was basically proposing exposing both the MNSEO with all export members (like `* as foo`) as well as live bindings from the module, separately. Something along the lines of a combination of the two. FYI, this is what Haskell does with `import qualified Foo.Bar (x, y) as Foo`. It exposes the exports `x` and `y` as globals, and it exposes those *with everything else* under the `Foo` namespace. (Of course, this isn't the driving reason for my suggestion - I didn't think about that until now.) ----- Isiah Meadows [email protected] Looking for web consulting? Or a new website? Send me an email and we can get started. www.isiahmeadows.com On Fri, Dec 15, 2017 at 7:00 AM, Andrea Giammarchi <[email protected]> wrote: > that wouldn't solve the issue we are trying to solve, because the desugared > version will have x, and y in scope, right? > > we are trying to avoid issues with name clashes. If the new syntax doesn't > solve that, it's not any more helpful than `import * as foo from "mod"` > > On Fri, Dec 15, 2017 at 3:17 AM, Isiah Meadows <[email protected]> > wrote: >> >> I see it as it should semantically be identical to this, short a duplicate >> module request avoided: >> >> ```js >> // Proposed >> import {x, y} as foo from "mod" >> >> // Desugared >> import * as foo from "mod" >> import {x, y} from "mod" >> ``` >> >> (This includes the implication `x`/`foo.x` and `y`/`foo.y` are >> equivalent.) >> >> >> On Thu, Dec 14, 2017, 15:30 Andrea Giammarchi >> <[email protected]> wrote: >>> >>> I've just tried monkey patching all the scenarios I've >>> described/mentioned and it works right away. >>> >>> // x.js >>> export let x = 1; >>> setTimeout(() => x = 2, 2000); >>> >>> // module.js >>> import {x} from './x.js'; >>> const obj = Object.defineProperty({}, 'x', {get() { return x; }}); >>> export {x, obj}; >>> >>> // index.js >>> import {x, obj} from './module.js'; >>> console.log(x, obj.x); >>> setTimeout(() => console.log(x, obj.x), 3000); >>> >>> I see 1, 1 and then 2, 2 without using proxies or exotic objects. >>> >>> `{a, b, c} as obj` should really just avoid `a`, `b`, `c` scope pollution >>> and create those accessors in the `obj` constant object reference. >>> >>> Regards >>> >>> >>> On Thu, Dec 14, 2017 at 5:55 PM, Darien Valentine <[email protected]> >>> wrote: >>>> >>>> @Andrea I think we are thinking along the same lines. I meant proxy with >>>> a lowercase p — what you described fits the bill. >>>> >>>> _______________________________________________ >>>> es-discuss mailing list >>>> [email protected] >>>> https://mail.mozilla.org/listinfo/es-discuss >>>> >>> >>> _______________________________________________ >>> es-discuss mailing list >>> [email protected] >>> https://mail.mozilla.org/listinfo/es-discuss > > _______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

