indirect eval spec too severe?

Brendan Eich brendan at mozilla.com
Mon Jan 19 00:08:22 PST 2009


On Jan 18, 2009, at 10:17 PM, Mark S. Miller wrote:

> So the use of "property" in the spec:
>
> If strict mode code uses the value of the eval property any way  
> other than as a direct call (that is, other than by the explicit use  
> of its name as an Identifier which is the MemberExpression in a  
> CallExpression), or if the eval property is assigned to, an  
> EvalError exception is thrown.
>
> means the original *value* of the global eval property (in which  
> case the statement of the assignment constraint is wrong)? And "its  
> name" above means specifically "eval", whether referring to a  
> property or a local variable?

I don't know, I didn't write that language. It seems wrong at a  
glance, not just because -- as you point out -- EvalError is too severe.


> What Firefox current does (3.0.5):
>
>     function foo(a, b, c) { return a(b); }
>     foo(eval, 'c', 42); // returns 42
>
> From my understanding of your statements above (as well as previous  
> conversations), can we agree that FF's current behavior violates  
> both what ES3.1 does and should specify?

Yes, we've been over this before:

https://mail.mozilla.org/pipermail/es-discuss/2008-October/007961.html

It's a bug we are eagerly planning to fix, probably not in Firefox 3.1  
however -- next major release after.

/be


More information about the Es-discuss mailing list