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() { | |
adamk
2015/09/29 18:28:29
Can you add tests with multiple parameters that ge
rossberg
2015/09/30 14:50:48
Done.
| |
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}, g = () => 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}) { function x() { return 2 }; return x(); } | |
984 assertEquals(2, f10({x: 1})); | |
985 function f11({x}) { { function x() { return 2 } } return x(); } | |
986 assertEquals(2, f11({x: 1})); | |
987 | |
988 var g1 = ({x}) => { var x = 2; return x }; | |
989 assertEquals(2, g1({x: 1})); | |
990 var g2 = ({x}) => { { var x = 2; } return x; }; | |
991 assertEquals(2, g2({x: 1})); | |
992 var g3 = ({x}) => { var y = x; var x = 2; return y; }; | |
993 assertEquals(1, g3({x: 1})); | |
994 var g4 = ({x}, g = () => x) => { { var y = x; var x = 2; } return y; }; | |
995 assertEquals(1, g4({x: 1})); | |
996 var g5 = ({x}, g = () => x) => { var x = 2; return g(); }; | |
997 assertEquals(1, g5({x: 1})); | |
998 var g6 = ({x}, g = () => x) => { { var x = 2; } return g(); }; | |
999 assertEquals(1, g6({x: 1})); | |
1000 var g7 = ({x}) => { var g = () => x; var x = 2; return g(); }; | |
1001 assertEquals(2, g7({x: 1})); | |
1002 var g8 = ({x}) => { { var g = () => x; var x = 2; } return g(); }; | |
1003 assertEquals(2, g8({x: 1})); | |
1004 var g9 = ({x}, g = () => eval("x")) => { var x = 2; return g(); }; | |
1005 assertEquals(1, g9({x: 1})); | |
1006 | |
1007 var g10 = ({x}) => { function x() { return 2 }; return x(); } | |
1008 assertEquals(2, g10({x: 1})); | |
1009 var g11 = ({x}) => { { function x() { return 2 } } return x(); } | |
1010 assertEquals(2, g11({x: 1})); | |
1011 | |
1012 assertThrows("'use strict'; function f(x) { let x = 0; }; f({});", SyntaxError ); | |
1013 assertThrows("'use strict'; function f({x}) { let x = 0; }; f({});", SyntaxErr or); | |
1014 assertThrows("'use strict'; function f(x) { const x = 0; }; f({});", SyntaxErr or); | |
1015 assertThrows("'use strict'; function f({x}) { const x = 0; }; f({});", SyntaxE rror); | |
1016 | |
1017 assertThrows("'use strict'; let g = (x) => { let x = 0; }; f({});", SyntaxErro r); | |
1018 assertThrows("'use strict'; let g = ({x}) => { let x = 0; }; f({});", SyntaxEr ror); | |
1019 assertThrows("'use strict'; let g = (x) => { const x = 0; }; f({});", SyntaxEr ror); | |
1020 assertThrows("'use strict'; let g = ({x}) => { const x = 0; }; f({});", Syntax Error); | |
1021 }()); | |
1022 | |
1023 | |
968 (function TestArgumentsForNonSimpleParameters() { | 1024 (function TestArgumentsForNonSimpleParameters() { |
969 function f1({}, x) { arguments[1] = 0; return x } | 1025 function f1({}, x) { arguments[1] = 0; return x } |
970 assertEquals(6, f1({}, 6)); | 1026 assertEquals(6, f1({}, 6)); |
971 function f2({}, x) { x = 2; return arguments[1] } | 1027 function f2({}, x) { x = 2; return arguments[1] } |
972 assertEquals(7, f2({}, 7)); | 1028 assertEquals(7, f2({}, 7)); |
973 function f3(x, {}) { arguments[0] = 0; return x } | 1029 function f3(x, {}) { arguments[0] = 0; return x } |
974 assertEquals(6, f3(6, {})); | 1030 assertEquals(6, f3(6, {})); |
975 function f4(x, {}) { x = 2; return arguments[0] } | 1031 function f4(x, {}) { x = 2; return arguments[0] } |
976 assertEquals(7, f4(7, {})); | 1032 assertEquals(7, f4(7, {})); |
977 function f5(x, ...a) { arguments[0] = 0; return x } | 1033 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); | 1072 assertThrows(function(){ eval("({}) => {'use strict';}") }, SyntaxError); |
1017 assertThrows( | 1073 assertThrows( |
1018 function(){ eval("(class{foo({}) {'use strict';}});") }, SyntaxError); | 1074 function(){ eval("(class{foo({}) {'use strict';}});") }, SyntaxError); |
1019 | 1075 |
1020 assertThrows( | 1076 assertThrows( |
1021 function(){ eval("function(a, {}){'use strict';}") }, SyntaxError); | 1077 function(){ eval("function(a, {}){'use strict';}") }, SyntaxError); |
1022 assertThrows(function(){ eval("(a, {}) => {'use strict';}") }, SyntaxError); | 1078 assertThrows(function(){ eval("(a, {}) => {'use strict';}") }, SyntaxError); |
1023 assertThrows( | 1079 assertThrows( |
1024 function(){ eval("(class{foo(a, {}) {'use strict';}});") }, SyntaxError); | 1080 function(){ eval("(class{foo(a, {}) {'use strict';}});") }, SyntaxError); |
1025 })(); | 1081 })(); |
OLD | NEW |