Skip to content
Snippets Groups Projects
Commit 461e8445 authored by Daniel Ehrenberg's avatar Daniel Ehrenberg Committed by GitHub
Browse files

Merge pull request #1083 from rwaldron/1082

Duplicate src/dstr-assignment/obj-rest-computed-property.case into regular and sloppy versions. Fixes gh-1082
parents 89be4ebf 38150b35
No related branches found
No related tags found
No related merge requests found
// Copyright (C) 2017 Caio Lima. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
desc: >
Destructuring field can be a computed property, i.e it can be defined
only at runtime. Rest operantion needs to skip these properties as well.
template: default
esid: pending
includes: [propertyHelper.js]
features: [object-rest]
flags: [noStrict]
---*/
//- setup
var a = "foo";
//- elems
{[a]:b, ...rest}
//- vals
{ foo: 1, bar: 2, baz: 3 }
//- body
assert.sameValue(b, 1);
assert.sameValue(rest.bar, 2);
assert.sameValue(rest.baz, 3);
assert.sameValue(Object.getOwnPropertyDescriptor(rest, "foo"), undefined);
verifyProperty(rest, "bar", {
enumerable: true,
writable: true,
configurable: true
});
verifyProperty(rest, "baz", {
enumerable: true,
writable: true,
configurable: true
});
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
/*--- /*---
desc: > desc: >
Destructuring field can be a computed property, i.e it can be defined Destructuring field can be a computed property, i.e it can be defined
only at runtime. Rest operantion needs to skip these properties as well. only at runtime. Rest operantion needs to skip these properties as well.
template: default template: default
esid: pending esid: pending
...@@ -13,6 +13,7 @@ features: [object-rest] ...@@ -13,6 +13,7 @@ features: [object-rest]
//- setup //- setup
var a = "foo"; var a = "foo";
var b, rest;
//- elems //- elems
{[a]:b, ...rest} {[a]:b, ...rest}
//- vals //- vals
......
// This file was procedurally generated from the following sources:
// - src/dstr-assignment/obj-rest-computed-property-no-strict.case
// - src/dstr-assignment/default/assignment-expr.template
/*---
description: Destructuring field can be a computed property, i.e it can be defined only at runtime. Rest operantion needs to skip these properties as well. (AssignmentExpression)
esid: sec-variable-statement-runtime-semantics-evaluation
es6id: 13.3.2.4
features: [object-rest, destructuring-binding]
flags: [generated, noStrict]
includes: [propertyHelper.js]
info: |
VariableDeclaration : BindingPattern Initializer
1. Let rhs be the result of evaluating Initializer.
2. Let rval be GetValue(rhs).
3. ReturnIfAbrupt(rval).
4. Return the result of performing BindingInitialization for
BindingPattern passing rval and undefined as arguments.
---*/
var a = "foo";
var result;
var vals = { foo: 1, bar: 2, baz: 3 };
result = {[a]:b, ...rest} = vals;
assert.sameValue(b, 1);
assert.sameValue(rest.bar, 2);
assert.sameValue(rest.baz, 3);
assert.sameValue(Object.getOwnPropertyDescriptor(rest, "foo"), undefined);
verifyProperty(rest, "bar", {
enumerable: true,
writable: true,
configurable: true
});
verifyProperty(rest, "baz", {
enumerable: true,
writable: true,
configurable: true
});
assert.sameValue(result, vals);
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
// - src/dstr-assignment/obj-rest-computed-property.case // - src/dstr-assignment/obj-rest-computed-property.case
// - src/dstr-assignment/default/assignment-expr.template // - src/dstr-assignment/default/assignment-expr.template
/*--- /*---
description: Destructuring field can be a computed property, i.e it can be defined only at runtime. Rest operantion needs to skip these properties as well. (AssignmentExpression) description: Destructuring field can be a computed property, i.e it can be defined only at runtime. Rest operantion needs to skip these properties as well. (AssignmentExpression)
esid: sec-variable-statement-runtime-semantics-evaluation esid: sec-variable-statement-runtime-semantics-evaluation
es6id: 13.3.2.4 es6id: 13.3.2.4
features: [object-rest, destructuring-binding] features: [object-rest, destructuring-binding]
...@@ -18,6 +18,7 @@ info: | ...@@ -18,6 +18,7 @@ info: |
BindingPattern passing rval and undefined as arguments. BindingPattern passing rval and undefined as arguments.
---*/ ---*/
var a = "foo"; var a = "foo";
var b, rest;
var result; var result;
var vals = { foo: 1, bar: 2, baz: 3 }; var vals = { foo: 1, bar: 2, baz: 3 };
......
// This file was procedurally generated from the following sources:
// - src/dstr-assignment/obj-rest-computed-property-no-strict.case
// - src/dstr-assignment/default/for-of.template
/*---
description: Destructuring field can be a computed property, i.e it can be defined only at runtime. Rest operantion needs to skip these properties as well. (For..of statement)
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
es6id: 13.7.5.11
features: [object-rest, destructuring-binding]
flags: [generated, noStrict]
includes: [propertyHelper.js]
info: |
IterationStatement :
for ( LeftHandSideExpression of AssignmentExpression ) Statement
1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
AssignmentExpression, iterate).
2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
keyResult, assignment, labelSet).
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
[...]
4. If destructuring is true and if lhsKind is assignment, then
a. Assert: lhs is a LeftHandSideExpression.
b. Let assignmentPattern be the parse of the source text corresponding to
lhs using AssignmentPattern as the goal symbol.
[...]
---*/
var a = "foo";
var counter = 0;
for ({[a]:b, ...rest} of [{ foo: 1, bar: 2, baz: 3 }]) {
assert.sameValue(b, 1);
assert.sameValue(rest.bar, 2);
assert.sameValue(rest.baz, 3);
assert.sameValue(Object.getOwnPropertyDescriptor(rest, "foo"), undefined);
verifyProperty(rest, "bar", {
enumerable: true,
writable: true,
configurable: true
});
verifyProperty(rest, "baz", {
enumerable: true,
writable: true,
configurable: true
});
counter += 1;
}
assert.sameValue(counter, 1);
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
// - src/dstr-assignment/obj-rest-computed-property.case // - src/dstr-assignment/obj-rest-computed-property.case
// - src/dstr-assignment/default/for-of.template // - src/dstr-assignment/default/for-of.template
/*--- /*---
description: Destructuring field can be a computed property, i.e it can be defined only at runtime. Rest operantion needs to skip these properties as well. (For..of statement) description: Destructuring field can be a computed property, i.e it can be defined only at runtime. Rest operantion needs to skip these properties as well. (For..of statement)
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
es6id: 13.7.5.11 es6id: 13.7.5.11
features: [object-rest, destructuring-binding] features: [object-rest, destructuring-binding]
...@@ -27,6 +27,7 @@ info: | ...@@ -27,6 +27,7 @@ info: |
[...] [...]
---*/ ---*/
var a = "foo"; var a = "foo";
var b, rest;
var counter = 0; var counter = 0;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment