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

Side by Side Diff: test/mjsunit/harmony/destructuring.js

Issue 1371333004: [es6] Scoping & initialization for var shadowing non-simple parameters (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Comments Created 5 years, 2 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 | « src/scopes.cc ('k') | 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 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 // 4 //
5 // Flags: --harmony-destructuring --harmony-arrow-functions 5 // Flags: --harmony-destructuring --harmony-arrow-functions
6 // Flags: --harmony-default-parameters --harmony-rest-parameters 6 // Flags: --harmony-default-parameters --harmony-rest-parameters
7 7
8 (function TestObjectLiteralPattern() { 8 (function TestObjectLiteralPattern() {
9 var { x : x, y : y, get, set } = { x : 1, y : 2, get: 3, set: 4 }; 9 var { x : x, y : y, get, set } = { x : 1, y : 2, get: 3, set: 4 };
10 assertEquals(1, x); 10 assertEquals(1, x);
(...skipping 939 matching lines...) Expand 10 before | Expand all | Expand 10 after
950 assertThrows("'use strict';function f({x,x}){}", SyntaxError); 950 assertThrows("'use strict';function f({x,x}){}", SyntaxError);
951 assertThrows("'use strict';function f(x, {x}){}", SyntaxError); 951 assertThrows("'use strict';function f(x, {x}){}", SyntaxError);
952 assertThrows("'use strict';var f = (x,x) => {};", SyntaxError); 952 assertThrows("'use strict';var f = (x,x) => {};", SyntaxError);
953 assertThrows("'use strict';var f = ({x,x}) => {};", SyntaxError); 953 assertThrows("'use strict';var f = ({x,x}) => {};", SyntaxError);
954 assertThrows("'use strict';var f = (x, {x}) => {};", SyntaxError); 954 assertThrows("'use strict';var f = (x, {x}) => {};", SyntaxError);
955 955
956 function ok1(x) { var x; return x; }; 956 function ok1(x) { var x; return x; };
957 assertEquals(1, ok1(1)); 957 assertEquals(1, ok1(1));
958 function ok2(x) { 'use strict'; { let x = 2; return x; } }; 958 function ok2(x) { 'use strict'; { let x = 2; return x; } };
959 assertEquals(2, ok2(1)); 959 assertEquals(2, ok2(1));
960
961 assertThrows("function f({x}) { var x; }; f({});", SyntaxError);
962 assertThrows("function f({x}) { { var x; } }; f({});", SyntaxError);
963 assertThrows("'use strict'; function f(x) { let x = 0; }; f({});", SyntaxError );
964 assertThrows("'use strict'; function f({x}) { let x = 0; }; f({});", SyntaxErr or);
965 }()); 960 }());
966 961
967 962
963 (function TestShadowingOfParameters() {
964 function f1({x}) { var x = 2; return x }
965 assertEquals(2, f1({x: 1}));
966 function f2({x}) { { var x = 2; } return x; }
967 assertEquals(2, f2({x: 1}));
968 function f3({x}) { var y = x; var x = 2; return y; }
969 assertEquals(1, f3({x: 1}));
970 function f4({x}) { { var y = x; var x = 2; } return y; }
971 assertEquals(1, f4({x: 1}));
972 function f5({x}, g = () => x) { var x = 2; return g(); }
973 assertEquals(1, f5({x: 1}));
974 function f6({x}, g = () => x) { { var x = 2; } return g(); }
975 assertEquals(1, f6({x: 1}));
976 function f7({x}) { var g = () => x; var x = 2; return g(); }
977 assertEquals(2, f7({x: 1}));
978 function f8({x}) { { var g = () => x; var x = 2; } return g(); }
979 assertEquals(2, f8({x: 1}));
980 function f9({x}, g = () => eval("x")) { var x = 2; return g(); }
981 assertEquals(1, f9({x: 1}));
982
983 function f10({x}, y) { var y; return y }
984 assertEquals(2, f10({x: 6}, 2));
985 function f11({x}, y) { var z = y; var y = 2; return z; }
986 assertEquals(1, f11({x: 6}, 1));
987 function f12(y, g = () => y) { var y = 2; return g(); }
988 assertEquals(1, f12(1));
989 function f13({x}, y, [z], v) { var x, y, z; return x*y*z*v }
990 assertEquals(210, f13({x: 2}, 3, [5], 7));
991
992 function f20({x}) { function x() { return 2 }; return x(); }
993 assertEquals(2, f20({x: 1}));
994 function f21({x}) { { function x() { return 2 } } return x(); }
995 assertEquals(2, f21({x: 1}));
996
997 var g1 = ({x}) => { var x = 2; return x };
998 assertEquals(2, g1({x: 1}));
999 var g2 = ({x}) => { { var x = 2; } return x; };
1000 assertEquals(2, g2({x: 1}));
1001 var g3 = ({x}) => { var y = x; var x = 2; return y; };
1002 assertEquals(1, g3({x: 1}));
1003 var g4 = ({x}) => { { var y = x; var x = 2; } return y; };
1004 assertEquals(1, g4({x: 1}));
1005 var g5 = ({x}, g = () => x) => { var x = 2; return g(); };
1006 assertEquals(1, g5({x: 1}));
1007 var g6 = ({x}, g = () => x) => { { var x = 2; } return g(); };
1008 assertEquals(1, g6({x: 1}));
1009 var g7 = ({x}) => { var g = () => x; var x = 2; return g(); };
1010 assertEquals(2, g7({x: 1}));
1011 var g8 = ({x}) => { { var g = () => x; var x = 2; } return g(); };
1012 assertEquals(2, g8({x: 1}));
1013 var g9 = ({x}, g = () => eval("x")) => { var x = 2; return g(); };
1014 assertEquals(1, g9({x: 1}));
1015
1016 var g10 = ({x}, y) => { var y; return y };
1017 assertEquals(2, g10({x: 6}, 2));
1018 var g11 = ({x}, y) => { var z = y; var y = 2; return z; };
1019 assertEquals(1, g11({x: 6}, 1));
1020 var g12 = (y, g = () => y) => { var y = 2; return g(); };
1021 assertEquals(1, g12(1));
1022 var g13 = ({x}, y, [z], v) => { var x, y, z; return x*y*z*v };
1023 assertEquals(210, g13({x: 2}, 3, [5], 7));
1024
1025 var g20 = ({x}) => { function x() { return 2 }; return x(); }
1026 assertEquals(2, g20({x: 1}));
1027 var g21 = ({x}) => { { function x() { return 2 } } return x(); }
1028 assertEquals(2, g21({x: 1}));
1029
1030 assertThrows("'use strict'; function f(x) { let x = 0; }; f({});", SyntaxError );
1031 assertThrows("'use strict'; function f({x}) { let x = 0; }; f({});", SyntaxErr or);
1032 assertThrows("'use strict'; function f(x) { const x = 0; }; f({});", SyntaxErr or);
1033 assertThrows("'use strict'; function f({x}) { const x = 0; }; f({});", SyntaxE rror);
1034
1035 assertThrows("'use strict'; let g = (x) => { let x = 0; }; f({});", SyntaxErro r);
1036 assertThrows("'use strict'; let g = ({x}) => { let x = 0; }; f({});", SyntaxEr ror);
1037 assertThrows("'use strict'; let g = (x) => { const x = 0; }; f({});", SyntaxEr ror);
1038 assertThrows("'use strict'; let g = ({x}) => { const x = 0; }; f({});", Syntax Error);
1039 }());
1040
1041
968 (function TestArgumentsForNonSimpleParameters() { 1042 (function TestArgumentsForNonSimpleParameters() {
969 function f1({}, x) { arguments[1] = 0; return x } 1043 function f1({}, x) { arguments[1] = 0; return x }
970 assertEquals(6, f1({}, 6)); 1044 assertEquals(6, f1({}, 6));
971 function f2({}, x) { x = 2; return arguments[1] } 1045 function f2({}, x) { x = 2; return arguments[1] }
972 assertEquals(7, f2({}, 7)); 1046 assertEquals(7, f2({}, 7));
973 function f3(x, {}) { arguments[0] = 0; return x } 1047 function f3(x, {}) { arguments[0] = 0; return x }
974 assertEquals(6, f3(6, {})); 1048 assertEquals(6, f3(6, {}));
975 function f4(x, {}) { x = 2; return arguments[0] } 1049 function f4(x, {}) { x = 2; return arguments[0] }
976 assertEquals(7, f4(7, {})); 1050 assertEquals(7, f4(7, {}));
977 function f5(x, ...a) { arguments[0] = 0; return x } 1051 function f5(x, ...a) { arguments[0] = 0; return x }
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1016 assertThrows(function(){ eval("({}) => {'use strict';}") }, SyntaxError); 1090 assertThrows(function(){ eval("({}) => {'use strict';}") }, SyntaxError);
1017 assertThrows( 1091 assertThrows(
1018 function(){ eval("(class{foo({}) {'use strict';}});") }, SyntaxError); 1092 function(){ eval("(class{foo({}) {'use strict';}});") }, SyntaxError);
1019 1093
1020 assertThrows( 1094 assertThrows(
1021 function(){ eval("function(a, {}){'use strict';}") }, SyntaxError); 1095 function(){ eval("function(a, {}){'use strict';}") }, SyntaxError);
1022 assertThrows(function(){ eval("(a, {}) => {'use strict';}") }, SyntaxError); 1096 assertThrows(function(){ eval("(a, {}) => {'use strict';}") }, SyntaxError);
1023 assertThrows( 1097 assertThrows(
1024 function(){ eval("(class{foo(a, {}) {'use strict';}});") }, SyntaxError); 1098 function(){ eval("(class{foo(a, {}) {'use strict';}});") }, SyntaxError);
1025 })(); 1099 })();
OLDNEW
« no previous file with comments | « src/scopes.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698