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

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

Issue 1259283002: [es6] Implement proper TDZ for parameters (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Adjust test expectations Created 5 years, 4 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
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-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
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
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 }());
OLDNEW
« src/parser.h ('K') | « src/preparser.h ('k') | test/test262-es6/test262-es6.status » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698