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
a*TypeError*exception.
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
full:
[[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.
/be
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.
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss