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

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

Issue 2637003005: Preparsing inner funcs: simplify test-parsing/NoPessimisticContextAllocation. (Closed)
Patch Set: Created 3 years, 11 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 8556 matching lines...) Expand 10 before | Expand all | Expand 10 after
8567 i::Isolate* isolate = CcTest::i_isolate(); 8567 i::Isolate* isolate = CcTest::i_isolate();
8568 i::Factory* factory = isolate->factory(); 8568 i::Factory* factory = isolate->factory();
8569 i::HandleScope scope(isolate); 8569 i::HandleScope scope(isolate);
8570 LocalContext env; 8570 LocalContext env;
8571 8571
8572 const char* prefix = "(function outer() { var my_var; "; 8572 const char* prefix = "(function outer() { var my_var; ";
8573 const char* suffix = " })();"; 8573 const char* suffix = " })();";
8574 int prefix_len = Utf8LengthHelper(prefix); 8574 int prefix_len = Utf8LengthHelper(prefix);
8575 int suffix_len = Utf8LengthHelper(suffix); 8575 int suffix_len = Utf8LengthHelper(suffix);
8576 8576
8577 // Test both normal inner functions and inner arrow functions.
8578 const char* inner_functions[] = {"function inner(%s) { %s }",
8579 "(%s) => { %s }"};
8580
8577 struct { 8581 struct {
8582 const char* params;
8578 const char* source; 8583 const char* source;
8579 bool ctxt_allocate; 8584 bool ctxt_allocate;
8580 } inners[] = { 8585 } inners[] = {
8581 // Context allocating because we need to: 8586 // Context allocating because we need to:
8582 {"function inner() { my_var; }", true}, 8587 {"", "my_var;", true},
8583 {"function inner() { if (true) { let my_var; } my_var; }", true}, 8588 {"", "if (true) { let my_var; } my_var;", true},
8584 {"function inner() { eval(\"foo\"); }", true}, 8589 {"", "eval(\"foo\");", true},
8585 {"function inner() { function inner2() { my_var; } }", true}, 8590 {"", "function inner2() { my_var; }", true},
8586 {"function inner() { function inner2() { eval(\"foo\"); } }", true}, 8591 {"", "function inner2() { eval(\"foo\"); }", true},
8587 {"function inner() { var {my_var : a} = {my_var}; }", true}, 8592 {"", "var {my_var : a} = {my_var};", true},
8588 {"function inner() { let {my_var : a} = {my_var}; }", true}, 8593 {"", "let {my_var : a} = {my_var};", true},
8589 {"function inner() { const {my_var : a} = {my_var}; }", true}, 8594 {"", "const {my_var : a} = {my_var};", true},
8590 {"function inner(a = my_var) { }", true}, 8595 {"a = my_var", "", true},
8591 {"function inner() { function inner2(a = my_var) { } }", true}, 8596 {"", "function inner2(a = my_var) { }", true},
8592 {"function inner() { (a = my_var) => { } }", true}, 8597 {"", "(a = my_var) => { }", true},
8593 {"function inner({a} = {a: my_var}) { }", true}, 8598 {"{a} = {a: my_var}", "", true},
8594 {"function inner() { function inner2({a} = {a: my_var}) { } }", true}, 8599 {"", "function inner2({a} = {a: my_var}) { }", true},
8595 {"function inner() { ({a} = {a: my_var}) => { } }", true}, 8600 {"", "({a} = {a: my_var}) => { }", true},
8596 {"function inner([a] = [my_var]) { }", true}, 8601 {"[a] = [my_var]", "", true},
8597 {"function inner() { function inner2([a] = [my_var]) { } }", true}, 8602 {"", "function inner2([a] = [my_var]) { }", true},
8598 {"function inner() { ([a] = [my_var]) => { } }", true}, 8603 {"", "([a] = [my_var]) => { }", true},
8599 {"function inner() { try { } catch (my_var) { } my_var; }", true}, 8604 {"", "try { } catch (my_var) { } my_var;", true},
8600 {"function inner() { for (my_var in {}) { my_var; } }", true}, 8605 {"", "for (my_var in {}) { my_var; }", true},
8601 {"function inner() { for (my_var in {}) { } }", true}, 8606 {"", "for (my_var in {}) { }", true},
8602 {"function inner() { for (my_var of []) { my_var; } }", true}, 8607 {"", "for (my_var of []) { my_var; }", true},
8603 {"function inner() { for (my_var of []) { } }", true}, 8608 {"", "for (my_var of []) { }", true},
8604 {"function inner() { for ([a, my_var, b] in {}) { my_var; } }", true}, 8609 {"", "for ([a, my_var, b] in {}) { my_var; }", true},
8605 {"function inner() { for ([a, my_var, b] of []) { my_var; } }", true}, 8610 {"", "for ([a, my_var, b] of []) { my_var; }", true},
8606 {"function inner() { for ({x: my_var} in {}) { my_var; } }", true}, 8611 {"", "for ({x: my_var} in {}) { my_var; }", true},
8607 {"function inner() { for ({x: my_var} of []) { my_var; } }", true}, 8612 {"", "for ({x: my_var} of []) { my_var; }", true},
8608 {"function inner() { for ({my_var} in {}) { my_var; } }", true}, 8613 {"", "for ({my_var} in {}) { my_var; }", true},
8609 {"function inner() { for ({my_var} of []) { my_var; } }", true}, 8614 {"", "for ({my_var} of []) { my_var; }", true},
8610 {"function inner() { for ({y, x: my_var} in {}) { my_var; } }", true}, 8615 {"", "for ({y, x: my_var} in {}) { my_var; }", true},
8611 {"function inner() { for ({y, x: my_var} of []) { my_var; } }", true}, 8616 {"", "for ({y, x: my_var} of []) { my_var; }", true},
8612 {"function inner() { for ({a, my_var} in {}) { my_var; } }", true}, 8617 {"", "for ({a, my_var} in {}) { my_var; }", true},
8613 {"function inner() { for ({a, my_var} of []) { my_var; } }", true}, 8618 {"", "for ({a, my_var} of []) { my_var; }", true},
8614 {"function inner() { for (let my_var in {}) { } my_var; }", true}, 8619 {"", "for (let my_var in {}) { } my_var;", true},
8615 {"function inner() { for (let my_var of []) { } my_var; }", true}, 8620 {"", "for (let my_var of []) { } my_var;", true},
8616 {"function inner() { for (let [a, my_var, b] in {}) { } my_var; }", true}, 8621 {"", "for (let [a, my_var, b] in {}) { } my_var;", true},
8617 {"function inner() { for (let [a, my_var, b] of []) { } my_var; }", true}, 8622 {"", "for (let [a, my_var, b] of []) { } my_var;", true},
8618 {"function inner() { for (let {x: my_var} in {}) { } my_var; }", true}, 8623 {"", "for (let {x: my_var} in {}) { } my_var;", true},
8619 {"function inner() { for (let {x: my_var} of []) { } my_var; }", true}, 8624 {"", "for (let {x: my_var} of []) { } my_var;", true},
8620 {"function inner() { for (let {my_var} in {}) { } my_var; }", true}, 8625 {"", "for (let {my_var} in {}) { } my_var;", true},
8621 {"function inner() { for (let {my_var} of []) { } my_var; }", true}, 8626 {"", "for (let {my_var} of []) { } my_var;", true},
8622 {"function inner() { for (let {y, x: my_var} in {}) { } my_var; }", true}, 8627 {"", "for (let {y, x: my_var} in {}) { } my_var;", true},
8623 {"function inner() { for (let {y, x: my_var} of []) { } my_var; }", true}, 8628 {"", "for (let {y, x: my_var} of []) { } my_var;", true},
8624 {"function inner() { for (let {a, my_var} in {}) { } my_var; }", true}, 8629 {"", "for (let {a, my_var} in {}) { } my_var;", true},
8625 {"function inner() { for (let {a, my_var} of []) { } my_var; }", true}, 8630 {"", "for (let {a, my_var} of []) { } my_var;", true},
8626 {"function inner() { for (let my_var = 0; my_var < 1; ++my_var) { } " 8631 {"", "for (let my_var = 0; my_var < 1; ++my_var) { } my_var;", true},
8627 "my_var }", 8632 {"", "'use strict'; if (true) { function my_var() {} } my_var;", true},
8628 true}, 8633 {"",
8629 {"function inner() { 'use strict'; if (true) { function my_var() {} } " 8634 "'use strict'; function inner2() { if (true) { function my_var() {} } "
8630 "my_var; }", 8635 "my_var; }",
8631 true}, 8636 true},
8632 {"function inner() { 'use strict'; function inner2() { if (true) { " 8637 {"",
8633 "function my_var() {} } my_var; } }", 8638 "function inner2() { 'use strict'; if (true) { function my_var() {} } "
8634 true}, 8639 "my_var; }",
8635 {"function inner() { function inner2() { 'use strict'; if (true) { " 8640 true},
8636 "function my_var() {} } my_var; } }", 8641 {"",
8637 true}, 8642 "() => { 'use strict'; if (true) { function my_var() {} } my_var; }",
8638 {"function inner() { () => { 'use strict'; if (true) { function my_var() " 8643 true},
8639 "{} } my_var; } }", 8644 {"",
8640 true}, 8645 "if (true) { let my_var; if (true) { function my_var() {} } } my_var;",
8641 {"function inner() { if (true) { let my_var; if (true) { function "
8642 "my_var() {} } } my_var; }",
8643 true}, 8646 true},
8644 // No pessimistic context allocation: 8647 // No pessimistic context allocation:
8645 {"function inner() { var my_var; my_var; }", false}, 8648 {"", "var my_var; my_var;", false},
8646 {"function inner() { var my_var; }", false}, 8649 {"", "var my_var;", false},
8647 {"function inner() { var my_var = 0; }", false}, 8650 {"", "var my_var = 0;", false},
8648 {"function inner() { if (true) { var my_var; } my_var; }", false}, 8651 {"", "if (true) { var my_var; } my_var;", false},
8649 {"function inner() { let my_var; my_var; }", false}, 8652 {"", "let my_var; my_var;", false},
8650 {"function inner() { let my_var; }", false}, 8653 {"", "let my_var;", false},
8651 {"function inner() { let my_var = 0; }", false}, 8654 {"", "let my_var = 0;", false},
8652 {"function inner() { const my_var = 0; my_var; }", false}, 8655 {"", "const my_var = 0; my_var;", false},
8653 {"function inner() { const my_var = 0; }", false}, 8656 {"", "const my_var = 0;", false},
8654 {"function inner() { var [a, my_var] = [1, 2]; my_var; }", false}, 8657 {"", "var [a, my_var] = [1, 2]; my_var;", false},
8655 {"function inner() { let [a, my_var] = [1, 2]; my_var; }", false}, 8658 {"", "let [a, my_var] = [1, 2]; my_var;", false},
8656 {"function inner() { const [a, my_var] = [1, 2]; my_var; }", false}, 8659 {"", "const [a, my_var] = [1, 2]; my_var;", false},
8657 {"function inner() { var {a: my_var} = {a: 3}; my_var; }", false}, 8660 {"", "var {a: my_var} = {a: 3}; my_var;", false},
8658 {"function inner() { let {a: my_var} = {a: 3}; my_var; }", false}, 8661 {"", "let {a: my_var} = {a: 3}; my_var;", false},
8659 {"function inner() { const {a: my_var} = {a: 3}; my_var; }", false}, 8662 {"", "const {a: my_var} = {a: 3}; my_var;", false},
8660 {"function inner() { var {my_var} = {my_var: 3}; my_var; }", false}, 8663 {"", "var {my_var} = {my_var: 3}; my_var;", false},
8661 {"function inner() { let {my_var} = {my_var: 3}; my_var; }", false}, 8664 {"", "let {my_var} = {my_var: 3}; my_var;", false},
8662 {"function inner() { const {my_var} = {my_var: 3}; my_var; }", false}, 8665 {"", "const {my_var} = {my_var: 3}; my_var;", false},
8663 {"function inner(my_var) { my_var; }", false}, 8666 {"my_var", "my_var;", false},
8664 {"function inner(my_var) { }", false}, 8667 {"my_var", "", false},
8665 {"function inner(my_var = 5) { my_var; }", false}, 8668 {"my_var = 5", "my_var;", false},
8666 {"function inner(my_var = 5) { }", false}, 8669 {"my_var = 5", "", false},
8667 {"function inner(...my_var) { my_var; }", false}, 8670 {"...my_var", "my_var;", false},
8668 {"function inner(...my_var) { }", false}, 8671 {"...my_var", "", false},
8669 {"function inner([a, my_var, b]) { my_var; }", false}, 8672 {"[a, my_var, b]", "my_var;", false},
8670 {"function inner([a, my_var, b]) { }", false}, 8673 {"[a, my_var, b]", "", false},
8671 {"function inner([a, my_var, b] = [1, 2, 3]) { my_var; }", false}, 8674 {"[a, my_var, b] = [1, 2, 3]", "my_var;", false},
8672 {"function inner([a, my_var, b] = [1, 2, 3]) { }", false}, 8675 {"[a, my_var, b] = [1, 2, 3]", "", false},
8673 {"function inner({x: my_var}) { my_var; }", false}, 8676 {"{x: my_var}", "my_var;", false},
8674 {"function inner({x: my_var}) { }", false}, 8677 {"{x: my_var}", "", false},
8675 {"function inner({x: my_var} = {x: 0}) { my_var; }", false}, 8678 {"{x: my_var} = {x: 0}", "my_var;", false},
8676 {"function inner({x: my_var} = {x: 0}) { }", false}, 8679 {"{x: my_var} = {x: 0}", "", false},
8677 {"function inner({my_var}) { my_var; }", false}, 8680 {"{my_var}", "my_var;", false},
8678 {"function inner({my_var}) { }", false}, 8681 {"{my_var}", "", false},
8679 {"function inner({my_var} = {my_var: 0}) { my_var; }", false}, 8682 {"{my_var} = {my_var: 0}", "my_var;", false},
8680 {"function inner({my_var} = {my_var: 0}) { }", false}, 8683 {"{my_var} = {my_var: 0}", "", false},
8681 {"function inner() { function inner2(my_var) { my_var; } }", false}, 8684 {"", "function inner2(my_var) { my_var; }", false},
8682 {"function inner() { function inner2(my_var) { } }", false}, 8685 {"", "function inner2(my_var) { }", false},
8683 {"function inner() { function inner2(my_var = 5) { my_var; } }", false}, 8686 {"", "function inner2(my_var = 5) { my_var; }", false},
8684 {"function inner() { function inner2(my_var = 5) { } }", false}, 8687 {"", "function inner2(my_var = 5) { }", false},
8685 {"function inner() { function inner2(...my_var) { my_var; } }", false}, 8688 {"", "function inner2(...my_var) { my_var; }", false},
8686 {"function inner() { function inner2(...my_var) { } }", false}, 8689 {"", "function inner2(...my_var) { }", false},
8687 {"function inner() { function inner2([a, my_var, b]) { my_var; } }", 8690 {"", "function inner2([a, my_var, b]) { my_var; }", false},
8688 false}, 8691 {"", "function inner2([a, my_var, b]) { }", false},
8689 {"function inner() { function inner2([a, my_var, b]) { } }", false}, 8692 {"", "function inner2([a, my_var, b] = [1, 2, 3]) { my_var; }", false},
8690 {"function inner() { function inner2([a, my_var, b] = [1, 2, 3]) { " 8693 {"", "function inner2([a, my_var, b] = [1, 2, 3]) { }", false},
8691 "my_var; } }", 8694 {"", "function inner2({x: my_var}) { my_var; }", false},
8692 false}, 8695 {"", "function inner2({x: my_var}) { }", false},
8693 {"function inner() { function inner2([a, my_var, b] = [1, 2, 3]) { } }", 8696 {"", "function inner2({x: my_var} = {x: 0}) { my_var; }", false},
8694 false}, 8697 {"", "function inner2({x: my_var} = {x: 0}) { }", false},
8695 {"function inner() { function inner2({x: my_var}) { my_var; } }", false}, 8698 {"", "function inner2({my_var}) { my_var; }", false},
8696 {"function inner() { function inner2({x: my_var}) { } }", false}, 8699 {"", "function inner2({my_var}) { }", false},
8697 {"function inner() { function inner2({x: my_var} = {x: 0}) { my_var; } }", 8700 {"", "function inner2({my_var} = {my_var: 8}) { my_var; } ", false},
8698 false}, 8701 {"", "function inner2({my_var} = {my_var: 8}) { }", false},
8699 {"function inner() { function inner2({x: my_var} = {x: 0}) { } }", false}, 8702 {"", "my_var => my_var;", false},
8700 {"function inner() { function inner2({my_var}) { my_var; } }", false}, 8703 {"", "my_var => { }", false},
8701 {"function inner() { function inner2({my_var}) { } }", false}, 8704 {"", "(my_var = 5) => my_var;", false},
8702 {"function inner() { function inner2({my_var} = {my_var: 8}) { my_var; } " 8705 {"", "(my_var = 5) => { }", false},
8703 "}", 8706 {"", "(...my_var) => my_var;", false},
8704 false}, 8707 {"", "(...my_var) => { }", false},
8705 {"function inner() { function inner2({my_var} = {my_var: 8}) { } }", 8708 {"", "([a, my_var, b]) => my_var;", false},
8706 false}, 8709 {"", "([a, my_var, b]) => { }", false},
8707 {"my_var => my_var; ", false}, 8710 {"", "([a, my_var, b] = [1, 2, 3]) => my_var;", false},
8708 {"my_var => { }", false}, 8711 {"", "([a, my_var, b] = [1, 2, 3]) => { }", false},
8709 {"(my_var = 5) => my_var; ", false}, 8712 {"", "({x: my_var}) => my_var;", false},
8710 {"(my_var = 5) => { }", false}, 8713 {"", "({x: my_var}) => { }", false},
8711 {"(...my_var) => my_var;", false}, 8714 {"", "({x: my_var} = {x: 0}) => my_var;", false},
8712 {"(...my_var) => { }", false}, 8715 {"", "({x: my_var} = {x: 0}) => { }", false},
8713 {"([a, my_var, b]) => my_var;", false}, 8716 {"", "({my_var}) => my_var;", false},
8714 {"([a, my_var, b]) => { }", false}, 8717 {"", "({my_var}) => { }", false},
8715 {"([a, my_var, b] = [1, 2, 3]) => my_var;", false}, 8718 {"", "({my_var} = {my_var: 5}) => my_var;", false},
8716 {"([a, my_var, b] = [1, 2, 3]) => { }", false}, 8719 {"", "({my_var} = {my_var: 5}) => { }", false},
8717 {"({x: my_var}) => my_var;", false}, 8720 {"", "({a, my_var}) => my_var;", false},
8718 {"({x: my_var}) => { }", false}, 8721 {"", "({a, my_var}) => { }", false},
8719 {"({x: my_var} = {x: 0}) => my_var;", false}, 8722 {"", "({a, my_var} = {a: 0, my_var: 5}) => my_var;", false},
8720 {"({x: my_var} = {x: 0}) => { }", false}, 8723 {"", "({a, my_var} = {a: 0, my_var: 5}) => { }", false},
8721 {"({my_var}) => my_var;", false}, 8724 {"", "({y, x: my_var}) => my_var;", false},
8722 {"({my_var}) => { }", false}, 8725 {"", "({y, x: my_var}) => { }", false},
8723 {"({my_var} = {my_var: 5}) => my_var;", false}, 8726 {"", "({y, x: my_var} = {y: 0, x: 0}) => my_var;", false},
8724 {"({my_var} = {my_var: 5}) => { }", false}, 8727 {"", "({y, x: my_var} = {y: 0, x: 0}) => { }", false},
8725 {"({a, my_var}) => my_var;", false}, 8728 {"", "try { } catch (my_var) { my_var; }", false},
8726 {"({a, my_var}) => { }", false}, 8729 {"", "try { } catch ([a, my_var, b]) { my_var; }", false},
8727 {"({a, my_var} = {a: 0, my_var: 5}) => my_var;", false}, 8730 {"", "try { } catch ({x: my_var}) { my_var; }", false},
8728 {"({a, my_var} = {a: 0, my_var: 5}) => { }", false}, 8731 {"", "try { } catch ({y, x: my_var}) { my_var; }", false},
8729 {"({y, x: my_var}) => my_var;", false}, 8732 {"", "try { } catch ({my_var}) { my_var; }", false},
8730 {"({y, x: my_var}) => { }", false}, 8733 {"", "for (let my_var in {}) { my_var; }", false},
8731 {"({y, x: my_var} = {y: 0, x: 0}) => my_var;", false}, 8734 {"", "for (let my_var in {}) { }", false},
8732 {"({y, x: my_var} = {y: 0, x: 0}) => { }", false}, 8735 {"", "for (let my_var of []) { my_var; }", false},
8733 {"function inner() { my_var => my_var; }", false}, 8736 {"", "for (let my_var of []) { }", false},
8734 {"function inner() { my_var => { }}", false}, 8737 {"", "for (let [a, my_var, b] in {}) { my_var; }", false},
8735 {"function inner() { (my_var = 5) => my_var; }", false}, 8738 {"", "for (let [a, my_var, b] of []) { my_var; }", false},
8736 {"function inner() { (my_var = 5) => { }}", false}, 8739 {"", "for (let {x: my_var} in {}) { my_var; }", false},
8737 {"function inner() { (...my_var) => my_var;}", false}, 8740 {"", "for (let {x: my_var} of []) { my_var; }", false},
8738 {"function inner() { (...my_var) => { }}", false}, 8741 {"", "for (let {my_var} in {}) { my_var; }", false},
8739 {"function inner() { ([a, my_var, b]) => my_var;}", false}, 8742 {"", "for (let {my_var} of []) { my_var; }", false},
8740 {"function inner() { ([a, my_var, b]) => { }}", false}, 8743 {"", "for (let {y, x: my_var} in {}) { my_var; }", false},
8741 {"function inner() { ([a, my_var, b] = [1, 2, 3]) => my_var;}", false}, 8744 {"", "for (let {y, x: my_var} of []) { my_var; }", false},
8742 {"function inner() { ([a, my_var, b] = [1, 2, 3]) => { }}", false}, 8745 {"", "for (let {a, my_var} in {}) { my_var; }", false},
8743 {"function inner() { ({x: my_var}) => my_var;}", false}, 8746 {"", "for (let {a, my_var} of []) { my_var; }", false},
8744 {"function inner() { ({x: my_var}) => { }}", false}, 8747 {"", "for (var my_var in {}) { my_var; }", false},
8745 {"function inner() { ({x: my_var} = {x: 0}) => my_var;}", false}, 8748 {"", "for (var my_var in {}) { }", false},
8746 {"function inner() { ({x: my_var} = {x: 0}) => { }}", false}, 8749 {"", "for (var my_var of []) { my_var; }", false},
8747 {"function inner() { ({my_var}) => my_var;}", false}, 8750 {"", "for (var my_var of []) { }", false},
8748 {"function inner() { ({my_var}) => { }}", false}, 8751 {"", "for (var [a, my_var, b] in {}) { my_var; }", false},
8749 {"function inner() { ({my_var} = {my_var: 5}) => my_var;}", false}, 8752 {"", "for (var [a, my_var, b] of []) { my_var; }", false},
8750 {"function inner() { ({my_var} = {my_var: 5}) => { }}", false}, 8753 {"", "for (var {x: my_var} in {}) { my_var; }", false},
8751 {"function inner() { ({a, my_var}) => my_var;}", false}, 8754 {"", "for (var {x: my_var} of []) { my_var; }", false},
8752 {"function inner() { ({a, my_var}) => { }}", false}, 8755 {"", "for (var {my_var} in {}) { my_var; }", false},
8753 {"function inner() { ({a, my_var} = {a: 0, my_var: 5}) => my_var;}", 8756 {"", "for (var {my_var} of []) { my_var; }", false},
8754 false}, 8757 {"", "for (var {y, x: my_var} in {}) { my_var; }", false},
8755 {"function inner() { ({a, my_var} = {a: 0, my_var: 5}) => { }}", false}, 8758 {"", "for (var {y, x: my_var} of []) { my_var; }", false},
8756 {"function inner() { ({y, x: my_var}) => my_var;}", false}, 8759 {"", "for (var {a, my_var} in {}) { my_var; }", false},
8757 {"function inner() { ({y, x: my_var}) => { }}", false}, 8760 {"", "for (var {a, my_var} of []) { my_var; }", false},
8758 {"function inner() { ({y, x: my_var} = {y: 0, x: 0}) => my_var;}", false}, 8761 {"", "for (var my_var in {}) { } my_var;", false},
8759 {"function inner() { ({y, x: my_var} = {y: 0, x: 0}) => { }}", false}, 8762 {"", "for (var my_var of []) { } my_var;", false},
8760 {"function inner() { try { } catch (my_var) { my_var; } }", false}, 8763 {"", "for (var [a, my_var, b] in {}) { } my_var;", false},
8761 {"function inner() { try { } catch ([a, my_var, b]) { my_var; } }", 8764 {"", "for (var [a, my_var, b] of []) { } my_var;", false},
8762 false}, 8765 {"", "for (var {x: my_var} in {}) { } my_var;", false},
8763 {"function inner() { try { } catch ({x: my_var}) { my_var; } }", false}, 8766 {"", "for (var {x: my_var} of []) { } my_var;", false},
8764 {"function inner() { try { } catch ({y, x: my_var}) { my_var; } }", 8767 {"", "for (var {my_var} in {}) { } my_var;", false},
8765 false}, 8768 {"", "for (var {my_var} of []) { } my_var;", false},
8766 {"function inner() { try { } catch ({my_var}) { my_var; } }", false}, 8769 {"", "for (var {y, x: my_var} in {}) { } my_var;", false},
8767 {"function inner() { for (let my_var in {}) { my_var; } }", false}, 8770 {"", "for (var {y, x: my_var} of []) { } my_var;", false},
8768 {"function inner() { for (let my_var in {}) { } }", false}, 8771 {"", "for (var {a, my_var} in {}) { } my_var;", false},
8769 {"function inner() { for (let my_var of []) { my_var; } }", false}, 8772 {"", "for (var {a, my_var} of []) { } my_var;", false},
8770 {"function inner() { for (let my_var of []) { } }", false}, 8773 {"", "for (let my_var = 0; my_var < 1; ++my_var) { my_var; }", false},
8771 {"function inner() { for (let [a, my_var, b] in {}) { my_var; } }", 8774 {"", "for (var my_var = 0; my_var < 1; ++my_var) { my_var; }", false},
8772 false}, 8775 {"", "for (var my_var = 0; my_var < 1; ++my_var) { } my_var; ", false},
8773 {"function inner() { for (let [a, my_var, b] of []) { my_var; } }", 8776 {"", "for (let a = 0, my_var = 0; my_var < 1; ++my_var) { my_var }",
8774 false}, 8777 false},
8775 {"function inner() { for (let {x: my_var} in {}) { my_var; } }", false}, 8778 {"", "for (var a = 0, my_var = 0; my_var < 1; ++my_var) { my_var }",
8776 {"function inner() { for (let {x: my_var} of []) { my_var; } }", false}, 8779 false},
8777 {"function inner() { for (let {my_var} in {}) { my_var; } }", false}, 8780 {"", "class my_var {}; my_var; ", false},
8778 {"function inner() { for (let {my_var} of []) { my_var; } }", false}, 8781 {"", "function my_var() {} my_var;", false},
8779 {"function inner() { for (let {y, x: my_var} in {}) { my_var; } }", 8782 {"", "if (true) { function my_var() {} } my_var;", false},
8780 false}, 8783 {"", "function inner2() { if (true) { function my_var() {} } my_var; }",
8781 {"function inner() { for (let {y, x: my_var} of []) { my_var; } }", 8784 false},
8782 false}, 8785 {"", "() => { if (true) { function my_var() {} } my_var; }", false},
8783 {"function inner() { for (let {a, my_var} in {}) { my_var; } }", false}, 8786 {"",
8784 {"function inner() { for (let {a, my_var} of []) { my_var; } }", false}, 8787 "if (true) { var my_var; if (true) { function my_var() {} } } my_var;",
8785 {"function inner() { for (var my_var in {}) { my_var; } }", false},
8786 {"function inner() { for (var my_var in {}) { } }", false},
8787 {"function inner() { for (var my_var of []) { my_var; } }", false},
8788 {"function inner() { for (var my_var of []) { } }", false},
8789 {"function inner() { for (var [a, my_var, b] in {}) { my_var; } }",
8790 false},
8791 {"function inner() { for (var [a, my_var, b] of []) { my_var; } }",
8792 false},
8793 {"function inner() { for (var {x: my_var} in {}) { my_var; } }", false},
8794 {"function inner() { for (var {x: my_var} of []) { my_var; } }", false},
8795 {"function inner() { for (var {my_var} in {}) { my_var; } }", false},
8796 {"function inner() { for (var {my_var} of []) { my_var; } }", false},
8797 {"function inner() { for (var {y, x: my_var} in {}) { my_var; } }",
8798 false},
8799 {"function inner() { for (var {y, x: my_var} of []) { my_var; } }",
8800 false},
8801 {"function inner() { for (var {a, my_var} in {}) { my_var; } }", false},
8802 {"function inner() { for (var {a, my_var} of []) { my_var; } }", false},
8803 {"function inner() { for (var my_var in {}) { } my_var; }", false},
8804 {"function inner() { for (var my_var of []) { } my_var; }", false},
8805 {"function inner() { for (var [a, my_var, b] in {}) { } my_var; }",
8806 false},
8807 {"function inner() { for (var [a, my_var, b] of []) { } my_var; }",
8808 false},
8809 {"function inner() { for (var {x: my_var} in {}) { } my_var; }", false},
8810 {"function inner() { for (var {x: my_var} of []) { } my_var; }", false},
8811 {"function inner() { for (var {my_var} in {}) { } my_var; }", false},
8812 {"function inner() { for (var {my_var} of []) { } my_var; }", false},
8813 {"function inner() { for (var {y, x: my_var} in {}) { } my_var; }",
8814 false},
8815 {"function inner() { for (var {y, x: my_var} of []) { } my_var; }",
8816 false},
8817 {"function inner() { for (var {a, my_var} in {}) { } my_var; }", false},
8818 {"function inner() { for (var {a, my_var} of []) { } my_var; }", false},
8819 {"function inner() { for (let my_var = 0; my_var < 1; ++my_var) { my_var "
8820 "} }",
8821 false},
8822 {"function inner() { for (var my_var = 0; my_var < 1; ++my_var) { my_var "
8823 "} }",
8824 false},
8825 {"function inner() { for (var my_var = 0; my_var < 1; ++my_var) { } "
8826 "my_var }",
8827 false},
8828 {"function inner() { for (let a = 0, my_var = 0; my_var < 1; ++my_var) { "
8829 "my_var } }",
8830 false},
8831 {"function inner() { for (var a = 0, my_var = 0; my_var < 1; ++my_var) { "
8832 "my_var } }",
8833 false},
8834 {"function inner() { class my_var {}; my_var }", false},
8835 {"function inner() { function my_var() {} my_var; }", false},
8836 {"function inner() { if (true) { function my_var() {} } my_var; }",
8837 false},
8838 {"function inner() { function inner2() { if (true) { function my_var() "
8839 "{} } my_var; } }",
8840 false},
8841 {"function inner() { () => { if (true) { function my_var() {} } my_var; "
8842 "} }",
8843 false},
8844 {"function inner() { if (true) { var my_var; if (true) { function "
8845 "my_var() {} } } my_var; }",
8846 false}, 8788 false},
8847 }; 8789 };
8848 8790
8849 for (unsigned i = 0; i < arraysize(inners); ++i) { 8791 for (unsigned inner_ix = 0; inner_ix < arraysize(inner_functions);
8850 const char* inner = inners[i].source; 8792 ++inner_ix) {
8851 int inner_len = Utf8LengthHelper(inner); 8793 const char* inner_function = inner_functions[inner_ix];
8852 int len = prefix_len + inner_len + suffix_len; 8794 int inner_function_len = Utf8LengthHelper(inner_function) - 4;
8853 i::ScopedVector<char> program(len + 1); 8795
8854 i::SNPrintF(program, "%s%s%s", prefix, inner, suffix); 8796 for (unsigned i = 0; i < arraysize(inners); ++i) {
8855 i::Handle<i::String> source = 8797 int params_len = Utf8LengthHelper(inners[i].params);
8856 factory->InternalizeUtf8String(program.start()); 8798 int source_len = Utf8LengthHelper(inners[i].source);
8857 source->PrintOn(stdout); 8799 int len = prefix_len + inner_function_len + params_len + source_len +
8858 printf("\n"); 8800 suffix_len;
8859 8801
8860 i::Handle<i::Script> script = factory->NewScript(source); 8802 i::ScopedVector<char> program(len + 1);
8861 i::Zone zone(isolate->allocator(), ZONE_NAME); 8803 i::SNPrintF(program, "%s", prefix);
8862 i::ParseInfo info(&zone, script); 8804 i::SNPrintF(program + prefix_len, inner_function, inners[i].params,
8863 8805 inners[i].source);
8864 CHECK(i::parsing::ParseProgram(&info)); 8806 i::SNPrintF(
8865 CHECK(i::Compiler::Analyze(&info)); 8807 program + prefix_len + inner_function_len + params_len + source_len,
8866 CHECK(info.literal() != NULL); 8808 "%s", suffix);
8867 8809
8868 i::Scope* scope = info.literal()->scope()->inner_scope(); 8810 i::Handle<i::String> source =
8869 DCHECK_NOT_NULL(scope); 8811 factory->InternalizeUtf8String(program.start());
8870 DCHECK_NULL(scope->sibling()); 8812 source->PrintOn(stdout);
8871 DCHECK(scope->is_function_scope()); 8813 printf("\n");
8872 const i::AstRawString* var_name = 8814
8873 info.ast_value_factory()->GetOneByteString("my_var"); 8815 i::Handle<i::Script> script = factory->NewScript(source);
8874 i::Variable* var = scope->Lookup(var_name); 8816 i::Zone zone(isolate->allocator(), ZONE_NAME);
8875 CHECK_EQ(inners[i].ctxt_allocate, 8817 i::ParseInfo info(&zone, script);
8876 i::ScopeTestHelper::MustAllocateInContext(var)); 8818
8819 CHECK(i::parsing::ParseProgram(&info));
8820 CHECK(i::Compiler::Analyze(&info));
8821 CHECK(info.literal() != NULL);
8822
8823 i::Scope* scope = info.literal()->scope()->inner_scope();
8824 DCHECK_NOT_NULL(scope);
8825 DCHECK_NULL(scope->sibling());
8826 DCHECK(scope->is_function_scope());
8827 const i::AstRawString* var_name =
8828 info.ast_value_factory()->GetOneByteString("my_var");
8829 i::Variable* var = scope->Lookup(var_name);
8830 CHECK_EQ(inners[i].ctxt_allocate,
8831 i::ScopeTestHelper::MustAllocateInContext(var));
8832 }
8877 } 8833 }
8878 } 8834 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698