We call it anonymous to print these functions in the same way as other JavaScript engines. However, we accidentally shadow global variables named anonymous and allow recursion through the name anonymous. I have updated the changelist to address these issues. Could you take another look?
-- Mads On Wed, Sep 24, 2008 at 10:34 AM, Christian Plesner Hansen <[EMAIL PROTECTED]> wrote: > > Lgtm. > > Any idea why the function is called "anonymous"? Seems pointless (and > self-contradictory since anonymous means "without name"). > > On Wed, Sep 24, 2008 at 10:31 AM, <[EMAIL PROTECTED]> wrote: > > > > Reviewers: plesner, > > > > Description: > > Make sure that the body of the function created by calling Function is > > on a line of its own. This allows the body to be terminated by a > > single-line comment. > > > > This is a fix for http://code.google.com/p/v8/issues/detail?id=85 > > > > Please review this at http://codereview.chromium.org/4248 > > > > Affected files: > > M src/v8natives.js > > M test/mjsunit/function.js > > > > > > Index: test/mjsunit/function.js > > =================================================================== > > --- test/mjsunit/function.js (revision 366) > > +++ test/mjsunit/function.js (working copy) > > @@ -27,23 +27,27 @@ > > > > var f = Function(); > > assertTrue(typeof f() == 'undefined'); > > -var f = new Function(); > > +f = new Function(); > > assertTrue(typeof f() == 'undefined'); > > > > -var f = Function('return 1'); > > +f = Function('return 1'); > > assertEquals(1, f()); > > -var f = new Function('return 1'); > > +f = new Function('return 1'); > > assertEquals(1, f()); > > > > -var f = Function('return true'); > > +f = Function('return true'); > > assertTrue(f()); > > -var f = new Function('return true'); > > +f = new Function('return true'); > > assertTrue(f()); > > > > -var f = Function('x', 'return x') > > +f = Function('x', 'return x'); > > assertEquals(1, f(1)); > > assertEquals('bar', f('bar')); > > assertTrue(typeof f() == 'undefined'); > > + > > +f = Function('x', 'return x // comment'); > > +assertEquals(1, f(1)); > > + > > var x = {}; > > assertTrue(x === f(x)); > > var f = new Function('x', 'return x') > > Index: src/v8natives.js > > =================================================================== > > --- src/v8natives.js (revision 366) > > +++ src/v8natives.js (working copy) > > @@ -406,7 +406,7 @@ > > if (p.indexOf(')') != -1) throw MakeSyntaxError('unable_to_parse',[]); > > } > > var body = (n > 0) ? ToString(%_Arguments(n - 1)) : ''; > > - var source = '(function anonymous(' + p + ') { ' + body + ' })'; > > + var source = '(function anonymous(' + p + ') {\n ' + body + '\n})'; > > > > // The call to SetNewFunctionAttributes will ensure the prototype > > // property of the resulting function is enumerable (ECMA262, 15.3.5.2). > > > > > > > > > > > > > > --~--~---------~--~----~------------~-------~--~----~ v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev -~----------~----~----~----~------~----~------~--~---
