ECMAScript spec assertion fails when binding is deleted?

Allen Wirfs-Brock allen at wirfs-brock.com
Mon Mar 21 12:24:33 PDT 2011


This is now https://bugs.ecmascript.org/show_bug.cgi?id=79 


On Mar 21, 2011, at 11:44 AM, Jim Blandy wrote:

> This is a bug in the spec, and has been previously discussed here:
> 
> https://mail.mozilla.org/pipermail/es5-discuss/2010-November/003839.html
> 
> (Thanks, Jeff!)
> 
> On 03/20/2011 11:22 PM, Jim Blandy wrote:
>> 
>> When executing this code:
>> (function () {
>>     eval("var x=delete(x)")
>> })()
>> I think the assertion in the ECMAScript description of the declarative environment record's SetMutableBinding algorithm, 10.2.1.1.3 step 2, fails.
>> On entry to the function, we create a lexical environment with a declarative environment record (10.4.3).
>> When we enter the eval code, we create the binding for 'x' in that environment record  (10.5, step 8.c.1). This is a deletable binding, as per 10.5 step 2.
>> When we evaluate the declaration, we produce a reference with that environment record as its base, delete the binding, and then call PutValue (12.2, VariableDeclaration : Identifier Initialiser semantics).
>> PutValue calls the environment record's SetMutableBinding concrete method (8.7.2 step 5.a).
>> SetMutableBinding's assertion fails, because 'x' is no longer bound in that environment record (10.2.1.1.3 step 2).
>> Have I missed something?
>> 
>> _______________________________________________
>> es-discuss mailing list
>> es-discuss at mozilla.org
>> https://mail.mozilla.org/listinfo/es-discuss
> 
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20110321/720996dc/attachment.html>


More information about the es-discuss mailing list