<div dir="ltr">My main point is that everything you get from `Object.getOwnPropertyDescriptor`, beside undefined or possible abrupt errors, will have own properties.<div><br></div><div>Even es5-shim/sham has been checking own properties for years [1] so I am pretty confident nothing will break 'cause own properties is what developers always expected and what they've always used despite specs.</div><div><br></div><div>Again it's clear the world can live with these possibly inherited descriptors properties but it feels very wrong on the practical level. Too bad if there won't be ever a fix [2]</div><div><br></div><div>[1] <a href="https://github.com/es-shims/es5-shim/issues/211#event-208821479">https://github.com/es-shims/es5-shim/issues/211#event-208821479</a> now fixed<br></div><div><br></div><div>[2] would a new Descriptor({ownproperties:"only"}) instance be ever considered ?</div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Dec 17, 2014 at 8:37 PM, Allen Wirfs-Brock <span dir="ltr"><<a href="mailto:allen@wirfs-brock.com" target="_blank">allen@wirfs-brock.com</a>></span> wrote:<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><span class=""><br><div><div>On Dec 17, 2014, at 10:30 AM, Andrea Giammarchi wrote:</div><br><blockquote type="cite"><div dir="ltr">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 ?<div><div><br></div><div>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?</div><div><br></div><div>It will keep `enumerable` and `writable` still potentially problematic but at least the following code would never fail:</div><div><br></div><div>```js</div><div><span style="color:rgb(48,57,66);font-family:Menlo,monospace;font-size:11px;white-space:pre-wrap">Object.prototype.get = function () {};

Object.defineProperty(
  Object.prototype,
  'toString',
  Object.getOwnPropertyDescriptor(
    Object.prototype,
    'toString'
  )
);</span><br></div><div><span style="font-size:13px"><br></span></div><div>```</div><div><br></div><div>Thanks again for any sort of outcome (or clarification on when and if this will ever be fixed)</div></div></div></blockquote><div><br></div></div></span>I'm not sure what you are actually asking.  All specified internal uses of property descriptor objets should pas through ToPropertyDescriptor (<a href="http://people.mozilla.org/~jorendorff/es6-draft.html#sec-topropertydescriptor" target="_blank">http://people.mozilla.org/~jorendorff/es6-draft.html#sec-topropertydescriptor</a> ) 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).<div><br></div><div>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.</div><div><br></div><div>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.  </div><span class="HOEnZb"><font color="#888888"><div><br></div><div>Allen</div></font></span></div></blockquote></div></div>