Chromium Code Reviews| Index: test/mjsunit/harmony/destructuring.js |
| diff --git a/test/mjsunit/harmony/destructuring.js b/test/mjsunit/harmony/destructuring.js |
| index 198d4c025702c6de674bc66edfb8b5b8e82c848c..2f5905595525041f43e97037665d439374aa6cf9 100644 |
| --- a/test/mjsunit/harmony/destructuring.js |
| +++ b/test/mjsunit/harmony/destructuring.js |
| @@ -716,6 +716,39 @@ |
| }()); |
| +(function TestParameterScoping() { |
| + var x = 1; |
| + |
| + function f1({a = x}) { var x = 2; return a; } |
| + assertEquals(1, f1({})); |
| + function f2({a = x}) { function x() {}; return a; } |
| + assertEquals(1, f2({})); |
| + function f3({a = x}) { 'use strict'; let x = 2; return a; } |
| + assertEquals(1, f3({})); |
| + function f4({a = x}) { 'use strict'; const x = 2; return a; } |
| + assertEquals(1, f4({})); |
| + function f5({a = x}) { 'use strict'; function x() {}; return a; } |
| + assertEquals(1, f5({})); |
| + |
| + var g1 = ({a = x}) => { var x = 2; return a; }; |
| + assertEquals(1, g1({})); |
| + var g2 = ({a = x}) => { function x() {}; return a; }; |
| + assertEquals(1, g2({})); |
| + var g3 = ({a = x}) => { 'use strict'; let x = 2; return a; }; |
| + assertEquals(1, g3({})); |
| + var g4 = ({a = x}) => { 'use strict'; const x = 2; return a; }; |
| + assertEquals(1, g4({})); |
| + var g5 = ({a = x}) => { 'use strict'; function x() {}; return a; }; |
| + assertEquals(1, g5({})); |
| + |
| + var y = 'a'; |
| + function f6({[y]: x}) { var y = 'b'; return x; } |
| + assertEquals(1, f6({a: 1, b: 2})); |
| + var g6 = ({[y]: x}) => { var y = 'b'; return x; }; |
| + assertEquals(1, g6({a: 1, b: 2})); |
| +})(); |
| + |
| + |
| (function TestDuplicatesInParameters() { |
| assertThrows("'use strict';function f(x,x){}", SyntaxError); |
| assertThrows("'use strict';function f({x,x}){}", SyntaxError); |
| @@ -725,8 +758,9 @@ |
| assertThrows("'use strict';var f = (x, {x}) => {};", SyntaxError); |
| function ok(x) { var x; }; ok(); |
| - assertThrows("function f({x}) { var x; }; f({});", SyntaxError); |
| - assertThrows("'use strict'; function f({x}) { let x = 0; }; f({});", SyntaxError); |
| + // TODO(rossberg): Check for variable collision. |
|
adamk
2015/07/13 19:27:31
Do you mean to take care of this in this patch or
rossberg
2015/07/14 06:24:51
I leave that for a future CL. Leaving out this che
|
| + // assertThrows("function f({x}) { var x; }; f({});", SyntaxError); |
| + // assertThrows("'use strict'; function f({x}) { let x = 0; }; f({});", SyntaxError); |
| }()); |