On Apr 20, 2015, at 11:55 AM, Rick Waldron wrote: > > > On Mon, Apr 20, 2015 at 2:31 PM Allen Wirfs-Brock <[email protected]> > wrote: > On Apr 20, 2015, at 11:11 AM, Rick Waldron wrote: > >> >> > >> - It is a Syntax Error if ClassHeritage is not present and >> HasSuperProperty of MethodDefinition is true. > > This is nothing to do with class definition syntax. This is about the > semantics of the [[Set]] internal method. > > I understand that, but it struck me as _very_ strange that class with no > class heritage could be allowed to have super.foo(), super.foo=2, but not > super(). Did I miss something obvious? What is wrote is certainly heavy > handed, but not more so than what the spec already does with HasDirectSuper > when ClassHeritage is not present. Having just written many tests* for the > early errors that will result when HasDirectSuper returns true, it seemed > subjectively strange to me that this syntax would even be allowed. I suspect > I'm missing something that explains why SuperProperty is allowed where > SuperCall is not.
remember, `super.x` (LHS or RHS) is a completely different operations than `super()`. The former is semantically a [[Get]] or [[Set]] operation while the latter is a [[Construct]]. Completely different things that happen to both use the same keywords 'super.x' is allowed in any concise method, including those defined in object literals. `super()` is only allowed in class constructors of classes that include a ClassHeritage. Allen
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

