OLD | NEW |
1 // // Copyright 2016 the V8 project authors. All rights reserved. | 1 // // Copyright 2016 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-object-rest-spread | 5 // Flags: --harmony-object-rest-spread |
6 var { ...x } = { a: 1 }; | 6 var { ...x } = { a: 1 }; |
7 assertEquals({ a: 1 }, x); | 7 assertEquals({ a: 1 }, x); |
8 | 8 |
9 var { ...x } = { a: 1, b: 1 }; | 9 var { ...x } = { a: 1, b: 1 }; |
10 assertEquals({ a: 1, b: 1 }, x); | 10 assertEquals({ a: 1, b: 1 }, x); |
(...skipping 24 matching lines...) Expand all Loading... |
35 var { [key]: y, ...x } = { b: 1, a: 1 }; | 35 var { [key]: y, ...x } = { b: 1, a: 1 }; |
36 assertEquals({ a: 1 }, x); | 36 assertEquals({ a: 1 }, x); |
37 assertEquals(1, y); | 37 assertEquals(1, y); |
38 | 38 |
39 var key = 1; | 39 var key = 1; |
40 var { [key++]: y, ...x } = { 1: 1, a: 1 }; | 40 var { [key++]: y, ...x } = { 1: 1, a: 1 }; |
41 assertEquals({ a: 1 }, x); | 41 assertEquals({ a: 1 }, x); |
42 assertEquals(key, 2); | 42 assertEquals(key, 2); |
43 assertEquals(1, y); | 43 assertEquals(1, y); |
44 | 44 |
| 45 var key = "1"; |
| 46 var { [key]: y, ...x } = { 1: 1, a: 1 }; |
| 47 assertEquals({ a: 1 }, x); |
| 48 assertEquals(1, y); |
| 49 |
45 function example({a, ...rest}, { b = rest }) { | 50 function example({a, ...rest}, { b = rest }) { |
46 assertEquals(1, a); | 51 assertEquals(1, a); |
47 assertEquals({ b: 2, c: 3}, rest); | 52 assertEquals({ b: 2, c: 3}, rest); |
48 assertEquals({ b: 2, c: 3}, b); | 53 assertEquals({ b: 2, c: 3}, b); |
49 }; | 54 }; |
50 example({ a: 1, b: 2, c: 3}, { b: undefined }); | 55 example({ a: 1, b: 2, c: 3}, { b: undefined }); |
51 | 56 |
52 var x = { a: 3 }; | 57 var x = { a: 3 }; |
53 var y = { | 58 var y = { |
54 set a(val) { assertUnreachable(); }, | 59 set a(val) { assertUnreachable(); }, |
55 ...x, | 60 ...x, |
56 }; | 61 }; |
57 assertEquals(y.a, 3); | 62 assertEquals(y.a, 3); |
58 | 63 |
| 64 var { ...y } = { get a() { return 1 } }; |
| 65 assertEquals({a: 1}, y); |
| 66 |
59 var x = { | 67 var x = { |
60 get a() { throw new Error(); }, | 68 get a() { throw new Error(); }, |
61 }; | 69 }; |
62 assertThrows(() => { var { ...y } = x }); | 70 assertThrows(() => { var { ...y } = x }); |
63 | 71 |
64 var p = new Proxy({}, { | 72 var p = new Proxy({}, { |
65 ownKeys() { throw new Error(); } | 73 ownKeys() { throw new Error(); } |
66 }); | 74 }); |
67 assertThrows(() => { var { ...y } = p }); | 75 assertThrows(() => { var { ...y } = p }); |
68 | 76 |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
113 assertEquals(2, y); | 121 assertEquals(2, y); |
114 assertEquals({ 3: 3 }, z); | 122 assertEquals({ 3: 3 }, z); |
115 | 123 |
116 (({x, ...z}) => { assertEquals({y: 1}, z); })({ x: 1, y: 1}); | 124 (({x, ...z}) => { assertEquals({y: 1}, z); })({ x: 1, y: 1}); |
117 | 125 |
118 var [...{...z}] = [{ x: 1}]; | 126 var [...{...z}] = [{ x: 1}]; |
119 assertEquals({ 0: { x: 1} }, z); | 127 assertEquals({ 0: { x: 1} }, z); |
120 | 128 |
121 var {...{x}} = { x: 1}; | 129 var {...{x}} = { x: 1}; |
122 assertEquals(1, x); | 130 assertEquals(1, x); |
| 131 |
| 132 var {4294967297: y, ...x} = { 4294967297: 1, x: 1}; |
| 133 assertEquals(1, y); |
| 134 assertEquals({x: 1}, x); |
OLD | NEW |