Index: test/mjsunit/strong/destructuring.js |
diff --git a/test/mjsunit/strong/destructuring.js b/test/mjsunit/strong/destructuring.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..637c36ea2f97bc9164a869f87caedf7ce6d738bb |
--- /dev/null |
+++ b/test/mjsunit/strong/destructuring.js |
@@ -0,0 +1,25 @@ |
+// Copyright 2015 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-destructuring --harmony-computed-property-names |
+// Flags: --harmony-arrow-functions --strong-mode --allow-natives-syntax |
+ |
+(function() { |
+ function f({ x = function() { return []; } }) { "use strong"; return x(); } |
+ var a = f({ x: undefined }); |
+ assertTrue(%IsStrong(a)); |
+ |
+ // TODO(rossberg): Loading non-existent properties during destructuring should |
+ // not throw in strong mode. |
+ assertThrows(function() { f({}); }, TypeError); |
+ |
+ function weakf({ x = function() { return []; } }) { return x(); } |
+ a = weakf({}); |
+ assertFalse(%IsStrong(a)); |
+ |
+ function outerf() { return []; } |
+ function f2({ x = outerf }) { "use strong"; return x(); } |
+ a = f2({ x: undefined }); |
+ assertFalse(%IsStrong(a)); |
+})(); |