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
-~----------~----~----~----~------~----~------~--~---

Reply via email to