Figuring out the behavior of WindowProxy in the face of non-configurable properties
brendan at mozilla.org
Wed Jan 28 11:48:08 PST 2015
Mark S. Miller wrote:
> Exactly correct. I didn't realize until reading your reply is that
> this is all that's necessary -- that it successfully covers all
> the cases I was thinking about without any further case division.
> Here's another option, not clearly better or worse:
> [[DefineOwnProperty]] (P, Desc)
> 1. let R be the result of calling the [[DefineOwnProperty]] internal
> method of/W/with arguments/P/and /Desc/.
> 2. If/desc/.[[Configurable]] is present and*false*, then throw
> 3. return R.
> This is exactly like your solution, but with the order of the two
> steps switched. Perhaps the next breakage we see will tell us which of
> these to choose. If both are web compatible, then we need only pick
> which one we like better.
I like the shorter one (filling in from cited text below, here it is in
[[DefineOwnProperty]] (P, Desc)
1. If /desc/.[[Configurable]] is present and/desc/.[[Configurable]] is
*false*, then throw a *TypeError* exception.
2. Return the result of calling the [[DefineOwnProperty]] internal
method of /W/ with arguments /P/ and /Desc/.
Besides being shorter, this doesn't call through to [[DOP]], which could
have effects, and only then maybe-throw.
> as opposed to the behavior I'd understood we were aiming for,
> which was:
> 1) If the [[Configurable]] field of Desc is not present or
> Desc.[[Configurable]] is false, then throw a TypeError exception.
> ? If so, that's certainly a change that is much more likely
> to be web-compatible...
> Good! It certainly takes care of the one concrete breakage we know
> about so far.
More information about the es-discuss