I've added this to a few bugs on the bug-tracker: https://bugs.ecmascript.org/show_bug.cgi?id=4184 (CreateImportBinding) https://bugs.ecmascript.org/show_bug.cgi?id=4244 (GetExportedNames and ResolveExport)
On Wed, Apr 1, 2015 at 4:31 PM, Adam Klein <[email protected]> wrote: > I have a question about CreateImportBinding(N, M, N2) (where N is the name > to create in the importing module, and M is a module which exports N2). > > Step 4 of > https://people.mozilla.org/~jorendorff/es6-draft.html#sec-createimportbinding > is the following assertion > > "Assert: When M.[[Environment]] is instantiated it will have a direct > binding for N2." > > What about the case were M is simply re-exporting an import? Consider: > > --------- > module 'a': > > import { x } from 'b'; > > --------- > module 'b': > > import { x } from 'c'; > export { x }; > > --------- > module 'c': > > export let x = 42; > > --------- > > In this case, when running CreateImportBinding(x, 'b', x) in module 'a', > the assertion fails, as x in 'b' is an "immutable indirect binding" (itself > created by CreateImportBinding). > > Is there a need for this assert I'm missing? I don't think skipping over > this assert, or removing "direct" from its wording, will cause any > problems. Also, the term "direct binding" is not defined anywhere that I > can find, except as the negation of the "indirect" binding created by > CreateImportBinding. > > Note that there's a similar issue in ResolveExport: step 4.a.i of > https://people.mozilla.org/~jorendorff/es6-draft.html#sec-resolveexport > asserts that resolved exports found in [[LocalExportEntries]] are "leaf > bindings" (another term that goes undefined), where by the usual CS > definition of "leaf" the assertion would be false for x in 'b' (when > resolved from 'a'). > > - Adam >
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

