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

Unified 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/cctest/test-parsing.cc
diff --git a/test/cctest/test-parsing.cc b/test/cctest/test-parsing.cc
index d668dd377be9e15de6aa0926562617cf2a91d7a3..ef88d90484a51f5497b610ff4dfa41836ab9e980 100644
--- a/test/cctest/test-parsing.cc
+++ b/test/cctest/test-parsing.cc
@@ -8574,305 +8574,261 @@ TEST(NoPessimisticContextAllocation) {
int prefix_len = Utf8LengthHelper(prefix);
int suffix_len = Utf8LengthHelper(suffix);
+ // Test both normal inner functions and inner arrow functions.
+ const char* inner_functions[] = {"function inner(%s) { %s }",
+ "(%s) => { %s }"};
+
struct {
+ const char* params;
const char* source;
bool ctxt_allocate;
} inners[] = {
// Context allocating because we need to:
- {"function inner() { my_var; }", true},
- {"function inner() { if (true) { let my_var; } my_var; }", true},
- {"function inner() { eval(\"foo\"); }", true},
- {"function inner() { function inner2() { my_var; } }", true},
- {"function inner() { function inner2() { eval(\"foo\"); } }", true},
- {"function inner() { var {my_var : a} = {my_var}; }", true},
- {"function inner() { let {my_var : a} = {my_var}; }", true},
- {"function inner() { const {my_var : a} = {my_var}; }", true},
- {"function inner(a = my_var) { }", true},
- {"function inner() { function inner2(a = my_var) { } }", true},
- {"function inner() { (a = my_var) => { } }", true},
- {"function inner({a} = {a: my_var}) { }", true},
- {"function inner() { function inner2({a} = {a: my_var}) { } }", true},
- {"function inner() { ({a} = {a: my_var}) => { } }", true},
- {"function inner([a] = [my_var]) { }", true},
- {"function inner() { function inner2([a] = [my_var]) { } }", true},
- {"function inner() { ([a] = [my_var]) => { } }", true},
- {"function inner() { try { } catch (my_var) { } my_var; }", true},
- {"function inner() { for (my_var in {}) { my_var; } }", true},
- {"function inner() { for (my_var in {}) { } }", true},
- {"function inner() { for (my_var of []) { my_var; } }", true},
- {"function inner() { for (my_var of []) { } }", true},
- {"function inner() { for ([a, my_var, b] in {}) { my_var; } }", true},
- {"function inner() { for ([a, my_var, b] of []) { my_var; } }", true},
- {"function inner() { for ({x: my_var} in {}) { my_var; } }", true},
- {"function inner() { for ({x: my_var} of []) { my_var; } }", true},
- {"function inner() { for ({my_var} in {}) { my_var; } }", true},
- {"function inner() { for ({my_var} of []) { my_var; } }", true},
- {"function inner() { for ({y, x: my_var} in {}) { my_var; } }", true},
- {"function inner() { for ({y, x: my_var} of []) { my_var; } }", true},
- {"function inner() { for ({a, my_var} in {}) { my_var; } }", true},
- {"function inner() { for ({a, my_var} of []) { my_var; } }", true},
- {"function inner() { for (let my_var in {}) { } my_var; }", true},
- {"function inner() { for (let my_var of []) { } my_var; }", true},
- {"function inner() { for (let [a, my_var, b] in {}) { } my_var; }", true},
- {"function inner() { for (let [a, my_var, b] of []) { } my_var; }", true},
- {"function inner() { for (let {x: my_var} in {}) { } my_var; }", true},
- {"function inner() { for (let {x: my_var} of []) { } my_var; }", true},
- {"function inner() { for (let {my_var} in {}) { } my_var; }", true},
- {"function inner() { for (let {my_var} of []) { } my_var; }", true},
- {"function inner() { for (let {y, x: my_var} in {}) { } my_var; }", true},
- {"function inner() { for (let {y, x: my_var} of []) { } my_var; }", true},
- {"function inner() { for (let {a, my_var} in {}) { } my_var; }", true},
- {"function inner() { for (let {a, my_var} of []) { } my_var; }", true},
- {"function inner() { for (let my_var = 0; my_var < 1; ++my_var) { } "
- "my_var }",
- true},
- {"function inner() { 'use strict'; if (true) { function my_var() {} } "
+ {"", "my_var;", true},
+ {"", "if (true) { let my_var; } my_var;", true},
+ {"", "eval(\"foo\");", true},
+ {"", "function inner2() { my_var; }", true},
+ {"", "function inner2() { eval(\"foo\"); }", true},
+ {"", "var {my_var : a} = {my_var};", true},
+ {"", "let {my_var : a} = {my_var};", true},
+ {"", "const {my_var : a} = {my_var};", true},
+ {"a = my_var", "", true},
+ {"", "function inner2(a = my_var) { }", true},
+ {"", "(a = my_var) => { }", true},
+ {"{a} = {a: my_var}", "", true},
+ {"", "function inner2({a} = {a: my_var}) { }", true},
+ {"", "({a} = {a: my_var}) => { }", true},
+ {"[a] = [my_var]", "", true},
+ {"", "function inner2([a] = [my_var]) { }", true},
+ {"", "([a] = [my_var]) => { }", true},
+ {"", "try { } catch (my_var) { } my_var;", true},
+ {"", "for (my_var in {}) { my_var; }", true},
+ {"", "for (my_var in {}) { }", true},
+ {"", "for (my_var of []) { my_var; }", true},
+ {"", "for (my_var of []) { }", true},
+ {"", "for ([a, my_var, b] in {}) { my_var; }", true},
+ {"", "for ([a, my_var, b] of []) { my_var; }", true},
+ {"", "for ({x: my_var} in {}) { my_var; }", true},
+ {"", "for ({x: my_var} of []) { my_var; }", true},
+ {"", "for ({my_var} in {}) { my_var; }", true},
+ {"", "for ({my_var} of []) { my_var; }", true},
+ {"", "for ({y, x: my_var} in {}) { my_var; }", true},
+ {"", "for ({y, x: my_var} of []) { my_var; }", true},
+ {"", "for ({a, my_var} in {}) { my_var; }", true},
+ {"", "for ({a, my_var} of []) { my_var; }", true},
+ {"", "for (let my_var in {}) { } my_var;", true},
+ {"", "for (let my_var of []) { } my_var;", true},
+ {"", "for (let [a, my_var, b] in {}) { } my_var;", true},
+ {"", "for (let [a, my_var, b] of []) { } my_var;", true},
+ {"", "for (let {x: my_var} in {}) { } my_var;", true},
+ {"", "for (let {x: my_var} of []) { } my_var;", true},
+ {"", "for (let {my_var} in {}) { } my_var;", true},
+ {"", "for (let {my_var} of []) { } my_var;", true},
+ {"", "for (let {y, x: my_var} in {}) { } my_var;", true},
+ {"", "for (let {y, x: my_var} of []) { } my_var;", true},
+ {"", "for (let {a, my_var} in {}) { } my_var;", true},
+ {"", "for (let {a, my_var} of []) { } my_var;", true},
+ {"", "for (let my_var = 0; my_var < 1; ++my_var) { } my_var;", true},
+ {"", "'use strict'; if (true) { function my_var() {} } my_var;", true},
+ {"",
+ "'use strict'; function inner2() { if (true) { function my_var() {} } "
"my_var; }",
true},
- {"function inner() { 'use strict'; function inner2() { if (true) { "
- "function my_var() {} } my_var; } }",
- true},
- {"function inner() { function inner2() { 'use strict'; if (true) { "
- "function my_var() {} } my_var; } }",
+ {"",
+ "function inner2() { 'use strict'; if (true) { function my_var() {} } "
+ "my_var; }",
true},
- {"function inner() { () => { 'use strict'; if (true) { function my_var() "
- "{} } my_var; } }",
+ {"",
+ "() => { 'use strict'; if (true) { function my_var() {} } my_var; }",
true},
- {"function inner() { if (true) { let my_var; if (true) { function "
- "my_var() {} } } my_var; }",
+ {"",
+ "if (true) { let my_var; if (true) { function my_var() {} } } my_var;",
true},
// No pessimistic context allocation:
- {"function inner() { var my_var; my_var; }", false},
- {"function inner() { var my_var; }", false},
- {"function inner() { var my_var = 0; }", false},
- {"function inner() { if (true) { var my_var; } my_var; }", false},
- {"function inner() { let my_var; my_var; }", false},
- {"function inner() { let my_var; }", false},
- {"function inner() { let my_var = 0; }", false},
- {"function inner() { const my_var = 0; my_var; }", false},
- {"function inner() { const my_var = 0; }", false},
- {"function inner() { var [a, my_var] = [1, 2]; my_var; }", false},
- {"function inner() { let [a, my_var] = [1, 2]; my_var; }", false},
- {"function inner() { const [a, my_var] = [1, 2]; my_var; }", false},
- {"function inner() { var {a: my_var} = {a: 3}; my_var; }", false},
- {"function inner() { let {a: my_var} = {a: 3}; my_var; }", false},
- {"function inner() { const {a: my_var} = {a: 3}; my_var; }", false},
- {"function inner() { var {my_var} = {my_var: 3}; my_var; }", false},
- {"function inner() { let {my_var} = {my_var: 3}; my_var; }", false},
- {"function inner() { const {my_var} = {my_var: 3}; my_var; }", false},
- {"function inner(my_var) { my_var; }", false},
- {"function inner(my_var) { }", false},
- {"function inner(my_var = 5) { my_var; }", false},
- {"function inner(my_var = 5) { }", false},
- {"function inner(...my_var) { my_var; }", false},
- {"function inner(...my_var) { }", false},
- {"function inner([a, my_var, b]) { my_var; }", false},
- {"function inner([a, my_var, b]) { }", false},
- {"function inner([a, my_var, b] = [1, 2, 3]) { my_var; }", false},
- {"function inner([a, my_var, b] = [1, 2, 3]) { }", false},
- {"function inner({x: my_var}) { my_var; }", false},
- {"function inner({x: my_var}) { }", false},
- {"function inner({x: my_var} = {x: 0}) { my_var; }", false},
- {"function inner({x: my_var} = {x: 0}) { }", false},
- {"function inner({my_var}) { my_var; }", false},
- {"function inner({my_var}) { }", false},
- {"function inner({my_var} = {my_var: 0}) { my_var; }", false},
- {"function inner({my_var} = {my_var: 0}) { }", false},
- {"function inner() { function inner2(my_var) { my_var; } }", false},
- {"function inner() { function inner2(my_var) { } }", false},
- {"function inner() { function inner2(my_var = 5) { my_var; } }", false},
- {"function inner() { function inner2(my_var = 5) { } }", false},
- {"function inner() { function inner2(...my_var) { my_var; } }", false},
- {"function inner() { function inner2(...my_var) { } }", false},
- {"function inner() { function inner2([a, my_var, b]) { my_var; } }",
- false},
- {"function inner() { function inner2([a, my_var, b]) { } }", false},
- {"function inner() { function inner2([a, my_var, b] = [1, 2, 3]) { "
- "my_var; } }",
- false},
- {"function inner() { function inner2([a, my_var, b] = [1, 2, 3]) { } }",
- false},
- {"function inner() { function inner2({x: my_var}) { my_var; } }", false},
- {"function inner() { function inner2({x: my_var}) { } }", false},
- {"function inner() { function inner2({x: my_var} = {x: 0}) { my_var; } }",
- false},
- {"function inner() { function inner2({x: my_var} = {x: 0}) { } }", false},
- {"function inner() { function inner2({my_var}) { my_var; } }", false},
- {"function inner() { function inner2({my_var}) { } }", false},
- {"function inner() { function inner2({my_var} = {my_var: 8}) { my_var; } "
- "}",
- false},
- {"function inner() { function inner2({my_var} = {my_var: 8}) { } }",
- false},
- {"my_var => my_var; ", false},
- {"my_var => { }", false},
- {"(my_var = 5) => my_var; ", false},
- {"(my_var = 5) => { }", false},
- {"(...my_var) => my_var;", false},
- {"(...my_var) => { }", false},
- {"([a, my_var, b]) => my_var;", false},
- {"([a, my_var, b]) => { }", false},
- {"([a, my_var, b] = [1, 2, 3]) => my_var;", false},
- {"([a, my_var, b] = [1, 2, 3]) => { }", false},
- {"({x: my_var}) => my_var;", false},
- {"({x: my_var}) => { }", false},
- {"({x: my_var} = {x: 0}) => my_var;", false},
- {"({x: my_var} = {x: 0}) => { }", false},
- {"({my_var}) => my_var;", false},
- {"({my_var}) => { }", false},
- {"({my_var} = {my_var: 5}) => my_var;", false},
- {"({my_var} = {my_var: 5}) => { }", false},
- {"({a, my_var}) => my_var;", false},
- {"({a, my_var}) => { }", false},
- {"({a, my_var} = {a: 0, my_var: 5}) => my_var;", false},
- {"({a, my_var} = {a: 0, my_var: 5}) => { }", false},
- {"({y, x: my_var}) => my_var;", false},
- {"({y, x: my_var}) => { }", false},
- {"({y, x: my_var} = {y: 0, x: 0}) => my_var;", false},
- {"({y, x: my_var} = {y: 0, x: 0}) => { }", false},
- {"function inner() { my_var => my_var; }", false},
- {"function inner() { my_var => { }}", false},
- {"function inner() { (my_var = 5) => my_var; }", false},
- {"function inner() { (my_var = 5) => { }}", false},
- {"function inner() { (...my_var) => my_var;}", false},
- {"function inner() { (...my_var) => { }}", false},
- {"function inner() { ([a, my_var, b]) => my_var;}", false},
- {"function inner() { ([a, my_var, b]) => { }}", false},
- {"function inner() { ([a, my_var, b] = [1, 2, 3]) => my_var;}", false},
- {"function inner() { ([a, my_var, b] = [1, 2, 3]) => { }}", false},
- {"function inner() { ({x: my_var}) => my_var;}", false},
- {"function inner() { ({x: my_var}) => { }}", false},
- {"function inner() { ({x: my_var} = {x: 0}) => my_var;}", false},
- {"function inner() { ({x: my_var} = {x: 0}) => { }}", false},
- {"function inner() { ({my_var}) => my_var;}", false},
- {"function inner() { ({my_var}) => { }}", false},
- {"function inner() { ({my_var} = {my_var: 5}) => my_var;}", false},
- {"function inner() { ({my_var} = {my_var: 5}) => { }}", false},
- {"function inner() { ({a, my_var}) => my_var;}", false},
- {"function inner() { ({a, my_var}) => { }}", false},
- {"function inner() { ({a, my_var} = {a: 0, my_var: 5}) => my_var;}",
- false},
- {"function inner() { ({a, my_var} = {a: 0, my_var: 5}) => { }}", false},
- {"function inner() { ({y, x: my_var}) => my_var;}", false},
- {"function inner() { ({y, x: my_var}) => { }}", false},
- {"function inner() { ({y, x: my_var} = {y: 0, x: 0}) => my_var;}", false},
- {"function inner() { ({y, x: my_var} = {y: 0, x: 0}) => { }}", false},
- {"function inner() { try { } catch (my_var) { my_var; } }", false},
- {"function inner() { try { } catch ([a, my_var, b]) { my_var; } }",
- false},
- {"function inner() { try { } catch ({x: my_var}) { my_var; } }", false},
- {"function inner() { try { } catch ({y, x: my_var}) { my_var; } }",
- false},
- {"function inner() { try { } catch ({my_var}) { my_var; } }", false},
- {"function inner() { for (let my_var in {}) { my_var; } }", false},
- {"function inner() { for (let my_var in {}) { } }", false},
- {"function inner() { for (let my_var of []) { my_var; } }", false},
- {"function inner() { for (let my_var of []) { } }", false},
- {"function inner() { for (let [a, my_var, b] in {}) { my_var; } }",
- false},
- {"function inner() { for (let [a, my_var, b] of []) { my_var; } }",
- false},
- {"function inner() { for (let {x: my_var} in {}) { my_var; } }", false},
- {"function inner() { for (let {x: my_var} of []) { my_var; } }", false},
- {"function inner() { for (let {my_var} in {}) { my_var; } }", false},
- {"function inner() { for (let {my_var} of []) { my_var; } }", false},
- {"function inner() { for (let {y, x: my_var} in {}) { my_var; } }",
- false},
- {"function inner() { for (let {y, x: my_var} of []) { my_var; } }",
- false},
- {"function inner() { for (let {a, my_var} in {}) { my_var; } }", false},
- {"function inner() { for (let {a, my_var} of []) { my_var; } }", false},
- {"function inner() { for (var my_var in {}) { my_var; } }", false},
- {"function inner() { for (var my_var in {}) { } }", false},
- {"function inner() { for (var my_var of []) { my_var; } }", false},
- {"function inner() { for (var my_var of []) { } }", false},
- {"function inner() { for (var [a, my_var, b] in {}) { my_var; } }",
- false},
- {"function inner() { for (var [a, my_var, b] of []) { my_var; } }",
- false},
- {"function inner() { for (var {x: my_var} in {}) { my_var; } }", false},
- {"function inner() { for (var {x: my_var} of []) { my_var; } }", false},
- {"function inner() { for (var {my_var} in {}) { my_var; } }", false},
- {"function inner() { for (var {my_var} of []) { my_var; } }", false},
- {"function inner() { for (var {y, x: my_var} in {}) { my_var; } }",
- false},
- {"function inner() { for (var {y, x: my_var} of []) { my_var; } }",
- false},
- {"function inner() { for (var {a, my_var} in {}) { my_var; } }", false},
- {"function inner() { for (var {a, my_var} of []) { my_var; } }", false},
- {"function inner() { for (var my_var in {}) { } my_var; }", false},
- {"function inner() { for (var my_var of []) { } my_var; }", false},
- {"function inner() { for (var [a, my_var, b] in {}) { } my_var; }",
- false},
- {"function inner() { for (var [a, my_var, b] of []) { } my_var; }",
- false},
- {"function inner() { for (var {x: my_var} in {}) { } my_var; }", false},
- {"function inner() { for (var {x: my_var} of []) { } my_var; }", false},
- {"function inner() { for (var {my_var} in {}) { } my_var; }", false},
- {"function inner() { for (var {my_var} of []) { } my_var; }", false},
- {"function inner() { for (var {y, x: my_var} in {}) { } my_var; }",
- false},
- {"function inner() { for (var {y, x: my_var} of []) { } my_var; }",
+ {"", "var my_var; my_var;", false},
+ {"", "var my_var;", false},
+ {"", "var my_var = 0;", false},
+ {"", "if (true) { var my_var; } my_var;", false},
+ {"", "let my_var; my_var;", false},
+ {"", "let my_var;", false},
+ {"", "let my_var = 0;", false},
+ {"", "const my_var = 0; my_var;", false},
+ {"", "const my_var = 0;", false},
+ {"", "var [a, my_var] = [1, 2]; my_var;", false},
+ {"", "let [a, my_var] = [1, 2]; my_var;", false},
+ {"", "const [a, my_var] = [1, 2]; my_var;", false},
+ {"", "var {a: my_var} = {a: 3}; my_var;", false},
+ {"", "let {a: my_var} = {a: 3}; my_var;", false},
+ {"", "const {a: my_var} = {a: 3}; my_var;", false},
+ {"", "var {my_var} = {my_var: 3}; my_var;", false},
+ {"", "let {my_var} = {my_var: 3}; my_var;", false},
+ {"", "const {my_var} = {my_var: 3}; my_var;", false},
+ {"my_var", "my_var;", false},
+ {"my_var", "", false},
+ {"my_var = 5", "my_var;", false},
+ {"my_var = 5", "", false},
+ {"...my_var", "my_var;", false},
+ {"...my_var", "", false},
+ {"[a, my_var, b]", "my_var;", false},
+ {"[a, my_var, b]", "", false},
+ {"[a, my_var, b] = [1, 2, 3]", "my_var;", false},
+ {"[a, my_var, b] = [1, 2, 3]", "", false},
+ {"{x: my_var}", "my_var;", false},
+ {"{x: my_var}", "", false},
+ {"{x: my_var} = {x: 0}", "my_var;", false},
+ {"{x: my_var} = {x: 0}", "", false},
+ {"{my_var}", "my_var;", false},
+ {"{my_var}", "", false},
+ {"{my_var} = {my_var: 0}", "my_var;", false},
+ {"{my_var} = {my_var: 0}", "", false},
+ {"", "function inner2(my_var) { my_var; }", false},
+ {"", "function inner2(my_var) { }", false},
+ {"", "function inner2(my_var = 5) { my_var; }", false},
+ {"", "function inner2(my_var = 5) { }", false},
+ {"", "function inner2(...my_var) { my_var; }", false},
+ {"", "function inner2(...my_var) { }", false},
+ {"", "function inner2([a, my_var, b]) { my_var; }", false},
+ {"", "function inner2([a, my_var, b]) { }", false},
+ {"", "function inner2([a, my_var, b] = [1, 2, 3]) { my_var; }", false},
+ {"", "function inner2([a, my_var, b] = [1, 2, 3]) { }", false},
+ {"", "function inner2({x: my_var}) { my_var; }", false},
+ {"", "function inner2({x: my_var}) { }", false},
+ {"", "function inner2({x: my_var} = {x: 0}) { my_var; }", false},
+ {"", "function inner2({x: my_var} = {x: 0}) { }", false},
+ {"", "function inner2({my_var}) { my_var; }", false},
+ {"", "function inner2({my_var}) { }", false},
+ {"", "function inner2({my_var} = {my_var: 8}) { my_var; } ", false},
+ {"", "function inner2({my_var} = {my_var: 8}) { }", false},
+ {"", "my_var => my_var;", false},
+ {"", "my_var => { }", false},
+ {"", "(my_var = 5) => my_var;", false},
+ {"", "(my_var = 5) => { }", false},
+ {"", "(...my_var) => my_var;", false},
+ {"", "(...my_var) => { }", false},
+ {"", "([a, my_var, b]) => my_var;", false},
+ {"", "([a, my_var, b]) => { }", false},
+ {"", "([a, my_var, b] = [1, 2, 3]) => my_var;", false},
+ {"", "([a, my_var, b] = [1, 2, 3]) => { }", false},
+ {"", "({x: my_var}) => my_var;", false},
+ {"", "({x: my_var}) => { }", false},
+ {"", "({x: my_var} = {x: 0}) => my_var;", false},
+ {"", "({x: my_var} = {x: 0}) => { }", false},
+ {"", "({my_var}) => my_var;", false},
+ {"", "({my_var}) => { }", false},
+ {"", "({my_var} = {my_var: 5}) => my_var;", false},
+ {"", "({my_var} = {my_var: 5}) => { }", false},
+ {"", "({a, my_var}) => my_var;", false},
+ {"", "({a, my_var}) => { }", false},
+ {"", "({a, my_var} = {a: 0, my_var: 5}) => my_var;", false},
+ {"", "({a, my_var} = {a: 0, my_var: 5}) => { }", false},
+ {"", "({y, x: my_var}) => my_var;", false},
+ {"", "({y, x: my_var}) => { }", false},
+ {"", "({y, x: my_var} = {y: 0, x: 0}) => my_var;", false},
+ {"", "({y, x: my_var} = {y: 0, x: 0}) => { }", false},
+ {"", "try { } catch (my_var) { my_var; }", false},
+ {"", "try { } catch ([a, my_var, b]) { my_var; }", false},
+ {"", "try { } catch ({x: my_var}) { my_var; }", false},
+ {"", "try { } catch ({y, x: my_var}) { my_var; }", false},
+ {"", "try { } catch ({my_var}) { my_var; }", false},
+ {"", "for (let my_var in {}) { my_var; }", false},
+ {"", "for (let my_var in {}) { }", false},
+ {"", "for (let my_var of []) { my_var; }", false},
+ {"", "for (let my_var of []) { }", false},
+ {"", "for (let [a, my_var, b] in {}) { my_var; }", false},
+ {"", "for (let [a, my_var, b] of []) { my_var; }", false},
+ {"", "for (let {x: my_var} in {}) { my_var; }", false},
+ {"", "for (let {x: my_var} of []) { my_var; }", false},
+ {"", "for (let {my_var} in {}) { my_var; }", false},
+ {"", "for (let {my_var} of []) { my_var; }", false},
+ {"", "for (let {y, x: my_var} in {}) { my_var; }", false},
+ {"", "for (let {y, x: my_var} of []) { my_var; }", false},
+ {"", "for (let {a, my_var} in {}) { my_var; }", false},
+ {"", "for (let {a, my_var} of []) { my_var; }", false},
+ {"", "for (var my_var in {}) { my_var; }", false},
+ {"", "for (var my_var in {}) { }", false},
+ {"", "for (var my_var of []) { my_var; }", false},
+ {"", "for (var my_var of []) { }", false},
+ {"", "for (var [a, my_var, b] in {}) { my_var; }", false},
+ {"", "for (var [a, my_var, b] of []) { my_var; }", false},
+ {"", "for (var {x: my_var} in {}) { my_var; }", false},
+ {"", "for (var {x: my_var} of []) { my_var; }", false},
+ {"", "for (var {my_var} in {}) { my_var; }", false},
+ {"", "for (var {my_var} of []) { my_var; }", false},
+ {"", "for (var {y, x: my_var} in {}) { my_var; }", false},
+ {"", "for (var {y, x: my_var} of []) { my_var; }", false},
+ {"", "for (var {a, my_var} in {}) { my_var; }", false},
+ {"", "for (var {a, my_var} of []) { my_var; }", false},
+ {"", "for (var my_var in {}) { } my_var;", false},
+ {"", "for (var my_var of []) { } my_var;", false},
+ {"", "for (var [a, my_var, b] in {}) { } my_var;", false},
+ {"", "for (var [a, my_var, b] of []) { } my_var;", false},
+ {"", "for (var {x: my_var} in {}) { } my_var;", false},
+ {"", "for (var {x: my_var} of []) { } my_var;", false},
+ {"", "for (var {my_var} in {}) { } my_var;", false},
+ {"", "for (var {my_var} of []) { } my_var;", false},
+ {"", "for (var {y, x: my_var} in {}) { } my_var;", false},
+ {"", "for (var {y, x: my_var} of []) { } my_var;", false},
+ {"", "for (var {a, my_var} in {}) { } my_var;", false},
+ {"", "for (var {a, my_var} of []) { } my_var;", false},
+ {"", "for (let my_var = 0; my_var < 1; ++my_var) { my_var; }", false},
+ {"", "for (var my_var = 0; my_var < 1; ++my_var) { my_var; }", false},
+ {"", "for (var my_var = 0; my_var < 1; ++my_var) { } my_var; ", false},
+ {"", "for (let a = 0, my_var = 0; my_var < 1; ++my_var) { my_var }",
false},
- {"function inner() { for (var {a, my_var} in {}) { } my_var; }", false},
- {"function inner() { for (var {a, my_var} of []) { } my_var; }", false},
- {"function inner() { for (let my_var = 0; my_var < 1; ++my_var) { my_var "
- "} }",
+ {"", "for (var a = 0, my_var = 0; my_var < 1; ++my_var) { my_var }",
false},
- {"function inner() { for (var my_var = 0; my_var < 1; ++my_var) { my_var "
- "} }",
+ {"", "class my_var {}; my_var; ", false},
+ {"", "function my_var() {} my_var;", false},
+ {"", "if (true) { function my_var() {} } my_var;", false},
+ {"", "function inner2() { if (true) { function my_var() {} } my_var; }",
false},
- {"function inner() { for (var my_var = 0; my_var < 1; ++my_var) { } "
- "my_var }",
- false},
- {"function inner() { for (let a = 0, my_var = 0; my_var < 1; ++my_var) { "
- "my_var } }",
- false},
- {"function inner() { for (var a = 0, my_var = 0; my_var < 1; ++my_var) { "
- "my_var } }",
- false},
- {"function inner() { class my_var {}; my_var }", false},
- {"function inner() { function my_var() {} my_var; }", false},
- {"function inner() { if (true) { function my_var() {} } my_var; }",
- false},
- {"function inner() { function inner2() { if (true) { function my_var() "
- "{} } my_var; } }",
- false},
- {"function inner() { () => { if (true) { function my_var() {} } my_var; "
- "} }",
- false},
- {"function inner() { if (true) { var my_var; if (true) { function "
- "my_var() {} } } my_var; }",
+ {"", "() => { if (true) { function my_var() {} } my_var; }", false},
+ {"",
+ "if (true) { var my_var; if (true) { function my_var() {} } } my_var;",
false},
};
- for (unsigned i = 0; i < arraysize(inners); ++i) {
- const char* inner = inners[i].source;
- int inner_len = Utf8LengthHelper(inner);
- int len = prefix_len + inner_len + suffix_len;
- i::ScopedVector<char> program(len + 1);
- i::SNPrintF(program, "%s%s%s", prefix, inner, suffix);
- i::Handle<i::String> source =
- factory->InternalizeUtf8String(program.start());
- source->PrintOn(stdout);
- printf("\n");
+ for (unsigned inner_ix = 0; inner_ix < arraysize(inner_functions);
+ ++inner_ix) {
+ const char* inner_function = inner_functions[inner_ix];
+ int inner_function_len = Utf8LengthHelper(inner_function) - 4;
- i::Handle<i::Script> script = factory->NewScript(source);
- i::Zone zone(isolate->allocator(), ZONE_NAME);
- i::ParseInfo info(&zone, script);
+ for (unsigned i = 0; i < arraysize(inners); ++i) {
+ int params_len = Utf8LengthHelper(inners[i].params);
+ int source_len = Utf8LengthHelper(inners[i].source);
+ int len = prefix_len + inner_function_len + params_len + source_len +
+ suffix_len;
+
+ i::ScopedVector<char> program(len + 1);
+ i::SNPrintF(program, "%s", prefix);
+ i::SNPrintF(program + prefix_len, inner_function, inners[i].params,
+ inners[i].source);
+ i::SNPrintF(
+ program + prefix_len + inner_function_len + params_len + source_len,
+ "%s", suffix);
+
+ i::Handle<i::String> source =
+ factory->InternalizeUtf8String(program.start());
+ source->PrintOn(stdout);
+ printf("\n");
- CHECK(i::parsing::ParseProgram(&info));
- CHECK(i::Compiler::Analyze(&info));
- CHECK(info.literal() != NULL);
-
- i::Scope* scope = info.literal()->scope()->inner_scope();
- DCHECK_NOT_NULL(scope);
- DCHECK_NULL(scope->sibling());
- DCHECK(scope->is_function_scope());
- const i::AstRawString* var_name =
- info.ast_value_factory()->GetOneByteString("my_var");
- i::Variable* var = scope->Lookup(var_name);
- CHECK_EQ(inners[i].ctxt_allocate,
- i::ScopeTestHelper::MustAllocateInContext(var));
+ i::Handle<i::Script> script = factory->NewScript(source);
+ i::Zone zone(isolate->allocator(), ZONE_NAME);
+ i::ParseInfo info(&zone, script);
+
+ CHECK(i::parsing::ParseProgram(&info));
+ CHECK(i::Compiler::Analyze(&info));
+ CHECK(info.literal() != NULL);
+
+ i::Scope* scope = info.literal()->scope()->inner_scope();
+ DCHECK_NOT_NULL(scope);
+ DCHECK_NULL(scope->sibling());
+ DCHECK(scope->is_function_scope());
+ const i::AstRawString* var_name =
+ info.ast_value_factory()->GetOneByteString("my_var");
+ i::Variable* var = scope->Lookup(var_name);
+ CHECK_EQ(inners[i].ctxt_allocate,
+ i::ScopeTestHelper::MustAllocateInContext(var));
+ }
}
}
« 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