aboutsummaryrefslogtreecommitdiffstats
path: root/src/dstr-binding/obj-ptrn-prop-id-init-skipped.case
diff options
context:
space:
mode:
authorMike Pennisi <mike@mikepennisi.com>2016-04-18 13:19:58 -0400
committerMike Pennisi <mike@mikepennisi.com>2016-05-10 11:51:44 -0400
commitcc7381d3b22fab3c5c4f6eff1ece7207ba1dca33 (patch)
treee9e0b09f79b026780dae743d0be1574e44e12231 /src/dstr-binding/obj-ptrn-prop-id-init-skipped.case
parentbe195c38ca216170205ef1e46581c59596fd0420 (diff)
Add test cases for destructuring binding
Diffstat (limited to 'src/dstr-binding/obj-ptrn-prop-id-init-skipped.case')
-rw-r--r--src/dstr-binding/obj-ptrn-prop-id-init-skipped.case43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/dstr-binding/obj-ptrn-prop-id-init-skipped.case b/src/dstr-binding/obj-ptrn-prop-id-init-skipped.case
new file mode 100644
index 000000000..49ec6684f
--- /dev/null
+++ b/src/dstr-binding/obj-ptrn-prop-id-init-skipped.case
@@ -0,0 +1,43 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: Destructuring initializer is not evaluated when value is not `undefined`
+template: default
+info: |
+ 13.3.3.7 Runtime Semantics: KeyedBindingInitialization
+
+ BindingElement : BindingPattern Initializeropt
+
+ [...]
+ 3. If Initializer is present and v is undefined, then
+ [...]
+---*/
+
+//- setup
+var initCount = 0;
+function counter() {
+ initCount += 1;
+}
+//- elems
+{ s: t = counter(), u: v = counter(), w: x = counter(), y: z = counter() }
+//- vals
+{ s: null, u: 0, w: false, y: '' }
+//- body
+assert.sameValue(t, null);
+assert.sameValue(v, 0);
+assert.sameValue(x, false);
+assert.sameValue(z, '');
+assert.sameValue(initCount, 0);
+
+assert.throws(ReferenceError, function() {
+ s;
+});
+assert.throws(ReferenceError, function() {
+ u;
+});
+assert.throws(ReferenceError, function() {
+ w;
+});
+assert.throws(ReferenceError, function() {
+ y;
+});