Index: test/cctest/test-parsing.cc |
diff --git a/test/cctest/test-parsing.cc b/test/cctest/test-parsing.cc |
index f862225db2e4afe9a1bbef40f23457f3215c1c5f..71cf9dd16eb75019993d6461447ddbbdfbef7732 100644 |
--- a/test/cctest/test-parsing.cc |
+++ b/test/cctest/test-parsing.cc |
@@ -3273,6 +3273,7 @@ TEST(InnerAssignment) { |
{"var x = 5; function x() {}", true, false}, |
{"var x = 4; var x = 5;", true, false}, |
{"var [x, x] = [4, 5];", true, false}, |
+ {"var x; [x, x] = [4, 5];", true, false}, |
{"var {a: x, b: x} = {a: 4, b: 5};", true, false}, |
{"var x = {a: 4, b: (x = 5)};", true, false}, |
{"var {x=1} = {a: 4, b: (x = 5)};", true, false}, |
@@ -3301,53 +3302,63 @@ TEST(InnerAssignment) { |
{"function x() {}; var x;", true, false}, |
{"var x; try {} catch (x) { var x = 5; }", true, false}, |
}; |
- struct { const char* source; bool assigned; bool with; } inners[] = { |
- // Actual assignments. |
- { "x = 1;", true, false }, |
- { "x++;", true, false }, |
- { "++x;", true, false }, |
- { "x--;", true, false }, |
- { "--x;", true, false }, |
- { "{ x = 1; }", true, false }, |
- { "'use strict'; { let x; }; x = 0;", true, false }, |
- { "'use strict'; { const x = 1; }; x = 0;", true, false }, |
- { "'use strict'; { function x() {} }; x = 0;", true, false }, |
- { "with ({}) { x = 1; }", true, true }, |
- { "eval('');", true, false }, |
- { "'use strict'; { let y; eval('') }", true, false }, |
- { "function h() { x = 0; }", true, false }, |
- { "(function() { x = 0; })", true, false }, |
- { "(function() { x = 0; })", true, false }, |
- { "with ({}) (function() { x = 0; })", true, true }, |
- // Actual non-assignments. |
- { "", false, false }, |
- { "x;", false, false }, |
- { "var x;", false, false }, |
- { "var x = 8;", false, false }, |
- { "var x; x = 8;", false, false }, |
- { "'use strict'; let x;", false, false }, |
- { "'use strict'; let x = 8;", false, false }, |
- { "'use strict'; let x; x = 8;", false, false }, |
- { "'use strict'; const x = 8;", false, false }, |
- { "function x() {}", false, false }, |
- { "function x() { x = 0; }", false, false }, |
- { "function h(x) { x = 0; }", false, false }, |
- { "'use strict'; { let x; x = 0; }", false, false }, |
- { "{ var x; }; x = 0;", false, false }, |
- { "with ({}) {}", false, true }, |
- { "var x; { with ({}) { x = 1; } }", false, true }, |
- { "try {} catch(x) { x = 0; }", false, false }, |
- { "try {} catch(x) { with ({}) { x = 1; } }", false, true }, |
- // Eval approximation. |
- { "eval('');", true, false }, |
- { "function h() { eval(''); }", true, false }, |
- { "(function() { eval(''); })", true, false }, |
- // Shadowing not recognized because of eval approximation. |
- { "var x; eval('');", true, false }, |
- { "'use strict'; let x; eval('');", true, false }, |
- { "try {} catch(x) { eval(''); }", true, false }, |
- { "function x() { eval(''); }", true, false }, |
- { "(function(x) { eval(''); })", true, false }, |
+ struct { |
+ const char* source; |
+ bool assigned; |
+ bool with; |
+ } inners[] = { |
+ // Actual assignments. |
+ {"x = 1;", true, false}, |
+ {"x++;", true, false}, |
+ {"++x;", true, false}, |
+ {"x--;", true, false}, |
+ {"--x;", true, false}, |
+ {"{ x = 1; }", true, false}, |
+ {"'use strict'; { let x; }; x = 0;", true, false}, |
+ {"'use strict'; { const x = 1; }; x = 0;", true, false}, |
+ {"'use strict'; { function x() {} }; x = 0;", true, false}, |
+ {"with ({}) { x = 1; }", true, true}, |
+ {"eval('');", true, false}, |
+ {"'use strict'; { let y; eval('') }", true, false}, |
+ {"function h() { x = 0; }", true, false}, |
+ {"(function() { x = 0; })", true, false}, |
+ {"(function() { x = 0; })", true, false}, |
+ {"with ({}) (function() { x = 0; })", true, true}, |
+ {"for (x of [1,2,3]) {}", true, false}, |
+ {"for (x in {a: 1}) {}", true, false}, |
+ {"for ([x] of [[1],[2],[3]]) {}", true, false}, |
+ {"for ([x] in {ab: 1}) {}", true, false}, |
+ {"for ([...x] in {ab: 1}) {}", true, false}, |
+ {"[x] = [1]", true, false}, |
+ // Actual non-assignments. |
+ {"", false, false}, |
+ {"x;", false, false}, |
+ {"var x;", false, false}, |
+ {"var x = 8;", false, false}, |
+ {"var x; x = 8;", false, false}, |
+ {"'use strict'; let x;", false, false}, |
+ {"'use strict'; let x = 8;", false, false}, |
+ {"'use strict'; let x; x = 8;", false, false}, |
+ {"'use strict'; const x = 8;", false, false}, |
+ {"function x() {}", false, false}, |
+ {"function x() { x = 0; }", false, false}, |
+ {"function h(x) { x = 0; }", false, false}, |
+ {"'use strict'; { let x; x = 0; }", false, false}, |
+ {"{ var x; }; x = 0;", false, false}, |
+ {"with ({}) {}", false, true}, |
+ {"var x; { with ({}) { x = 1; } }", false, true}, |
+ {"try {} catch(x) { x = 0; }", false, false}, |
+ {"try {} catch(x) { with ({}) { x = 1; } }", false, true}, |
+ // Eval approximation. |
+ {"eval('');", true, false}, |
+ {"function h() { eval(''); }", true, false}, |
+ {"(function() { eval(''); })", true, false}, |
+ // Shadowing not recognized because of eval approximation. |
+ {"var x; eval('');", true, false}, |
+ {"'use strict'; let x; eval('');", true, false}, |
+ {"try {} catch(x) { eval(''); }", true, false}, |
+ {"function x() { eval(''); }", true, false}, |
+ {"(function(x) { eval(''); })", true, false}, |
}; |
int prefix_len = Utf8LengthHelper(prefix); |
@@ -3410,7 +3421,7 @@ TEST(InnerAssignment) { |
// maybe_assigned. |
CHECK(is_maybe_assigned || (is_maybe_assigned == expected)); |
} else { |
- CHECK(is_maybe_assigned == expected); |
+ CHECK_EQ(is_maybe_assigned, expected); |
} |
} |
} |