Add some more (failing) tests for function names inference.

After the "Naming Anonymous JavaScript Functions" paper by
S. M. Ecole, J. J. Barton, C. Petitpierre.

TBR=yurys@chromium.org
BUG=1354
TEST=test-func-name-inference/*

Review URL: http://codereview.chromium.org/6893135

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7733 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent b60baa0b
......@@ -41,6 +41,14 @@ test-api/ApplyInterruption: PASS || TIMEOUT
test-serialize/TestThatAlwaysFails: FAIL
test-serialize/DependentTestThatAlwaysFails: FAIL
##############################################################################
# BUG(1354): Bad function name inference
test-func-name-inference/FactoryHashmapConditional: FAIL
test-func-name-inference/FactoryHashmapVariable: FAIL
test-func-name-inference/FactoryHashmap: FAIL
test-func-name-inference/MultipleAssignments: FAIL
test-func-name-inference/PassedAsConstructorParameter: FAIL
##############################################################################
[ $arch == arm ]
......@@ -95,6 +103,3 @@ test-sockets: SKIP
test-strings: SKIP
test-threads: SKIP
test-thread-termination: SKIP
##############################################################################
# Tests that time out with Isolates
......@@ -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)");
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment