| 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-computed-property-names | 5 // Flags: --harmony-destructuring --harmony-computed-property-names |
| 6 // Flags: --harmony-arrow-functions --harmony-rest-parameters | 6 // Flags: --harmony-arrow-functions --harmony-rest-parameters |
| 7 | 7 |
| 8 (function TestObjectLiteralPattern() { | 8 (function TestObjectLiteralPattern() { |
| 9 var { x : x, y : y } = { x : 1, y : 2 }; | 9 var { x : x, y : y } = { x : 1, y : 2 }; |
| 10 assertEquals(1, x); | 10 assertEquals(1, x); |
| (...skipping 788 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 799 | 799 |
| 800 var y = 'a'; | 800 var y = 'a'; |
| 801 function f20({[y]: x}) { var y = 'b'; return x; } | 801 function f20({[y]: x}) { var y = 'b'; return x; } |
| 802 assertEquals(1, f20({a: 1, b: 2})); | 802 assertEquals(1, f20({a: 1, b: 2})); |
| 803 // function f21({[eval('y')]: x}) { var y = 'b'; return x; } | 803 // function f21({[eval('y')]: x}) { var y = 'b'; return x; } |
| 804 // assertEquals(1, f21({a: 1, b: 2})); | 804 // assertEquals(1, f21({a: 1, b: 2})); |
| 805 var g20 = ({[y]: x}) => { var y = 'b'; return x; }; | 805 var g20 = ({[y]: x}) => { var y = 'b'; return x; }; |
| 806 assertEquals(1, g20({a: 1, b: 2})); | 806 assertEquals(1, g20({a: 1, b: 2})); |
| 807 // var g21 = ({[eval('y')]: x}) => { var y = 'b'; return x; }; | 807 // var g21 = ({[eval('y')]: x}) => { var y = 'b'; return x; }; |
| 808 // assertEquals(1, g21({a: 1, b: 2})); | 808 // assertEquals(1, g21({a: 1, b: 2})); |
| 809 })(); |
| 810 |
| 811 |
| 812 (function TestParameterTDZ() { |
| 813 function f1({a = x}, x) { return a } |
| 814 assertThrows(() => f1({}, 4), ReferenceError); |
| 815 assertEquals(4, f1({a: 4}, 5)); |
| 816 // TODO(rossberg): eval in default expressions is not working yet. |
| 817 // function f2({a = eval("x")}, x) { return a } |
| 818 // assertThrows(() => f2({}, 4), ReferenceError); |
| 819 // assertEquals(4, f2({a: 4}, 5)); |
| 820 // function f3({a = eval("x")}, x) { 'use strict'; return a } |
| 821 // assertThrows(() => f3({}, 4), ReferenceError); |
| 822 // assertEquals(4, f3({a: 4}, 5)); |
| 823 // function f4({a = eval("'use strict'; x")}, x) { return a } |
| 824 // assertThrows(() => f4({}, 4), ReferenceError); |
| 825 // assertEquals(4, f4({a: 4}, 5)); |
| 826 |
| 827 function f5({a = () => x}, x) { return a() } |
| 828 assertEquals(4, f5({a: () => 4}, 5)); |
| 829 // TODO(rossberg): eval in default expressions is not working yet. |
| 830 // function f6({a = () => eval("x")}, x) { return a() } |
| 831 // assertEquals(4, f6({a: () => 4}, 5)); |
| 832 // function f7({a = () => eval("x")}, x) { 'use strict'; return a() } |
| 833 // assertEquals(4, f7({a: () => 4}, 5)); |
| 834 // function f8({a = () => eval("'use strict'; x")}, x) { return a() } |
| 835 // assertEquals(4, f8({a: () => 4}, 5)); |
| 836 |
| 837 function f11({a = b}, {b}) { return a } |
| 838 assertThrows(() => f11({}, {b: 4}), ReferenceError); |
| 839 assertEquals(4, f11({a: 4}, {b: 5})); |
| 840 // function f12({a = eval("b")}, {b}) { return a } |
| 841 // assertThrows(() => f12({}, {b: 4}), ReferenceError); |
| 842 // assertEquals(4, f12({a: 4}, {b: 5})); |
| 843 // function f13({a = eval("b")}, {b}) { 'use strict'; return a } |
| 844 // assertThrows(() => f13({}, {b: 4}), ReferenceError); |
| 845 // assertEquals(4, f13({a: 4}, {b: 5})); |
| 846 // function f14({a = eval("'use strict'; b")}, {b}) { return a } |
| 847 // assertThrows(() => f14({}, {b: 4}), ReferenceError); |
| 848 // assertEquals(4, f14({a: 4}, {b: 5})); |
| 849 |
| 850 function f15({a = () => b}, {b}) { return a() } |
| 851 assertEquals(4, f15({a: () => 4}, {b: 5})); |
| 852 // function f16({a = () => eval("b")}, {b}) { return a() } |
| 853 // assertEquals(4, f16({a: () => 4}, {b: 5})); |
| 854 // function f17({a = () => eval("b")}, {b}) { 'use strict'; return a() } |
| 855 // assertEquals(4, f17({a: () => 4}, {b: 5})); |
| 856 // function f18({a = () => eval("'use strict'; b")}, {b}) { return a() } |
| 857 // assertEquals(4, f18({a: () => 4}, {b: 5})); |
| 809 | 858 |
| 810 // TODO(caitp): TDZ for rest parameters is not working yet. | 859 // TODO(caitp): TDZ for rest parameters is not working yet. |
| 811 // function f30({x = a}, ...a) {} | 860 // function f30({x = a}, ...a) { return x[0] } |
| 812 // assertThrows(() => f30({}), ReferenceError); | 861 // assertThrows(() => f30({}), ReferenceError); |
| 813 // function f31({x = eval("a")}, ...a) {} | 862 // assertEquals(4, f30({a: [4]}, 5)); |
| 863 // function f31({x = eval("a")}, ...a) { return x[0] } |
| 814 // assertThrows(() => f31({}), ReferenceError); | 864 // assertThrows(() => f31({}), ReferenceError); |
| 815 // function f32({x = eval("a")}, ...a) { 'use strict'; } | 865 // assertEquals(4, f31({a: [4]}, 5)); |
| 866 // function f32({x = eval("a")}, ...a) { 'use strict'; return x[0] } |
| 816 // assertThrows(() => f32({}), ReferenceError); | 867 // assertThrows(() => f32({}), ReferenceError); |
| 817 // function f33({x = eval("'use strict'; a")}, ...a) {} | 868 // assertEquals(4, f32({a: [4]}, 5)); |
| 869 // function f33({x = eval("'use strict'; a")}, ...a) { return x[0] } |
| 818 // assertThrows(() => f33({}), ReferenceError); | 870 // assertThrows(() => f33({}), ReferenceError); |
| 871 // assertEquals(4, f33({a: [4]}, 5)); |
| 872 |
| 819 function f34({x = function() { return a }}, ...a) { return x()[0] } | 873 function f34({x = function() { return a }}, ...a) { return x()[0] } |
| 820 assertEquals(4, f34({}, 4)); | 874 assertEquals(4, f34({}, 4)); |
| 821 function f35({x = () => a}, ...a) { return x()[0] } | 875 function f35({x = () => a}, ...a) { return x()[0] } |
| 822 assertEquals(4, f35({}, 4)); | 876 assertEquals(4, f35({}, 4)); |
| 823 // function f36({x = () => eval("a")}, ...a) { return x()[0] } | 877 // function f36({x = () => eval("a")}, ...a) { return x()[0] } |
| 824 // assertEquals(4, f36({}, 4)); | 878 // assertEquals(4, f36({}, 4)); |
| 825 // function f37({x = () => eval("a")}, ...a) { 'use strict'; return x()[0] } | 879 // function f37({x = () => eval("a")}, ...a) { 'use strict'; return x()[0] } |
| 826 // assertEquals(4, f37({}, 4)); | 880 // assertEquals(4, f37({}, 4)); |
| 827 // function f38({x = () => { 'use strict'; return eval("a") }}, ...a) { return
x()[0] } | 881 // function f38({x = () => { 'use strict'; return eval("a") }}, ...a) { return
x()[0] } |
| 828 // assertEquals(4, f38({}, 4)); | 882 // assertEquals(4, f38({}, 4)); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 863 assertThrows("'use strict'; function f({x}) { let x = 0; }; f({});", SyntaxErr
or); | 917 assertThrows("'use strict'; function f({x}) { let x = 0; }; f({});", SyntaxErr
or); |
| 864 }()); | 918 }()); |
| 865 | 919 |
| 866 | 920 |
| 867 (function TestForInOfTDZ() { | 921 (function TestForInOfTDZ() { |
| 868 assertThrows("'use strict'; let x = {}; for (let [x, y] of {x});", ReferenceEr
ror); | 922 assertThrows("'use strict'; let x = {}; for (let [x, y] of {x});", ReferenceEr
ror); |
| 869 assertThrows("'use strict'; let x = {}; for (let [y, x] of {x});", ReferenceEr
ror); | 923 assertThrows("'use strict'; let x = {}; for (let [y, x] of {x});", ReferenceEr
ror); |
| 870 assertThrows("'use strict'; let x = {}; for (let [x, y] in {x});", ReferenceEr
ror); | 924 assertThrows("'use strict'; let x = {}; for (let [x, y] in {x});", ReferenceEr
ror); |
| 871 assertThrows("'use strict'; let x = {}; for (let [y, x] in {x});", ReferenceEr
ror); | 925 assertThrows("'use strict'; let x = {}; for (let [y, x] in {x});", ReferenceEr
ror); |
| 872 }()); | 926 }()); |
| OLD | NEW |