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-computed-property-names | 5 // Flags: --harmony-destructuring --harmony-computed-property-names |
| 6 // Flags: --harmony-arrow-functions | 6 // Flags: --harmony-arrow-functions |
| 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 698 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 709 assertEquals(8, g1(7, {a : 6, b : 5})); | 709 assertEquals(8, g1(7, {a : 6, b : 5})); |
| 710 | 710 |
| 711 var g2 = ({c, d}, {a, b}) => { return c - d + a - b; }; | 711 var g2 = ({c, d}, {a, b}) => { return c - d + a - b; }; |
| 712 assertEquals(7, g2({c : 7, d : 1}, {a : 6, b : 5})); | 712 assertEquals(7, g2({c : 7, d : 1}, {a : 6, b : 5})); |
| 713 | 713 |
| 714 var g3 = ([{a, b}]) => { return a - b; }; | 714 var g3 = ([{a, b}]) => { return a - b; }; |
| 715 assertEquals(1, g3([{a : 6, b : 5}])); | 715 assertEquals(1, g3([{a : 6, b : 5}])); |
| 716 }()); | 716 }()); |
| 717 | 717 |
| 718 | 718 |
| 719 (function TestParameterScoping() { | |
| 720 var x = 1; | |
| 721 | |
| 722 function f1({a = x}) { var x = 2; return a; } | |
| 723 assertEquals(1, f1({})); | |
| 724 function f2({a = x}) { function x() {}; return a; } | |
| 725 assertEquals(1, f2({})); | |
| 726 function f3({a = x}) { 'use strict'; let x = 2; return a; } | |
| 727 assertEquals(1, f3({})); | |
| 728 function f4({a = x}) { 'use strict'; const x = 2; return a; } | |
| 729 assertEquals(1, f4({})); | |
| 730 function f5({a = x}) { 'use strict'; function x() {}; return a; } | |
| 731 assertEquals(1, f5({})); | |
| 732 | |
| 733 var g1 = ({a = x}) => { var x = 2; return a; }; | |
| 734 assertEquals(1, g1({})); | |
| 735 var g2 = ({a = x}) => { function x() {}; return a; }; | |
| 736 assertEquals(1, g2({})); | |
| 737 var g3 = ({a = x}) => { 'use strict'; let x = 2; return a; }; | |
| 738 assertEquals(1, g3({})); | |
| 739 var g4 = ({a = x}) => { 'use strict'; const x = 2; return a; }; | |
| 740 assertEquals(1, g4({})); | |
| 741 var g5 = ({a = x}) => { 'use strict'; function x() {}; return a; }; | |
| 742 assertEquals(1, g5({})); | |
| 743 | |
| 744 var y = 'a'; | |
| 745 function f6({[y]: x}) { var y = 'b'; return x; } | |
| 746 assertEquals(1, f6({a: 1, b: 2})); | |
| 747 var g6 = ({[y]: x}) => { var y = 'b'; return x; }; | |
| 748 assertEquals(1, g6({a: 1, b: 2})); | |
| 749 })(); | |
| 750 | |
| 751 | |
| 719 (function TestDuplicatesInParameters() { | 752 (function TestDuplicatesInParameters() { |
| 720 assertThrows("'use strict';function f(x,x){}", SyntaxError); | 753 assertThrows("'use strict';function f(x,x){}", SyntaxError); |
| 721 assertThrows("'use strict';function f({x,x}){}", SyntaxError); | 754 assertThrows("'use strict';function f({x,x}){}", SyntaxError); |
| 722 assertThrows("'use strict';function f(x, {x}){}", SyntaxError); | 755 assertThrows("'use strict';function f(x, {x}){}", SyntaxError); |
| 723 assertThrows("'use strict';var f = (x,x) => {};", SyntaxError); | 756 assertThrows("'use strict';var f = (x,x) => {};", SyntaxError); |
| 724 assertThrows("'use strict';var f = ({x,x}) => {};", SyntaxError); | 757 assertThrows("'use strict';var f = ({x,x}) => {};", SyntaxError); |
| 725 assertThrows("'use strict';var f = (x, {x}) => {};", SyntaxError); | 758 assertThrows("'use strict';var f = (x, {x}) => {};", SyntaxError); |
| 726 | 759 |
| 727 function ok(x) { var x; }; ok(); | 760 function ok(x) { var x; }; ok(); |
| 728 assertThrows("function f({x}) { var x; }; f({});", SyntaxError); | 761 // TODO(rossberg): Check for variable collision. |
|
adamk
2015/07/13 19:27:31
Do you mean to take care of this in this patch or
rossberg
2015/07/14 06:24:51
I leave that for a future CL. Leaving out this che
| |
| 729 assertThrows("'use strict'; function f({x}) { let x = 0; }; f({});", SyntaxErr or); | 762 // assertThrows("function f({x}) { var x; }; f({});", SyntaxError); |
| 763 // assertThrows("'use strict'; function f({x}) { let x = 0; }; f({});", Syntax Error); | |
| 730 }()); | 764 }()); |
| 731 | 765 |
| 732 | 766 |
| 733 (function TestForInOfTDZ() { | 767 (function TestForInOfTDZ() { |
| 734 assertThrows("'use strict'; let x = {}; for (let [x, y] of {x});", ReferenceEr ror); | 768 assertThrows("'use strict'; let x = {}; for (let [x, y] of {x});", ReferenceEr ror); |
| 735 assertThrows("'use strict'; let x = {}; for (let [y, x] of {x});", ReferenceEr ror); | 769 assertThrows("'use strict'; let x = {}; for (let [y, x] of {x});", ReferenceEr ror); |
| 736 assertThrows("'use strict'; let x = {}; for (let [x, y] in {x});", ReferenceEr ror); | 770 assertThrows("'use strict'; let x = {}; for (let [x, y] in {x});", ReferenceEr ror); |
| 737 assertThrows("'use strict'; let x = {}; for (let [y, x] in {x});", ReferenceEr ror); | 771 assertThrows("'use strict'; let x = {}; for (let [y, x] in {x});", ReferenceEr ror); |
| 738 }()); | 772 }()); |
| OLD | NEW |