> What does the *spec* say should happen in that situation?

It would be a TDZ error, rather than `undefined`, in a real implementation
of block scoping + ES6 modules. The ordering still means that `A` won't
exist when `class B extends A` runs.

On Wed, Feb 22, 2017 at 10:00 AM, T.J. Crowder <
[email protected]> wrote:

> On Wed, Feb 22, 2017 at 5:50 PM, Isiah Meadows <[email protected]>
> wrote:
>
>> I'll point out that Babel doesn't follow spec perfectly because it can't
>> transpile the bindings correctly in the case of synchronously executed code
>> with circular dependencies. That's a CommonJS limitation that Babel can't
>> work around any more than it already does.
>>
> I was wondering about that. Greg, re your example where you said:
>
> In the latest Babel the above code fails to run on the first line of
>> app.js (at the time it attempts to execute `_inherits(B, _A);`.). This is
>> because "A" is undefined in module b.js due to the circular dependency. In
>> this case Babel basically executed code in the incorrect order for this to
>> be able to work.
>
>
> What does the *spec* say should happen in that situation? (You've clearly
> been into it in some detail.) As opposed to what Babel does, since of
> course Babel while excellent is working with some limitations...?
>
> -- T.J. Crowder
>
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to