Index: test/mjsunit/harmony/destructuring.js |
diff --git a/test/mjsunit/harmony/destructuring.js b/test/mjsunit/harmony/destructuring.js |
index 257c4a164dbfb6f7034a534d77269d5737ee3dc7..28535b719a0f07219979b2f67f0e672d9d70d089 100644 |
--- a/test/mjsunit/harmony/destructuring.js |
+++ b/test/mjsunit/harmony/destructuring.js |
@@ -388,3 +388,149 @@ |
TypeError); |
} |
}()); |
+ |
+ |
+(function TestArrayLiteral() { |
+ var [a,b,c] = [1,2,3]; |
arv (Not doing code reviews)
2015/05/19 17:03:48
ws
Dmitry Lomov (no reviews)
2015/05/20 07:42:42
Done.
|
+ assertSame(1, a); |
+ assertSame(2, b); |
+ assertSame(3, c); |
+}()); |
+ |
+(function TestIterators() { |
+ var log = []; |
+ function* f() { |
+ log.push("1"); |
+ yield 1; |
+ log.push("2"); |
+ yield 2; |
+ log.push("3"); |
+ yield 3; |
+ log.push("done"); |
+ }; |
+ |
+ (function() { |
+ log = []; |
+ var [a,b,c] = f(); |
+ assertSame(1, a); |
+ assertSame(2, b); |
+ assertSame(3, c); |
+ assertArrayEquals(["1", "2", "3"], log); |
+ }()); |
+ |
+ (function() { |
+ log = []; |
+ var [a,b,c,d] = f(); |
+ assertSame(1, a); |
+ assertSame(2, b); |
+ assertSame(3, c); |
+ assertSame(undefined, d); |
+ assertArrayEquals(["1", "2", "3", "done"], log); |
+ }()); |
+ |
+ (function() { |
+ log = []; |
+ var [a,,c] = f(); |
+ assertSame(1, a); |
+ assertSame(3, c); |
+ assertArrayEquals(["1", "2", "3"], log); |
+ }()); |
+ |
+ (function() { |
+ log = []; |
+ var [a,,c,d] = f(); |
+ assertSame(1, a); |
+ assertSame(3, c); |
+ assertSame(undefined, d); |
+ assertArrayEquals(["1", "2", "3", "done"], log); |
+ }()); |
+ |
+ (function() { |
+ log = []; |
+ // last comma is not an elision. |
+ var [a,b,] = f(); |
+ assertSame(1, a); |
+ assertSame(2, b); |
+ assertArrayEquals(["1", "2"], log); |
+ }()); |
+ |
+ (function() { |
+ log = []; |
+ // last comma is not an elision, but the comma before the last is. |
+ var [a,b,,] = f(); |
+ assertSame(1, a); |
+ assertSame(2, b); |
+ assertArrayEquals(["1", "2", "3"], log); |
+ }()); |
+ |
+}()); |
+ |
+ |
+(function TestIteratorsLexical() { |
+ 'use strict'; |
+ var log = []; |
+ function* f() { |
+ log.push("1"); |
+ yield 1; |
+ log.push("2"); |
+ yield 2; |
+ log.push("3"); |
+ yield 3; |
+ log.push("done"); |
+ }; |
+ |
+ (function() { |
+ log = []; |
+ let [a,b,c] = f(); |
+ assertSame(1, a); |
+ assertSame(2, b); |
+ assertSame(3, c); |
+ assertArrayEquals(["1", "2", "3"], log); |
+ }()); |
+ |
+ (function() { |
+ log = []; |
+ let [a,b,c,d] = f(); |
+ assertSame(1, a); |
+ assertSame(2, b); |
+ assertSame(3, c); |
+ assertSame(undefined, d); |
+ assertArrayEquals(["1", "2", "3", "done"], log); |
+ }()); |
+ |
+ (function() { |
+ log = []; |
+ let [a,,c] = f(); |
+ assertSame(1, a); |
+ assertSame(3, c); |
+ assertArrayEquals(["1", "2", "3"], log); |
+ }()); |
+ |
+ (function() { |
+ log = []; |
+ let [a,,c,d] = f(); |
+ assertSame(1, a); |
+ assertSame(3, c); |
+ assertSame(undefined, d); |
+ assertArrayEquals(["1", "2", "3", "done"], log); |
+ }()); |
+ |
+ (function() { |
+ log = []; |
+ // last comma is not an elision. |
+ let [a,b,] = f(); |
+ assertSame(1, a); |
+ assertSame(2, b); |
+ assertArrayEquals(["1", "2"], log); |
+ }()); |
+ |
+ (function() { |
+ log = []; |
+ // last comma is not an elision, but the comma before the last is. |
+ let [a,b,,] = f(); |
+ assertSame(1, a); |
+ assertSame(2, b); |
+ assertArrayEquals(["1", "2", "3"], log); |
+ }()); |
+ |
arv (Not doing code reviews)
2015/05/19 17:03:48
Can you add some recursive tests too?
Dmitry Lomov (no reviews)
2015/05/20 07:42:42
Done.
|
+}()); |