Oh — he’s right, ValidateAndApplyPropertyDescriptor won’t throw in the example 
case, because the old descriptor is configurable. That’s kind of weird.

> On Apr 20, 2015, at 3:39 PM, Jason Orendorff <[email protected]> 
> wrote:
> 
> On Mon, Apr 20, 2015 at 12:44 PM, Allen Wirfs-Brock
> <[email protected]> wrote:
>>> In the spec, 9.1.9 step 4.d.i. is where `super.prop = 2` ends up, with
>>> O=X.prototype.
>> 
>> 4.d.1 doesn't set the property, it just comes up with the property 
>> descriptor to use, if the `Receiver` does not already have a corresponding 
>> own property.
>> 
>> 5.c+5.e checks if the corresponding own property actually exists on the 
>> `Receiver`.
>> 
>> If it already exits then it does a [[DefineOwnProperty]] that only specifies 
>> the `value` attribute. This should respect the current `writable` attribute 
>> of the property and hence reject the attempt to change the value.
> 
> I agree with all of this, except I don't see where the attempt is
> rejected. Since the property is configurable, I think
> [[DefineOwnProperty]] succeeds.
> 
> The property is still non-writable afterwards. Only the value changes.
> 
> So this isn't breaking the object invariants: the property in question
> is configurable, so it's OK (I guess) to change the value. It's just
> surprising for assignment syntax to succeed in doing it.
> 
> -j
> _______________________________________________
> es-discuss mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/es-discuss

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

Reply via email to