Author: [email protected]
Date: Tue Jun 16 04:47:00 2009
New Revision: 2185
Modified:
branches/bleeding_edge/src/rewriter.cc
branches/bleeding_edge/test/cctest/test-func-name-inference.cc
Log:
Fix issue 380.
Don't infer name for a function if a result of its call is assigned to a
variable / property. E.g., in this case:
a = function() { ... } ();
the function must remain anonymous because 'a' doesn't receive a function
reference, but instead a result of its call.
BUG=http://code.google.com/p/v8/issues/detail?id=380
TEST=cctest/test-func-name-inference/Issue380
Review URL: http://codereview.chromium.org/126195
Modified: branches/bleeding_edge/src/rewriter.cc
==============================================================================
--- branches/bleeding_edge/src/rewriter.cc (original)
+++ branches/bleeding_edge/src/rewriter.cc Tue Jun 16 04:47:00 2009
@@ -283,7 +283,10 @@
case Token::ASSIGN:
// No type can be infered from the general assignment.
- scoped_fni.Enter();
+ // Don't infer if it is "a = function(){...}();"-like expression.
+ if (node->value()->AsCall() == NULL) {
+ scoped_fni.Enter();
+ }
break;
case Token::ASSIGN_BIT_OR:
case Token::ASSIGN_BIT_XOR:
Modified: branches/bleeding_edge/test/cctest/test-func-name-inference.cc
==============================================================================
--- branches/bleeding_edge/test/cctest/test-func-name-inference.cc
(original)
+++ branches/bleeding_edge/test/cctest/test-func-name-inference.cc Tue Jun
16 04:47:00 2009
@@ -251,3 +251,17 @@
CheckFunctionName(script, "return 1", "MyClass.method1");
CheckFunctionName(script, "return 2", "MyClass.method1");
}
+
+
+// See http://code.google.com/p/v8/issues/detail?id=380
+TEST(Issue380) {
+ InitializeVM();
+ v8::HandleScope scope;
+
+ v8::Handle<v8::Script> script = Compile(
+ "function a() {\n"
+ "var result = function(p,a,c,k,e,d)"
+ "{return p}(\"if blah blah\",62,1976,\'a|b\'.split(\'|\'),0,{})\n"
+ "}");
+ CheckFunctionName(script, "return p", "");
+}
--~--~---------~--~----~------------~-------~--~----~
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
-~----------~----~----~----~------~----~------~--~---