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 | 5 // Flags: --harmony-destructuring |
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 704 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
715 assertEquals(8, g1(7, {a : 6, b : 5})); | 715 assertEquals(8, g1(7, {a : 6, b : 5})); |
716 | 716 |
717 var g2 = ({c, d}, {a, b}) => { return c - d + a - b; }; | 717 var g2 = ({c, d}, {a, b}) => { return c - d + a - b; }; |
718 assertEquals(7, g2({c : 7, d : 1}, {a : 6, b : 5})); | 718 assertEquals(7, g2({c : 7, d : 1}, {a : 6, b : 5})); |
719 | 719 |
720 var g3 = ([{a, b}]) => { return a - b; }; | 720 var g3 = ([{a, b}]) => { return a - b; }; |
721 assertEquals(1, g3([{a : 6, b : 5}])); | 721 assertEquals(1, g3([{a : 6, b : 5}])); |
722 }()); | 722 }()); |
723 | 723 |
724 | 724 |
| 725 (function TestExpressionsInParameters() { |
| 726 function f1({a = eval(1)}) { return a } |
| 727 assertEquals(1, f1({})); |
| 728 function f2([x = eval(2)]) { return x } |
| 729 assertEquals(2, f2([])); |
| 730 function f3({[eval(7)]: x}) { return x } |
| 731 assertEquals(3, f3({7: 3})); |
| 732 // TODO(rossberg, caitp): Add tests for default parameters. |
| 733 })(); |
| 734 |
| 735 |
725 (function TestParameterScoping() { | 736 (function TestParameterScoping() { |
726 var x = 1; | 737 var x = 1; |
727 | 738 |
728 function f1({a = x}) { var x = 2; return a; } | 739 function f1({a = x}) { var x = 2; return a; } |
729 assertEquals(1, f1({})); | 740 assertEquals(1, f1({})); |
730 function f2({a = x}) { function x() {}; return a; } | 741 function f2({a = x}) { function x() {}; return a; } |
731 assertEquals(1, f2({})); | 742 assertEquals(1, f2({})); |
732 function f3({a = x}) { 'use strict'; let x = 2; return a; } | 743 function f3({a = x}) { 'use strict'; let x = 2; return a; } |
733 assertEquals(1, f3({})); | 744 assertEquals(1, f3({})); |
734 function f4({a = x}) { 'use strict'; const x = 2; return a; } | 745 function f4({a = x}) { 'use strict'; const x = 2; return a; } |
735 assertEquals(1, f4({})); | 746 assertEquals(1, f4({})); |
736 function f5({a = x}) { 'use strict'; function x() {}; return a; } | 747 function f5({a = x}) { 'use strict'; function x() {}; return a; } |
737 assertEquals(1, f5({})); | 748 assertEquals(1, f5({})); |
738 // TODO(rossberg): Apparently, eval in default expressions is not working yet. | 749 function f6({a = eval("x")}) { var x; return a; } |
739 // function f6({a = eval("x")}) { var x; return a; } | 750 assertEquals(1, f6({})); |
740 // assertEquals(1, f6({})); | 751 function f61({a = eval("x")}) { 'use strict'; var x; return a; } |
741 // function f61({a = eval("x")}) { 'use strict'; var x; return a; } | 752 assertEquals(1, f61({})); |
742 // assertEquals(1, f61({})); | 753 function f62({a = eval("'use strict'; x")}) { var x; return a; } |
743 // function f62({a = eval("'use strict'; x")}) { var x; return a; } | 754 assertEquals(1, f62({})); |
744 // assertEquals(1, f62({})); | |
745 function f7({a = function() { return x }}) { var x; return a(); } | 755 function f7({a = function() { return x }}) { var x; return a(); } |
746 assertEquals(1, f7({})); | 756 assertEquals(1, f7({})); |
747 function f8({a = () => x}) { var x; return a(); } | 757 function f8({a = () => x}) { var x; return a(); } |
748 assertEquals(1, f8({})); | 758 assertEquals(1, f8({})); |
749 // function f9({a = () => eval("x")}) { var x; return a(); } | 759 function f9({a = () => eval("x")}) { var x; return a(); } |
750 // assertEquals(1, f9({})); | 760 assertEquals(1, f9({})); |
751 // function f91({a = () => eval("x")}) { 'use strict'; var x; return a(); } | 761 function f91({a = () => eval("x")}) { 'use strict'; var x; return a(); } |
752 // assertEquals(1, f91({})); | 762 assertEquals(1, f91({})); |
753 // function f92({a = () => { 'use strict'; return eval("x") }}) { var x; retur
n a(); } | 763 function f92({a = () => { 'use strict'; return eval("x") }}) { var x; return a
(); } |
754 // assertEquals(1, f92({})); | 764 assertEquals(1, f92({})); |
755 // function f93({a = () => eval("'use strict'; x")}) { var x; return a(); } | 765 function f93({a = () => eval("'use strict'; x")}) { var x; return a(); } |
756 // assertEquals(1, f93({})); | 766 assertEquals(1, f93({})); |
757 | 767 |
758 var g1 = ({a = x}) => { var x = 2; return a; }; | 768 var g1 = ({a = x}) => { var x = 2; return a; }; |
759 assertEquals(1, g1({})); | 769 assertEquals(1, g1({})); |
760 var g2 = ({a = x}) => { function x() {}; return a; }; | 770 var g2 = ({a = x}) => { function x() {}; return a; }; |
761 assertEquals(1, g2({})); | 771 assertEquals(1, g2({})); |
762 var g3 = ({a = x}) => { 'use strict'; let x = 2; return a; }; | 772 var g3 = ({a = x}) => { 'use strict'; let x = 2; return a; }; |
763 assertEquals(1, g3({})); | 773 assertEquals(1, g3({})); |
764 var g4 = ({a = x}) => { 'use strict'; const x = 2; return a; }; | 774 var g4 = ({a = x}) => { 'use strict'; const x = 2; return a; }; |
765 assertEquals(1, g4({})); | 775 assertEquals(1, g4({})); |
766 var g5 = ({a = x}) => { 'use strict'; function x() {}; return a; }; | 776 var g5 = ({a = x}) => { 'use strict'; function x() {}; return a; }; |
767 assertEquals(1, g5({})); | 777 assertEquals(1, g5({})); |
768 // var g6 = ({a = eval("x")}) => { var x; return a; }; | 778 var g6 = ({a = eval("x")}) => { var x; return a; }; |
769 // assertEquals(1, g6({})); | 779 assertEquals(1, g6({})); |
770 // var g61 = ({a = eval("x")}) => { 'use strict'; var x; return a; }; | 780 var g61 = ({a = eval("x")}) => { 'use strict'; var x; return a; }; |
771 // assertEquals(1, g61({})); | 781 assertEquals(1, g61({})); |
772 // var g62 = ({a = eval("'use strict'; x")}) => { var x; return a; }; | 782 var g62 = ({a = eval("'use strict'; x")}) => { var x; return a; }; |
773 // assertEquals(1, g62({})); | 783 assertEquals(1, g62({})); |
774 var g7 = ({a = function() { return x }}) => { var x; return a(); }; | 784 var g7 = ({a = function() { return x }}) => { var x; return a(); }; |
775 assertEquals(1, g7({})); | 785 assertEquals(1, g7({})); |
776 var g8 = ({a = () => x}) => { var x; return a(); }; | 786 var g8 = ({a = () => x}) => { var x; return a(); }; |
777 assertEquals(1, g8({})); | 787 assertEquals(1, g8({})); |
778 // var g9 = ({a = () => eval("x")}) => { var x; return a(); }; | 788 var g9 = ({a = () => eval("x")}) => { var x; return a(); }; |
779 // assertEquals(1, g9({})); | 789 assertEquals(1, g9({})); |
780 // var g91 = ({a = () => eval("x")}) => { 'use strict'; var x; return a(); }; | 790 var g91 = ({a = () => eval("x")}) => { 'use strict'; var x; return a(); }; |
781 // assertEquals(1, g91({})); | 791 assertEquals(1, g91({})); |
782 // var g92 = ({a = () => { 'use strict'; return eval("x") }}) => { var x; retu
rn a(); }; | 792 var g92 = ({a = () => { 'use strict'; return eval("x") }}) => { var x; return
a(); }; |
783 // assertEquals(1, g92({})); | 793 assertEquals(1, g92({})); |
784 // var g93 = ({a = () => eval("'use strict'; x")}) => { var x; return a(); }; | 794 var g93 = ({a = () => eval("'use strict'; x")}) => { var x; return a(); }; |
785 // assertEquals(1, g93({})); | 795 assertEquals(1, g93({})); |
786 | 796 |
787 var f11 = function f({x = f}) { var f; return x; } | 797 var f11 = function f({x = f}) { var f; return x; } |
788 assertSame(f11, f11({})); | 798 assertSame(f11, f11({})); |
789 var f12 = function f({x = f}) { function f() {}; return x; } | 799 var f12 = function f({x = f}) { function f() {}; return x; } |
790 assertSame(f12, f12({})); | 800 assertSame(f12, f12({})); |
791 var f13 = function f({x = f}) { 'use strict'; let f; return x; } | 801 var f13 = function f({x = f}) { 'use strict'; let f; return x; } |
792 assertSame(f13, f13({})); | 802 assertSame(f13, f13({})); |
793 var f14 = function f({x = f}) { 'use strict'; const f = 0; return x; } | 803 var f14 = function f({x = f}) { 'use strict'; const f = 0; return x; } |
794 assertSame(f14, f14({})); | 804 assertSame(f14, f14({})); |
795 var f15 = function f({x = f}) { 'use strict'; function f() {}; return x; } | 805 var f15 = function f({x = f}) { 'use strict'; function f() {}; return x; } |
796 assertSame(f15, f15({})); | 806 assertSame(f15, f15({})); |
797 var f16 = function f({f = 7, x = f}) { return x; } | 807 var f16 = function f({f = 7, x = f}) { return x; } |
798 assertSame(7, f16({})); | 808 assertSame(7, f16({})); |
799 | 809 |
800 var y = 'a'; | 810 var y = 'a'; |
801 function f20({[y]: x}) { var y = 'b'; return x; } | 811 function f20({[y]: x}) { var y = 'b'; return x; } |
802 assertEquals(1, f20({a: 1, b: 2})); | 812 assertEquals(1, f20({a: 1, b: 2})); |
803 // function f21({[eval('y')]: x}) { var y = 'b'; return x; } | 813 function f21({[eval('y')]: x}) { var y = 'b'; return x; } |
804 // assertEquals(1, f21({a: 1, b: 2})); | 814 assertEquals(1, f21({a: 1, b: 2})); |
805 var g20 = ({[y]: x}) => { var y = 'b'; return x; }; | 815 var g20 = ({[y]: x}) => { var y = 'b'; return x; }; |
806 assertEquals(1, g20({a: 1, b: 2})); | 816 assertEquals(1, g20({a: 1, b: 2})); |
807 // var g21 = ({[eval('y')]: x}) => { var y = 'b'; return x; }; | 817 var g21 = ({[eval('y')]: x}) => { var y = 'b'; return x; }; |
808 // assertEquals(1, g21({a: 1, b: 2})); | 818 assertEquals(1, g21({a: 1, b: 2})); |
809 })(); | 819 })(); |
810 | 820 |
811 | 821 |
812 (function TestParameterTDZ() { | 822 (function TestParameterTDZ() { |
813 function f1({a = x}, x) { return a } | 823 function f1({a = x}, x) { return a } |
814 assertThrows(() => f1({}, 4), ReferenceError); | 824 assertThrows(() => f1({}, 4), ReferenceError); |
815 assertEquals(4, f1({a: 4}, 5)); | 825 assertEquals(4, f1({a: 4}, 5)); |
816 // TODO(rossberg): eval in default expressions is not working yet. | 826 function f2({a = eval("x")}, x) { return a } |
817 // function f2({a = eval("x")}, x) { return a } | 827 assertThrows(() => f2({}, 4), ReferenceError); |
818 // assertThrows(() => f2({}, 4), ReferenceError); | 828 assertEquals(4, f2({a: 4}, 5)); |
819 // assertEquals(4, f2({a: 4}, 5)); | 829 function f3({a = eval("x")}, x) { 'use strict'; return a } |
820 // function f3({a = eval("x")}, x) { 'use strict'; return a } | 830 assertThrows(() => f3({}, 4), ReferenceError); |
821 // assertThrows(() => f3({}, 4), ReferenceError); | 831 assertEquals(4, f3({a: 4}, 5)); |
822 // assertEquals(4, f3({a: 4}, 5)); | 832 function f4({a = eval("'use strict'; x")}, x) { return a } |
823 // function f4({a = eval("'use strict'; x")}, x) { return a } | 833 assertThrows(() => f4({}, 4), ReferenceError); |
824 // assertThrows(() => f4({}, 4), ReferenceError); | 834 assertEquals(4, f4({a: 4}, 5)); |
825 // assertEquals(4, f4({a: 4}, 5)); | |
826 | 835 |
827 function f5({a = () => x}, x) { return a() } | 836 function f5({a = () => x}, x) { return a() } |
828 assertEquals(4, f5({a: () => 4}, 5)); | 837 assertEquals(4, f5({a: () => 4}, 5)); |
829 // TODO(rossberg): eval in default expressions is not working yet. | 838 function f6({a = () => eval("x")}, x) { return a() } |
830 // function f6({a = () => eval("x")}, x) { return a() } | 839 assertEquals(4, f6({a: () => 4}, 5)); |
831 // assertEquals(4, f6({a: () => 4}, 5)); | 840 function f7({a = () => eval("x")}, x) { 'use strict'; return a() } |
832 // function f7({a = () => eval("x")}, x) { 'use strict'; return a() } | 841 assertEquals(4, f7({a: () => 4}, 5)); |
833 // assertEquals(4, f7({a: () => 4}, 5)); | 842 function f8({a = () => eval("'use strict'; x")}, x) { return a() } |
834 // function f8({a = () => eval("'use strict'; x")}, x) { return a() } | 843 assertEquals(4, f8({a: () => 4}, 5)); |
835 // assertEquals(4, f8({a: () => 4}, 5)); | |
836 | 844 |
837 function f11({a = b}, {b}) { return a } | 845 function f11({a = b}, {b}) { return a } |
838 assertThrows(() => f11({}, {b: 4}), ReferenceError); | 846 assertThrows(() => f11({}, {b: 4}), ReferenceError); |
839 assertEquals(4, f11({a: 4}, {b: 5})); | 847 assertEquals(4, f11({a: 4}, {b: 5})); |
840 // function f12({a = eval("b")}, {b}) { return a } | 848 function f12({a = eval("b")}, {b}) { return a } |
841 // assertThrows(() => f12({}, {b: 4}), ReferenceError); | 849 assertThrows(() => f12({}, {b: 4}), ReferenceError); |
842 // assertEquals(4, f12({a: 4}, {b: 5})); | 850 assertEquals(4, f12({a: 4}, {b: 5})); |
843 // function f13({a = eval("b")}, {b}) { 'use strict'; return a } | 851 function f13({a = eval("b")}, {b}) { 'use strict'; return a } |
844 // assertThrows(() => f13({}, {b: 4}), ReferenceError); | 852 assertThrows(() => f13({}, {b: 4}), ReferenceError); |
845 // assertEquals(4, f13({a: 4}, {b: 5})); | 853 assertEquals(4, f13({a: 4}, {b: 5})); |
846 // function f14({a = eval("'use strict'; b")}, {b}) { return a } | 854 function f14({a = eval("'use strict'; b")}, {b}) { return a } |
847 // assertThrows(() => f14({}, {b: 4}), ReferenceError); | 855 assertThrows(() => f14({}, {b: 4}), ReferenceError); |
848 // assertEquals(4, f14({a: 4}, {b: 5})); | 856 assertEquals(4, f14({a: 4}, {b: 5})); |
849 | 857 |
850 function f15({a = () => b}, {b}) { return a() } | 858 function f15({a = () => b}, {b}) { return a() } |
851 assertEquals(4, f15({a: () => 4}, {b: 5})); | 859 assertEquals(4, f15({a: () => 4}, {b: 5})); |
852 // function f16({a = () => eval("b")}, {b}) { return a() } | 860 function f16({a = () => eval("b")}, {b}) { return a() } |
853 // assertEquals(4, f16({a: () => 4}, {b: 5})); | 861 assertEquals(4, f16({a: () => 4}, {b: 5})); |
854 // function f17({a = () => eval("b")}, {b}) { 'use strict'; return a() } | 862 function f17({a = () => eval("b")}, {b}) { 'use strict'; return a() } |
855 // assertEquals(4, f17({a: () => 4}, {b: 5})); | 863 assertEquals(4, f17({a: () => 4}, {b: 5})); |
856 // function f18({a = () => eval("'use strict'; b")}, {b}) { return a() } | 864 function f18({a = () => eval("'use strict'; b")}, {b}) { return a() } |
857 // assertEquals(4, f18({a: () => 4}, {b: 5})); | 865 assertEquals(4, f18({a: () => 4}, {b: 5})); |
858 | 866 |
859 // TODO(caitp): TDZ for rest parameters is not working yet. | 867 // TODO(caitp): TDZ for rest parameters is not working yet. |
860 // function f30({x = a}, ...a) { return x[0] } | 868 // function f30({x = a}, ...a) { return x[0] } |
861 // assertThrows(() => f30({}), ReferenceError); | 869 // assertThrows(() => f30({}), ReferenceError); |
862 // assertEquals(4, f30({a: [4]}, 5)); | 870 // assertEquals(4, f30({a: [4]}, 5)); |
863 // function f31({x = eval("a")}, ...a) { return x[0] } | 871 // function f31({x = eval("a")}, ...a) { return x[0] } |
864 // assertThrows(() => f31({}), ReferenceError); | 872 // assertThrows(() => f31({}), ReferenceError); |
865 // assertEquals(4, f31({a: [4]}, 5)); | 873 // assertEquals(4, f31({a: [4]}, 5)); |
866 // function f32({x = eval("a")}, ...a) { 'use strict'; return x[0] } | 874 // function f32({x = eval("a")}, ...a) { 'use strict'; return x[0] } |
867 // assertThrows(() => f32({}), ReferenceError); | 875 // assertThrows(() => f32({}), ReferenceError); |
868 // assertEquals(4, f32({a: [4]}, 5)); | 876 // assertEquals(4, f32({a: [4]}, 5)); |
869 // function f33({x = eval("'use strict'; a")}, ...a) { return x[0] } | 877 // function f33({x = eval("'use strict'; a")}, ...a) { return x[0] } |
870 // assertThrows(() => f33({}), ReferenceError); | 878 // assertThrows(() => f33({}), ReferenceError); |
871 // assertEquals(4, f33({a: [4]}, 5)); | 879 // assertEquals(4, f33({a: [4]}, 5)); |
872 | 880 |
873 function f34({x = function() { return a }}, ...a) { return x()[0] } | 881 function f34({x = function() { return a }}, ...a) { return x()[0] } |
874 assertEquals(4, f34({}, 4)); | 882 assertEquals(4, f34({}, 4)); |
875 function f35({x = () => a}, ...a) { return x()[0] } | 883 function f35({x = () => a}, ...a) { return x()[0] } |
876 assertEquals(4, f35({}, 4)); | 884 assertEquals(4, f35({}, 4)); |
877 // function f36({x = () => eval("a")}, ...a) { return x()[0] } | 885 function f36({x = () => eval("a")}, ...a) { return x()[0] } |
878 // assertEquals(4, f36({}, 4)); | 886 assertEquals(4, f36({}, 4)); |
879 // function f37({x = () => eval("a")}, ...a) { 'use strict'; return x()[0] } | 887 function f37({x = () => eval("a")}, ...a) { 'use strict'; return x()[0] } |
880 // assertEquals(4, f37({}, 4)); | 888 assertEquals(4, f37({}, 4)); |
881 // function f38({x = () => { 'use strict'; return eval("a") }}, ...a) { return
x()[0] } | 889 function f38({x = () => { 'use strict'; return eval("a") }}, ...a) { return x(
)[0] } |
882 // assertEquals(4, f38({}, 4)); | 890 assertEquals(4, f38({}, 4)); |
883 // function f39({x = () => eval("'use strict'; a")}, ...a) { return x()[0] } | 891 function f39({x = () => eval("'use strict'; a")}, ...a) { return x()[0] } |
884 // assertEquals(4, f39({}, 4)); | 892 assertEquals(4, f39({}, 4)); |
885 | 893 |
886 // var g30 = ({x = a}, ...a) => {}; | 894 // var g30 = ({x = a}, ...a) => {}; |
887 // assertThrows(() => g30({}), ReferenceError); | 895 // assertThrows(() => g30({}), ReferenceError); |
888 // var g31 = ({x = eval("a")}, ...a) => {}; | 896 // var g31 = ({x = eval("a")}, ...a) => {}; |
889 // assertThrows(() => g31({}), ReferenceError); | 897 // assertThrows(() => g31({}), ReferenceError); |
890 // var g32 = ({x = eval("a")}, ...a) => { 'use strict'; }; | 898 // var g32 = ({x = eval("a")}, ...a) => { 'use strict'; }; |
891 // assertThrows(() => g32({}), ReferenceError); | 899 // assertThrows(() => g32({}), ReferenceError); |
892 // var g33 = ({x = eval("'use strict'; a")}, ...a) => {}; | 900 // var g33 = ({x = eval("'use strict'; a")}, ...a) => {}; |
893 // assertThrows(() => g33({}), ReferenceError); | 901 // assertThrows(() => g33({}), ReferenceError); |
894 var g34 = ({x = function() { return a }}, ...a) => { return x()[0] }; | 902 var g34 = ({x = function() { return a }}, ...a) => { return x()[0] }; |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
928 function f4(x, {}) { x = 2; return arguments[0] } | 936 function f4(x, {}) { x = 2; return arguments[0] } |
929 assertEquals(7, f4(7, {})); | 937 assertEquals(7, f4(7, {})); |
930 function f5(x, ...a) { arguments[0] = 0; return x } | 938 function f5(x, ...a) { arguments[0] = 0; return x } |
931 assertEquals(6, f5(6, {})); | 939 assertEquals(6, f5(6, {})); |
932 function f6(x, ...a) { x = 2; return arguments[0] } | 940 function f6(x, ...a) { x = 2; return arguments[0] } |
933 assertEquals(6, f6(6, {})); | 941 assertEquals(6, f6(6, {})); |
934 function f7({a: x}) { x = 2; return arguments[0].a } | 942 function f7({a: x}) { x = 2; return arguments[0].a } |
935 assertEquals(5, f7({a: 5})); | 943 assertEquals(5, f7({a: 5})); |
936 function f8(x, ...a) { a = []; return arguments[1] } | 944 function f8(x, ...a) { a = []; return arguments[1] } |
937 assertEquals(6, f8(5, 6)); | 945 assertEquals(6, f8(5, 6)); |
938 // TODO(caitp, rossberg): add cases for default parameters. | 946 // TODO(rossberg, caitp): Add cases for default parameters. |
939 }()); | 947 }()); |
940 | 948 |
941 | 949 |
942 (function TestForInOfTDZ() { | 950 (function TestForInOfTDZ() { |
943 assertThrows("'use strict'; let x = {}; for (let [x, y] of {x});", ReferenceEr
ror); | 951 assertThrows("'use strict'; let x = {}; for (let [x, y] of {x});", ReferenceEr
ror); |
944 assertThrows("'use strict'; let x = {}; for (let [y, x] of {x});", ReferenceEr
ror); | 952 assertThrows("'use strict'; let x = {}; for (let [y, x] of {x});", ReferenceEr
ror); |
945 assertThrows("'use strict'; let x = {}; for (let [x, y] in {x});", ReferenceEr
ror); | 953 assertThrows("'use strict'; let x = {}; for (let [x, y] in {x});", ReferenceEr
ror); |
946 assertThrows("'use strict'; let x = {}; for (let [y, x] in {x});", ReferenceEr
ror); | 954 assertThrows("'use strict'; let x = {}; for (let [y, x] in {x});", ReferenceEr
ror); |
947 }()); | 955 }()); |
OLD | NEW |