On Sep 12, 2014, at 8:26 AM, Andreas Rossberg wrote:

>> 
> 
> Thanks Mark, this was exactly my concern as well. In general, it is
> bogus to assume that the parameter lists of a base and a derived
> constructor bear any relation. And even if they happen to do so today,
> they might no longer tomorrow, which your example demonstrates quite
> well. So just silently forwarding an argument list nilly-willy is
> broken.
> 
> I think it's fine to have a default "new super" call, but only with an
> empty argument list. That would also be more in line with what other
> languages do.
> 
Other languages that do that are predominately statically-typed OO languages 
with static overloading.  In that situation, the most generic choice is 
non-parameters as some overload has to be chosen for the implicit call site.

But for JS, which does have a static overload selection requirement, we have 
other alternatives and the no-argument choice seems highly error prone.

Consider Mark's example again.  If developers are saying they would prefer to 
write:

```js
 class ColoredPoint extends Point {
    constructor(x, y, color) {
        this.color = color;
    }
}
```

Then some will do it (regardless of the actual semantics) and they will 
silently get an instance without x or y properties.  That is pretty clearly not 
their intent. 

I think this is a much bigger error hazard then the v2 refactoring issue that 
Mark is concerned about.

Allen

_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to