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

Unified Diff: test/mjsunit/harmony/destructuring.js

Issue 1240463002: [es6] Implement inner scope for functions with destructuring (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Add tests for function name Created 5 years, 5 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 | « test/mjsunit/big-array-literal.js ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/mjsunit/harmony/destructuring.js
diff --git a/test/mjsunit/harmony/destructuring.js b/test/mjsunit/harmony/destructuring.js
index 198d4c025702c6de674bc66edfb8b5b8e82c848c..fa4be3fdb16ffa3dc41e709fa3922637f0e49f9c 100644
--- a/test/mjsunit/harmony/destructuring.js
+++ b/test/mjsunit/harmony/destructuring.js
@@ -716,6 +716,52 @@
}());
+(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 f6 = function f({x = f}) { var f; return x; }
+ assertSame(f6, f6({}));
+ var f7 = function f({x = f}) { function f() {}; return x; }
+ assertSame(f7, f7({}));
+ var f8 = function f({x = f}) { 'use strict'; let f; return x; }
+ assertSame(f8, f8({}));
+ var f9 = function f({x = f}) { 'use strict'; const f = 0; return x; }
+ assertSame(f9, f9({}));
+ var f10 = function f({x = f}) { 'use strict'; function f() {}; return x; }
+ assertSame(f10, f10({}));
+ var f11 = function f({f = 7, x = f}) { return x; }
+ assertSame(7, f11({}));
+
+ var y = 'a';
+ function f20({[y]: x}) { var y = 'b'; return x; }
+ assertEquals(1, f20({a: 1, b: 2}));
+ var g20 = ({[y]: x}) => { var y = 'b'; return x; };
+ assertEquals(1, g20({a: 1, b: 2}));
+})();
+
+
(function TestDuplicatesInParameters() {
assertThrows("'use strict';function f(x,x){}", SyntaxError);
assertThrows("'use strict';function f({x,x}){}", SyntaxError);
@@ -725,8 +771,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.
+ // assertThrows("function f({x}) { var x; }; f({});", SyntaxError);
+ // assertThrows("'use strict'; function f({x}) { let x = 0; }; f({});", SyntaxError);
}());
« no previous file with comments | « test/mjsunit/big-array-literal.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698