> On 14 Feb 2015, at 22:26, Mark S. Miller <[email protected]> wrote: > > On Sat, Feb 14, 2015 at 1:21 PM, Axel Rauschmayer <[email protected] > <mailto:[email protected]>> wrote: > But it’s not an error! Either of the following two classes fail later, when > you instantiate them, but not right away. > > ```js > const X = null; > class C extends X {} > > class D extends null {} > ``` > > I didn't mean to imply an early error. The "extends X" can only produce a > dynamic error, so I'm arguing that "extends null" should do the same.
When I say “early”, I don’t mean “static”, I mean: dynamically, when the class definition is evaluated, not later when the class is instantiated via `new`. I’m not seeing a dynamic error in the spec when the `extends` clause is null (step 6e): https://people.mozilla.org/~jorendorff/es6-draft.html#sec-runtime-semantics-classdefinitionevaluation <https://people.mozilla.org/~jorendorff/es6-draft.html#sec-runtime-semantics-classdefinitionevaluation> > > Or dynamically switching from "derived" to "base" (but you seem to be saying > that doing this dynamically is not a good idea). > > Dynamically switching from derived to base does not work, because our super > semantics depends statically on the difference. Ah, checked statically, I wasn’t aware! Hadn’t found the check beforehand. Searched some more and it is indeed there, in 14.5.1. -- Dr. Axel Rauschmayer [email protected] rauschma.de
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

