On Dec 17, 2014, at 10:30 AM, Andrea Giammarchi wrote:

> Actually simplifying as proposal: does everyone agree that if a 
> descriptor.[[Value]] is own property no further checks on inherited [[Get]] 
> and [[Set]], or generally speaking Accessor Property related checks, should 
> be made ?
> 
> This would already fix the `Object.prototype.get` or `.set` case since I 
> believe nobody ever used an inherited `value` property on purpose for 
> descriptors ... or is it?
> 
> It will keep `enumerable` and `writable` still potentially problematic but at 
> least the following code would never fail:
> 
> ```js
> Object.prototype.get = function () {};
> 
> Object.defineProperty(
>   Object.prototype,
>   'toString',
>   Object.getOwnPropertyDescriptor(
>     Object.prototype,
>     'toString'
>   )
> );
> 
> ```
> 
> Thanks again for any sort of outcome (or clarification on when and if this 
> will ever be fixed)

I'm not sure what you are actually asking.  All specified internal uses of 
property descriptor objets should pas through ToPropertyDescriptor 
(http://people.mozilla.org/~jorendorff/es6-draft.html#sec-topropertydescriptor 
) which will throw if there is any conflict between get/set and own 
value/writable properties, regardless of whether they are own or inherited.  
(If you know of any uses of such descriptor object in the ES6 spec that don't 
do this validation, please file a bug).

If you want to enforce the same semantics on you ES-level uses of descriptor 
objects you need to write a ES level implementation of the checks performed by 
ToPropertyDescriptor.

I can see various ways we might improve the specified processing of property 
descriptor objects but those would generally be breaking changes and we would 
have to consider the possible impact of such changes before proceeding with 
them.  

Allen
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to