Index: test/mjsunit/harmony/object-rest-basic.js |
diff --git a/test/mjsunit/harmony/object-rest-basic.js b/test/mjsunit/harmony/object-rest-basic.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a3dd4e431ad3928a3b1c272b6629ccc9923cd6a3 |
--- /dev/null |
+++ b/test/mjsunit/harmony/object-rest-basic.js |
@@ -0,0 +1,46 @@ |
+// // Copyright 2016 the V8 project authors. All rights reserved. |
+// // Use of this source code is governed by a BSD-style license that can be |
+// // found in the LICENSE file. |
+ |
+// Flags: --harmony-object-rest-spread |
+var { ...x } = { a: 1 }; |
+assertEquals({ a: 1 }, x); |
+ |
+var { ...x } = { a: 1, b: 1 }; |
+assertEquals({ a: 1, b: 1 }, x); |
+ |
+var { y, ...x } = { y: 1, a: 1 }; |
+assertEquals({ a: 1 }, x); |
+assertEquals(1, y); |
+ |
+({ a, ...b } = { a: 1, b: 2 }); |
+assertEquals(1, a); |
+assertEquals({ b: 2 }, b); |
+ |
+var { ...x } = {}; |
+assertEquals({}, x); |
+ |
+var key = "b"; |
+var { [key]: y, ...x } = { b: 1, a: 1 }; |
+assertEquals({ a: 1 }, x); |
+assertEquals(1, y); |
+ |
+var key = 1; |
+var { [key++]: y, ...x } = { 1: 1, a: 1 }; |
+assertEquals({ a: 1 }, x); |
+assertEquals(key, 2); |
+assertEquals(1, y); |
+ |
+function example({a, ...rest}, { b = rest }) { |
+ assertEquals(1, a); |
+ assertEquals({ b: 2, c: 3}, rest); |
+ assertEquals({ b: 2, c: 3}, b); |
+}; |
+example({ a: 1, b: 2, c: 3}, { b: undefined }); |
+ |
+var x = { a: 3 }; |
+var y = { |
+ set a(val) { assertUnreachable(); }, |
+ ...x, |
+}; |
+assertEquals(y.a, 3); |