OLD | NEW |
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 Loading... |
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 Loading... |
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 })(); |
OLD | NEW |