Re: ESR52 SpiderMonkey & ES6

Kent Williams <[email protected]> Mon, 30 Jul 2018 09:20:09 -0500
Newsgroups gmane.comp.mozilla.devel.jseng
Message-ID <[email protected]>
I resolved this by realizing that I know when something is a module, and 
when it is not, based on my application. Will look at your solution also.


On 07/26/2018 10:14 AM, Philip Chimento wrote:
> On Saturday, June 23, 2018 at 3:25:33 PM UTC-4, Jason Orendorff wrote:
>> You're right, this is super complicated. :-\
>>
>> Well, I guess the first task is to get an error message. There's no pending
>> exception when these functions return false?
>>
>> -j
>>
>>
>> On Wed, Jun 20, 2018 at 3:11 PM, Kent Williams <[email protected]>
>> wrote:
>>
>>> Been beating my head on this for a couple of days.
>>>
>>> I'm trying to get ES6 module support working with ESR52 SpiderMonkey.
>>>
>>> I can run plain scripts just fine, but if I try using ES6 modules, it
>>> breaks.
>>>
>>> I solved one problem: You can't compile anything 'import' in it without
>>> setting the Module resolver with JS::SetModuleResolveHook.
>>>
>>> Then it turns out you can't use JS::Compile with any code with 'import' in
>>> it -- even if it isn't a module itself.
>>>
>>> But if you use JS::CompileModule, it isn't clear what you have to do to
>>> execute the script.
>>>
>>> What should happen is that you do X (where X is unknown) to execute the
>>> script, and then the interpreter handles the 'import' statements in your
>>> code by calling the resolve hook.
>>>
>>> So my problem is X -- if you have to use JS::CompileModule if there are
>>> any import statements in a script, how do you execute the script?
>>>
>>> Looking at the JS Shell code, the resolve hook is actually in a Javascript
>>> file.  I tried doing what that file does (ModuleLoader.js) but it doesn't
>>> work.  I call ModuleDeclarationInstantiation followed by ModuleEvaluation
>>> -- and both fail without any error message. They return false, and there's
>>> no apparent error message anywhere.
>>>
>>> Is it the case that no one uses ES6 modules with SpiderMonkey, except
>>> perhaps the Mozilla Browswer & the js shell included?
> We have a branch in progress for this in GJS: https://gitlab.gnome.org/GNOME/gjs/merge_requests/150 It's currently still based on ESR52, but the basics do seem to work.
> There's some information there that may help you. I believe the module is executed during the ModuleEvaluation step.
>
> Regards,
> Philip
> _______________________________________________
> dev-tech-js-engine mailing list
> [email protected]
> https://lists.mozilla.org/listinfo/dev-tech-js-engine