Index: test/cctest/test-func-name-inference.cc |
diff --git a/test/cctest/test-func-name-inference.cc b/test/cctest/test-func-name-inference.cc |
index dea5c47735b8d847f442c16884ff8377611642ae..80f9bd189a06fe3cf4ad1b219f93ce00846c1222 100644 |
--- a/test/cctest/test-func-name-inference.cc |
+++ b/test/cctest/test-func-name-inference.cc |
@@ -281,3 +281,74 @@ TEST(Issue380) { |
"}"); |
CheckFunctionName(script, "return p", ""); |
} |
+ |
+ |
+TEST(MultipleAssignments) { |
+ InitializeVM(); |
+ v8::HandleScope scope; |
+ |
+ v8::Handle<v8::Script> script = Compile( |
+ "var fun1 = fun2 = function () { return 1; }"); |
+ CheckFunctionName(script, "return 1", "fun2"); |
+} |
+ |
+ |
+TEST(PassedAsConstructorParameter) { |
+ InitializeVM(); |
+ v8::HandleScope scope; |
+ |
+ v8::Handle<v8::Script> script = Compile( |
+ "function Foo() {}\n" |
+ "var foo = new Foo(function() { return 1; })"); |
+ CheckFunctionName(script, "return 1", ""); |
+} |
+ |
+ |
+TEST(FactoryHashmap) { |
+ InitializeVM(); |
+ v8::HandleScope scope; |
+ |
+ v8::Handle<v8::Script> script = Compile( |
+ "function createMyObj() {\n" |
+ " var obj = {};\n" |
+ " obj[\"method1\"] = function() { return 1; }\n" |
+ " obj[\"method2\"] = function() { return 2; }\n" |
+ " return obj;\n" |
+ "}"); |
+ CheckFunctionName(script, "return 1", "obj.method1"); |
+ CheckFunctionName(script, "return 2", "obj.method2"); |
+} |
+ |
+ |
+TEST(FactoryHashmapVariable) { |
+ InitializeVM(); |
+ v8::HandleScope scope; |
+ |
+ v8::Handle<v8::Script> script = Compile( |
+ "function createMyObj() {\n" |
+ " var obj = {};\n" |
+ " var methodName = \"method1\";\n" |
+ " obj[methodName] = function() { return 1; }\n" |
+ " methodName = \"method2\";\n" |
+ " obj[methodName] = function() { return 2; }\n" |
+ " return obj;\n" |
+ "}"); |
+ // Can't infer function names statically. |
+ CheckFunctionName(script, "return 1", "obj.(anonymous function)"); |
+ CheckFunctionName(script, "return 2", "obj.(anonymous function)"); |
+} |
+ |
+ |
+TEST(FactoryHashmapConditional) { |
+ InitializeVM(); |
+ v8::HandleScope scope; |
+ |
+ v8::Handle<v8::Script> script = Compile( |
+ "function createMyObj() {\n" |
+ " var obj = {};\n" |
+ " obj[0 ? \"method1\" : \"method2\"] = function() { return 1; }\n" |
+ " return obj;\n" |
+ "}"); |
+ // Can't infer the function name statically. |
+ CheckFunctionName(script, "return 1", "obj.(anonymous function)"); |
+} |