How can GetModuleNamespace throw a SyntaxError?

Jon Coppeard jcoppeard at mozilla.com
Thu Dec 10 17:57:21 UTC 2015


Thanks for the example.  It doesn't seem to trigger that error path though.

When I ran it it threw a SyntaxError during
ModuleDeclarationInstantiation step 9 when resolving indirect exports
for one of the imported modules.  It looks like that will always happen
before we call GetModuleNamespace in step 12 of the invocation of
ModuleDeclarationInstantation for the main module.

Jon

On 10/12/2015 01:11, Isiah Meadows wrote:
> It has to do with circular exported bindings. And IMHO a SyntaxError
> is the wrong error to throw (it should really throw a ReferenceError,
> as it's a circular reference).
> 
> ```js
> // foo.js
> export {name} from "./bar.js"
> ```
> 
> ```js
> // bar.js
> export {name} from "./foo.js"
> ```
> 
> ```js
> // main.js
> import * as foo from "./foo.js" // Error!
> ```
> 
> See the note in 15.2.1.16.3:
> http://www.ecma-international.org/ecma-262/6.0/#sec-resolveexport.
> That should help you.
> 
> On Wed, Dec 9, 2015 at 2:44 PM, Jon Coppeard <jcoppeard at mozilla.com> wrote:
>> In the definition of GetModuleNamespace (section 15.2.1.18), a
>> SyntaxError is thrown if we fail to resolve an exported name:
>>
>>> 3.d.iii If resolution is null, throw a SyntaxError exception.
>>
>> What situation leads to this error?
>>
>> I wasn't able to come up with an example that would make this happen,
>> and my attempts all generated a SyntaxError at an earlier point.  It
>> seems that GetExportedNames should only return names that will
>> successfully resolve, but I may be missing something.
>>
>> Thanks,
>>
>> Jon
>> _______________________________________________
>> es-discuss mailing list
>> es-discuss at mozilla.org
>> https://mail.mozilla.org/listinfo/es-discuss
> 
> 
> 


More information about the es-discuss mailing list