Brendan Eich (2015-01-28T19:48:08.000Z)
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.
>
d at domenic.me (2015-02-13T23:28:36.290Z)
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.