On Thu, Jul 5, 2012 at 1:06 PM, Russell Leggett <[email protected]> wrote: > > So I guess my take on it is that any import statement should be illegal > inside of eval. Looking at the proposal, that doesn't sound like it, though.
I don't think we should ban `import` from `eval` -- `eval` is a powerful feature that has been used to good effect in lots of ways, and we don't want to cripple it. > Let's take the "loadFromUrl" out of the equation. > > import foo from "baz" > var code = 'import foo from "bar"'; > eval(code); > console.log(foo); > > There is a reason why import got special syntax, and it wasn't just so that > it would be easier to type. Putting it inside eval eliminates any ability > for static analysis to happen upfront during the parse before actually > executing. The import dependency cannot be seen, and in this case there is a > collision on "foo" which should have been detected at compilation time. I > can think of a dozen other reasons why imports should not be allowed in > eval, but that's just one which seems like a pretty clear problem. This problem is already there if I write `code` as `'var foo = "bar"'` (how's that for excessive quotation?). Direct `eval` is powerful and potentially scary already. We could specify the semantics of `eval` such that your example doesn't bind `foo` in code after the `eval`, but I don't think that has much to do with the other issues here. -- sam th [email protected] _______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

