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

Side by Side Diff: test/mjsunit/harmony/object-rest-basic.js

Issue 2620943002: [ESnext] Implement Object Rest (Closed)
Patch Set: add todo and test Created 3 years, 11 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
(Empty)
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
3 // // found in the LICENSE file.
4
5 // Flags: --harmony-object-rest-spread
6 var { ...x } = { a: 1 };
7 assertEquals({ a: 1 }, x);
8
9 var { ...x } = { a: 1, b: 1 };
10 assertEquals({ a: 1, b: 1 }, x);
11
12 var { x, ...x } = { a: 1, b: 1 };
13 assertEquals({ a: 1, b: 1 }, x);
14
15 var { x = {}, ...x } = { a: 1, b: 1 };
16 assertEquals({ a: 1, b: 1 }, x);
17
18 var { y, ...x } = { y: 1, a: 1 };
19 assertEquals({ a: 1 }, x);
20 assertEquals(1, y);
21
22 ({ a, ...b } = { a: 1, b: 2 });
23 assertEquals(1, a);
24 assertEquals({ b: 2 }, b);
25
26 var { ...x } = {};
27 assertEquals({}, x);
28
29 var key = "b";
30 var { [key]: y, ...x } = { b: 1, a: 1 };
31 assertEquals({ a: 1 }, x);
32 assertEquals(1, y);
33
34 var key = 1;
35 var { [key++]: y, ...x } = { 1: 1, a: 1 };
36 assertEquals({ a: 1 }, x);
37 assertEquals(key, 2);
38 assertEquals(1, y);
39
40 function example({a, ...rest}, { b = rest }) {
41 assertEquals(1, a);
42 assertEquals({ b: 2, c: 3}, rest);
43 assertEquals({ b: 2, c: 3}, b);
44 };
45 example({ a: 1, b: 2, c: 3}, { b: undefined });
46
47 var x = { a: 3 };
48 var y = {
49 set a(val) { assertUnreachable(); },
50 ...x,
51 };
52 assertEquals(y.a, 3);
53
54 var x = {
55 get a() { throw new Error(); },
56 };
57 assertThrows(() => { var { ...y } = x });
58
59 var p = new Proxy({}, {
60 ownKeys() { throw new Error(); }
61 });
62 assertThrows(() => { var { ...y } = p });
63
64 var p = new Proxy({}, {
65 ownKeys() { [1]; },
66 get() { throw new Error(); }
67 });
68 assertThrows(() => { var { ...y } = p });
69
70 var p = new Proxy({}, {
71 ownKeys() { [1]; },
72 getOwnPropertyDescriptor() { throw new Error(); }
73 });
74 assertThrows(() => { var { ...y } = p });
75
76 var z = { b: 1}
77 var p = new Proxy(z, {
78 ownKeys() { return Object.keys(z); },
79 get(_, prop) { return z[prop]; },
80 getOwnPropertyDescriptor(_, prop) {
81 return Object.getOwnPropertyDescriptor(z, prop);
82 },
83 });
84 var { ...y } = p ;
85 assertEquals(z, y);
86
87 var z = { b: 1}
88 var { ...y } = { ...z} ;
89 assertEquals(z, y);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698