Perhaps @@unscopable shouldn't be a Set...

Andreas Rossberg rossberg at google.com
Mon May 5 02:52:20 PDT 2014


On 2 May 2014 14:45, Claude Pache <claude.pache at gmail.com> wrote:
>
> The algorithm given in [Bug 1908, comment 2] (https://bugs.ecmascript.org/show_bug.cgi?id=1908#c2) is problematic, as a property name blacklisted by an `@@unsopables` anywhere on the prototype chain will also be blacklisted when it appears as own property of the object itself, which is undesirable. According to the [meeting notes of Sep 2013 meeting] (https://github.com/rwaldron/tc39-notes/blob/master/es6/2013-09/sept-17.md#53-unscopeable), this issue was discussed, but it appears that the algorithm presented in Bug 1908 does not incorpore the needed correction.
>
> The algorithm for `HasBinding(N)` on an object environment record should be (and it seems to have been suggested in the Consensus/Resolution section of the meeting notes, if I interpret it correctly):
>
> 1. First, check if there is a property of name `N` in the prototype chain, using `HasProperty()`;
> 2. then, if the property of name `N` is found and if the `withEnvironment` flag is set to `true`, look for an own `@@unscopables` property on the object of the prototype chain where the property of name `N` was found, and see if it is blacklisted there.

Yes, we discussed all this at the September meeting, and the consensus
was to refine the algorithm in the very way you suggest.

/Andreas


More information about the es-discuss mailing list