Chromium Code Reviews| 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 |