ECMAScript spec assertion fails when binding is deleted?

Jim Blandy jimb at
Sun Mar 20 23:22:15 PDT 2011

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, 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
    * 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 ( step 2).

Have I missed something?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the es-discuss mailing list