Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(438)

Side by Side Diff: test/cctest/test-api.cc

Issue 175009: Fix an assert in the parser that fails if extensions code using 'eval'... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 11 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/parser.cc ('k') | tools/js2c.py » ('j') | tools/js2c.py » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2007-2008 the V8 project authors. All rights reserved. 1 // Copyright 2007-2008 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 2655 matching lines...) Expand 10 before | Expand all | Expand 10 after
2666 v8::RegisterExtension(new Extension("simpletest", kSimpleExtensionSource)); 2666 v8::RegisterExtension(new Extension("simpletest", kSimpleExtensionSource));
2667 const char* extension_names[] = { "simpletest" }; 2667 const char* extension_names[] = { "simpletest" };
2668 v8::ExtensionConfiguration extensions(1, extension_names); 2668 v8::ExtensionConfiguration extensions(1, extension_names);
2669 v8::Handle<Context> context = Context::New(&extensions); 2669 v8::Handle<Context> context = Context::New(&extensions);
2670 Context::Scope lock(context); 2670 Context::Scope lock(context);
2671 v8::Handle<Value> result = Script::Compile(v8_str("Foo()"))->Run(); 2671 v8::Handle<Value> result = Script::Compile(v8_str("Foo()"))->Run();
2672 CHECK_EQ(result, v8::Integer::New(4)); 2672 CHECK_EQ(result, v8::Integer::New(4));
2673 } 2673 }
2674 2674
2675 2675
2676 static const char* kEvalExtensionSource = 2676 static const char* kEvalExtensionSource1 =
2677 "function UseEval() {" 2677 "function UseEval1() {"
2678 " var x = 42;" 2678 " var x = 42;"
2679 " return eval('x');" 2679 " return eval('x');"
2680 "}"; 2680 "}";
2681 2681
2682 2682
2683 static const char* kEvalExtensionSource2 =
2684 "(function() {"
2685 " var x = 42;"
2686 " function e() {"
2687 " return eval('x');"
2688 " }"
2689 " this.UseEval2 = e;"
2690 "})()";
2691
2692
2683 THREADED_TEST(UseEvalFromExtension) { 2693 THREADED_TEST(UseEvalFromExtension) {
2684 v8::HandleScope handle_scope; 2694 v8::HandleScope handle_scope;
2685 v8::RegisterExtension(new Extension("evaltest", kEvalExtensionSource)); 2695 v8::RegisterExtension(new Extension("evaltest1", kEvalExtensionSource1));
2686 const char* extension_names[] = { "evaltest" }; 2696 v8::RegisterExtension(new Extension("evaltest2", kEvalExtensionSource2));
2687 v8::ExtensionConfiguration extensions(1, extension_names); 2697 const char* extension_names[] = { "evaltest1", "evaltest2" };
2698 v8::ExtensionConfiguration extensions(2, extension_names);
2688 v8::Handle<Context> context = Context::New(&extensions); 2699 v8::Handle<Context> context = Context::New(&extensions);
2689 Context::Scope lock(context); 2700 Context::Scope lock(context);
2690 v8::Handle<Value> result = Script::Compile(v8_str("UseEval()"))->Run(); 2701 v8::Handle<Value> result = Script::Compile(v8_str("UseEval1()"))->Run();
2702 CHECK_EQ(result, v8::Integer::New(42));
2703 result = Script::Compile(v8_str("UseEval2()"))->Run();
2691 CHECK_EQ(result, v8::Integer::New(42)); 2704 CHECK_EQ(result, v8::Integer::New(42));
2692 } 2705 }
2693 2706
2694 2707
2695 static const char* kWithExtensionSource = 2708 static const char* kWithExtensionSource1 =
2696 "function UseWith() {" 2709 "function UseWith1() {"
2697 " var x = 42;" 2710 " var x = 42;"
2698 " with({x:87}) { return x; }" 2711 " with({x:87}) { return x; }"
2699 "}"; 2712 "}";
2700 2713
2701 2714
2715
2716 static const char* kWithExtensionSource2 =
2717 "(function() {"
2718 " var x = 42;"
2719 " function e() {"
2720 " with ({x:87}) { return x; }"
2721 " }"
2722 " this.UseWith2 = e;"
2723 "})()";
2724
2725
2702 THREADED_TEST(UseWithFromExtension) { 2726 THREADED_TEST(UseWithFromExtension) {
2703 v8::HandleScope handle_scope; 2727 v8::HandleScope handle_scope;
2704 v8::RegisterExtension(new Extension("withtest", kWithExtensionSource)); 2728 v8::RegisterExtension(new Extension("withtest1", kWithExtensionSource1));
2705 const char* extension_names[] = { "withtest" }; 2729 v8::RegisterExtension(new Extension("withtest2", kWithExtensionSource2));
2706 v8::ExtensionConfiguration extensions(1, extension_names); 2730 const char* extension_names[] = { "withtest1", "withtest2" };
2731 v8::ExtensionConfiguration extensions(2, extension_names);
2707 v8::Handle<Context> context = Context::New(&extensions); 2732 v8::Handle<Context> context = Context::New(&extensions);
2708 Context::Scope lock(context); 2733 Context::Scope lock(context);
2709 v8::Handle<Value> result = Script::Compile(v8_str("UseWith()"))->Run(); 2734 v8::Handle<Value> result = Script::Compile(v8_str("UseWith1()"))->Run();
2735 CHECK_EQ(result, v8::Integer::New(87));
2736 result = Script::Compile(v8_str("UseWith2()"))->Run();
2710 CHECK_EQ(result, v8::Integer::New(87)); 2737 CHECK_EQ(result, v8::Integer::New(87));
2711 } 2738 }
2712 2739
2713 2740
2714 THREADED_TEST(AutoExtensions) { 2741 THREADED_TEST(AutoExtensions) {
2715 v8::HandleScope handle_scope; 2742 v8::HandleScope handle_scope;
2716 Extension* extension = new Extension("autotest", kSimpleExtensionSource); 2743 Extension* extension = new Extension("autotest", kSimpleExtensionSource);
2717 extension->set_auto_enable(true); 2744 extension->set_auto_enable(true);
2718 v8::RegisterExtension(extension); 2745 v8::RegisterExtension(extension);
2719 v8::Handle<Context> context = Context::New(); 2746 v8::Handle<Context> context = Context::New();
(...skipping 5125 matching lines...) Expand 10 before | Expand all | Expand 10 after
7845 CHECK(strstr(*stack, "at foo (stack-trace-test") != NULL); 7872 CHECK(strstr(*stack, "at foo (stack-trace-test") != NULL);
7846 } 7873 }
7847 7874
7848 7875
7849 // Test that idle notification can be handled when V8 has not yet been 7876 // Test that idle notification can be handled when V8 has not yet been
7850 // set up. 7877 // set up.
7851 THREADED_TEST(IdleNotification) { 7878 THREADED_TEST(IdleNotification) {
7852 for (int i = 0; i < 100; i++) v8::V8::IdleNotification(true); 7879 for (int i = 0; i < 100; i++) v8::V8::IdleNotification(true);
7853 for (int i = 0; i < 100; i++) v8::V8::IdleNotification(false); 7880 for (int i = 0; i < 100; i++) v8::V8::IdleNotification(false);
7854 } 7881 }
OLDNEW
« no previous file with comments | « src/parser.cc ('k') | tools/js2c.py » ('j') | tools/js2c.py » ('J')

Powered by Google App Engine
This is Rietveld 408576698