diff options
Diffstat (limited to 'src/3rdparty/v8/test/cctest/test-func-name-inference.cc')
-rw-r--r-- | src/3rdparty/v8/test/cctest/test-func-name-inference.cc | 49 |
1 files changed, 45 insertions, 4 deletions
diff --git a/src/3rdparty/v8/test/cctest/test-func-name-inference.cc b/src/3rdparty/v8/test/cctest/test-func-name-inference.cc index 8f405b7..cda6aa0 100644 --- a/src/3rdparty/v8/test/cctest/test-func-name-inference.cc +++ b/src/3rdparty/v8/test/cctest/test-func-name-inference.cc @@ -28,6 +28,7 @@ #include "v8.h" #include "api.h" +#include "debug.h" #include "runtime.h" #include "cctest.h" @@ -87,10 +88,10 @@ static void CheckFunctionName(v8::Handle<v8::Script> script, #ifdef ENABLE_DEBUGGER_SUPPORT // Obtain SharedFunctionInfo for the function. + Isolate::Current()->debug()->PrepareForBreakPoints(); Object* shared_func_info_ptr = - Runtime::FindSharedFunctionInfoInScript(Isolate::Current(), - i_script, - func_pos); + Isolate::Current()->debug()->FindSharedFunctionInfoInScript(i_script, + func_pos); CHECK(shared_func_info_ptr != HEAP->undefined_value()); Handle<SharedFunctionInfo> shared_func_info( SharedFunctionInfo::cast(shared_func_info_ptr)); @@ -398,5 +399,45 @@ TEST(AssignmentAndCall) { // The inferred name is empty, because this is an assignment of a result. CheckFunctionName(script, "return 1", ""); // See MultipleAssignments test. - CheckFunctionName(script, "return 2", "Enclosing.Bar"); + // TODO(2276): Lazy compiling the enclosing outer closure would yield + // in "Enclosing.Bar" being the inferred name here. + CheckFunctionName(script, "return 2", "Bar"); +} + + +TEST(MethodAssignmentInAnonymousFunctionCall) { + InitializeVM(); + v8::HandleScope scope; + + v8::Handle<v8::Script> script = Compile( + "(function () {\n" + " var EventSource = function () { };\n" + " EventSource.prototype.addListener = function () {\n" + " return 2012;\n" + " };\n" + " this.PublicEventSource = EventSource;\n" + "})();"); + CheckFunctionName(script, "return 2012", "EventSource.addListener"); +} + + +TEST(ReturnAnonymousFunction) { + InitializeVM(); + v8::HandleScope scope; + + v8::Handle<v8::Script> script = Compile( + "(function() {\n" + " function wrapCode() {\n" + " return function () {\n" + " return 2012;\n" + " };\n" + " };\n" + " var foo = 10;\n" + " function f() {\n" + " return wrapCode();\n" + " }\n" + " this.ref = f;\n" + "})()"); + script->Run(); + CheckFunctionName(script, "return 2012", ""); } |