From 601688856ed0381badfd7bc1d23b7d1b9f702eb0 Mon Sep 17 00:00:00 2001 From: Rick Waldron Date: Tue, 22 Sep 2020 10:30:56 -0400 Subject: [PATCH] Generate tests --- ...obj-rest-non-string-computed-property-1.js | 39 +++++++++++++++ ...-rest-non-string-computed-property-1dot.js | 39 +++++++++++++++ ...rest-non-string-computed-property-1dot0.js | 39 +++++++++++++++ ...j-rest-non-string-computed-property-1e0.js | 39 +++++++++++++++ ...st-non-string-computed-property-array-1.js | 39 +++++++++++++++ ...-non-string-computed-property-array-1e0.js | 40 +++++++++++++++ ...t-non-string-computed-property-string-1.js | 39 +++++++++++++++ ...obj-rest-non-string-computed-property-1.js | 48 ++++++++++++++++++ ...-rest-non-string-computed-property-1dot.js | 48 ++++++++++++++++++ ...rest-non-string-computed-property-1dot0.js | 48 ++++++++++++++++++ ...j-rest-non-string-computed-property-1e0.js | 48 ++++++++++++++++++ ...st-non-string-computed-property-array-1.js | 48 ++++++++++++++++++ ...-non-string-computed-property-array-1e0.js | 49 +++++++++++++++++++ ...t-non-string-computed-property-string-1.js | 48 ++++++++++++++++++ 14 files changed, 611 insertions(+) create mode 100644 test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-1.js create mode 100644 test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-1dot.js create mode 100644 test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-1dot0.js create mode 100644 test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-1e0.js create mode 100644 test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-array-1.js create mode 100644 test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-array-1e0.js create mode 100644 test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-string-1.js create mode 100644 test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-1.js create mode 100644 test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-1dot.js create mode 100644 test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-1dot0.js create mode 100644 test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-1e0.js create mode 100644 test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-array-1.js create mode 100644 test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-array-1e0.js create mode 100644 test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-string-1.js diff --git a/test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-1.js b/test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-1.js new file mode 100644 index 0000000000..3595642149 --- /dev/null +++ b/test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-1.js @@ -0,0 +1,39 @@ +// This file was procedurally generated from the following sources: +// - src/dstr-assignment/obj-rest-non-string-computed-property-1.case +// - src/dstr-assignment/default/assignment-expr.template +/*--- +description: Destructuring field can be a non-string computed property, i.e it can be defined only at runtime. Rest operation needs to skip these properties as well. (AssignmentExpression) +esid: sec-variable-statement-runtime-semantics-evaluation +features: [object-rest, destructuring-binding] +flags: [generated] +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 = 1.; +var b, rest; + +var result; +var vals = {[a]: 1, bar: 2 }; + +result = {[a]:b, ...rest} = vals; + +assert.sameValue(b, 1); + +assert.sameValue(Object.getOwnPropertyDescriptor(rest, "1"), undefined); + +verifyProperty(rest, "bar", { + value: 2, + enumerable: true, + writable: true, + configurable: true +}); + + +assert.sameValue(result, vals); diff --git a/test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-1dot.js b/test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-1dot.js new file mode 100644 index 0000000000..ecce47821b --- /dev/null +++ b/test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-1dot.js @@ -0,0 +1,39 @@ +// This file was procedurally generated from the following sources: +// - src/dstr-assignment/obj-rest-non-string-computed-property-1dot.case +// - src/dstr-assignment/default/assignment-expr.template +/*--- +description: Destructuring field can be a non-string computed property, i.e it can be defined only at runtime. Rest operation needs to skip these properties as well. (AssignmentExpression) +esid: sec-variable-statement-runtime-semantics-evaluation +features: [object-rest, destructuring-binding] +flags: [generated] +includes: [compareArray.js, 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 = 1.; +var b, rest; + +var result; +var vals = {[a]: [1], bar: 2 }; + +result = {[a]:b, ...rest} = vals; + +assert.compareArray(b, [1]); + +assert.sameValue(Object.getOwnPropertyDescriptor(rest, "1"), undefined); + +verifyProperty(rest, "bar", { + value: 2, + enumerable: true, + writable: true, + configurable: true +}); + + +assert.sameValue(result, vals); diff --git a/test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-1dot0.js b/test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-1dot0.js new file mode 100644 index 0000000000..54b987d098 --- /dev/null +++ b/test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-1dot0.js @@ -0,0 +1,39 @@ +// This file was procedurally generated from the following sources: +// - src/dstr-assignment/obj-rest-non-string-computed-property-1dot0.case +// - src/dstr-assignment/default/assignment-expr.template +/*--- +description: Destructuring field can be a non-string computed property, i.e it can be defined only at runtime. Rest operation needs to skip these properties as well. (AssignmentExpression) +esid: sec-variable-statement-runtime-semantics-evaluation +features: [object-rest, destructuring-binding] +flags: [generated] +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 = 1.; +var b, rest; + +var result; +var vals = {[a]: 1.0, bar: 2 }; + +result = {[a]:b, ...rest} = vals; + +assert.sameValue(b, 1); + +assert.sameValue(Object.getOwnPropertyDescriptor(rest, "1"), undefined); + +verifyProperty(rest, "bar", { + value: 2, + enumerable: true, + writable: true, + configurable: true +}); + + +assert.sameValue(result, vals); diff --git a/test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-1e0.js b/test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-1e0.js new file mode 100644 index 0000000000..64169ce644 --- /dev/null +++ b/test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-1e0.js @@ -0,0 +1,39 @@ +// This file was procedurally generated from the following sources: +// - src/dstr-assignment/obj-rest-non-string-computed-property-1e0.case +// - src/dstr-assignment/default/assignment-expr.template +/*--- +description: Destructuring field can be a non-string computed property, i.e it can be defined only at runtime. Rest operation needs to skip these properties as well. (AssignmentExpression) +esid: sec-variable-statement-runtime-semantics-evaluation +features: [object-rest, destructuring-binding] +flags: [generated] +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 = 1.; +var b, rest; + +var result; +var vals = {[a]: 1e0, bar: 2 }; + +result = {[a]:b, ...rest} = vals; + +assert.sameValue(b, 1); + +assert.sameValue(Object.getOwnPropertyDescriptor(rest, "1"), undefined); + +verifyProperty(rest, "bar", { + value: 2, + enumerable: true, + writable: true, + configurable: true +}); + + +assert.sameValue(result, vals); diff --git a/test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-array-1.js b/test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-array-1.js new file mode 100644 index 0000000000..91170c60b7 --- /dev/null +++ b/test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-array-1.js @@ -0,0 +1,39 @@ +// This file was procedurally generated from the following sources: +// - src/dstr-assignment/obj-rest-non-string-computed-property-array-1.case +// - src/dstr-assignment/default/assignment-expr.template +/*--- +description: Destructuring field can be a non-string computed property, i.e it can be defined only at runtime. Rest operation needs to skip these properties as well. (AssignmentExpression) +esid: sec-variable-statement-runtime-semantics-evaluation +features: [object-rest, destructuring-binding] +flags: [generated] +includes: [compareArray.js, 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 = 1.; +var b, rest; + +var result; +var vals = {[a]: [1], bar: 2 }; + +result = {[a]:b, ...rest} = vals; + +assert.compareArray(b, [1]); + +assert.sameValue(Object.getOwnPropertyDescriptor(rest, "1"), undefined); + +verifyProperty(rest, "bar", { + value: 2, + enumerable: true, + writable: true, + configurable: true +}); + + +assert.sameValue(result, vals); diff --git a/test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-array-1e0.js b/test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-array-1e0.js new file mode 100644 index 0000000000..23086e516a --- /dev/null +++ b/test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-array-1e0.js @@ -0,0 +1,40 @@ +// This file was procedurally generated from the following sources: +// - src/dstr-assignment/obj-rest-non-string-computed-property-array-1e0.case +// - src/dstr-assignment/default/assignment-expr.template +/*--- +description: Destructuring field can be a non-string computed property, i.e it can be defined only at runtime. Rest operation needs to skip these properties as well. (AssignmentExpression) +esid: sec-variable-statement-runtime-semantics-evaluation +features: [object-rest, destructuring-binding] +flags: [generated] +includes: [compareArray.js, 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 = 1.; +var b, rest; + +var result; +var vals = {[a]: [1e0], bar: 2 }; + +result = {[a]:b, ...rest} = vals; + +assert.compareArray(b, [1]); + + +assert.sameValue(Object.getOwnPropertyDescriptor(rest, "1"), undefined); + +verifyProperty(rest, "bar", { + value: 2, + enumerable: true, + writable: true, + configurable: true +}); + + +assert.sameValue(result, vals); diff --git a/test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-string-1.js b/test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-string-1.js new file mode 100644 index 0000000000..f6a28e4b07 --- /dev/null +++ b/test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-string-1.js @@ -0,0 +1,39 @@ +// This file was procedurally generated from the following sources: +// - src/dstr-assignment/obj-rest-non-string-computed-property-string-1.case +// - src/dstr-assignment/default/assignment-expr.template +/*--- +description: Destructuring field can be a non-string computed property, i.e it can be defined only at runtime. Rest operation needs to skip these properties as well. (AssignmentExpression) +esid: sec-variable-statement-runtime-semantics-evaluation +features: [object-rest, destructuring-binding] +flags: [generated] +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 = 1.; +var b, rest; + +var result; +var vals = {[a]: "1", bar: 2 }; + +result = {[a]:b, ...rest} = vals; + +assert.sameValue(b, "1"); + +assert.sameValue(Object.getOwnPropertyDescriptor(rest, "1"), undefined); + +verifyProperty(rest, "bar", { + value: 2, + enumerable: true, + writable: true, + configurable: true +}); + + +assert.sameValue(result, vals); diff --git a/test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-1.js b/test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-1.js new file mode 100644 index 0000000000..b81d365984 --- /dev/null +++ b/test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-1.js @@ -0,0 +1,48 @@ +// This file was procedurally generated from the following sources: +// - src/dstr-assignment/obj-rest-non-string-computed-property-1.case +// - src/dstr-assignment/default/for-of.template +/*--- +description: Destructuring field can be a non-string computed property, i.e it can be defined only at runtime. Rest operation needs to skip these properties as well. (For..of statement) +esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation +features: [object-rest, destructuring-binding] +flags: [generated] +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 = 1.; +var b, rest; + +var counter = 0; + +for ({[a]:b, ...rest} of [{[a]: 1, bar: 2 }]) { + assert.sameValue(b, 1); + + assert.sameValue(Object.getOwnPropertyDescriptor(rest, "1"), undefined); + + verifyProperty(rest, "bar", { + value: 2, + enumerable: true, + writable: true, + configurable: true + }); + + counter += 1; +} + +assert.sameValue(counter, 1); diff --git a/test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-1dot.js b/test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-1dot.js new file mode 100644 index 0000000000..250bd8e4ec --- /dev/null +++ b/test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-1dot.js @@ -0,0 +1,48 @@ +// This file was procedurally generated from the following sources: +// - src/dstr-assignment/obj-rest-non-string-computed-property-1dot.case +// - src/dstr-assignment/default/for-of.template +/*--- +description: Destructuring field can be a non-string computed property, i.e it can be defined only at runtime. Rest operation needs to skip these properties as well. (For..of statement) +esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation +features: [object-rest, destructuring-binding] +flags: [generated] +includes: [compareArray.js, 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 = 1.; +var b, rest; + +var counter = 0; + +for ({[a]:b, ...rest} of [{[a]: [1], bar: 2 }]) { + assert.compareArray(b, [1]); + + assert.sameValue(Object.getOwnPropertyDescriptor(rest, "1"), undefined); + + verifyProperty(rest, "bar", { + value: 2, + enumerable: true, + writable: true, + configurable: true + }); + + counter += 1; +} + +assert.sameValue(counter, 1); diff --git a/test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-1dot0.js b/test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-1dot0.js new file mode 100644 index 0000000000..b9c140969a --- /dev/null +++ b/test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-1dot0.js @@ -0,0 +1,48 @@ +// This file was procedurally generated from the following sources: +// - src/dstr-assignment/obj-rest-non-string-computed-property-1dot0.case +// - src/dstr-assignment/default/for-of.template +/*--- +description: Destructuring field can be a non-string computed property, i.e it can be defined only at runtime. Rest operation needs to skip these properties as well. (For..of statement) +esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation +features: [object-rest, destructuring-binding] +flags: [generated] +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 = 1.; +var b, rest; + +var counter = 0; + +for ({[a]:b, ...rest} of [{[a]: 1.0, bar: 2 }]) { + assert.sameValue(b, 1); + + assert.sameValue(Object.getOwnPropertyDescriptor(rest, "1"), undefined); + + verifyProperty(rest, "bar", { + value: 2, + enumerable: true, + writable: true, + configurable: true + }); + + counter += 1; +} + +assert.sameValue(counter, 1); diff --git a/test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-1e0.js b/test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-1e0.js new file mode 100644 index 0000000000..627e20548a --- /dev/null +++ b/test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-1e0.js @@ -0,0 +1,48 @@ +// This file was procedurally generated from the following sources: +// - src/dstr-assignment/obj-rest-non-string-computed-property-1e0.case +// - src/dstr-assignment/default/for-of.template +/*--- +description: Destructuring field can be a non-string computed property, i.e it can be defined only at runtime. Rest operation needs to skip these properties as well. (For..of statement) +esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation +features: [object-rest, destructuring-binding] +flags: [generated] +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 = 1.; +var b, rest; + +var counter = 0; + +for ({[a]:b, ...rest} of [{[a]: 1e0, bar: 2 }]) { + assert.sameValue(b, 1); + + assert.sameValue(Object.getOwnPropertyDescriptor(rest, "1"), undefined); + + verifyProperty(rest, "bar", { + value: 2, + enumerable: true, + writable: true, + configurable: true + }); + + counter += 1; +} + +assert.sameValue(counter, 1); diff --git a/test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-array-1.js b/test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-array-1.js new file mode 100644 index 0000000000..eefd8fee9f --- /dev/null +++ b/test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-array-1.js @@ -0,0 +1,48 @@ +// This file was procedurally generated from the following sources: +// - src/dstr-assignment/obj-rest-non-string-computed-property-array-1.case +// - src/dstr-assignment/default/for-of.template +/*--- +description: Destructuring field can be a non-string computed property, i.e it can be defined only at runtime. Rest operation needs to skip these properties as well. (For..of statement) +esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation +features: [object-rest, destructuring-binding] +flags: [generated] +includes: [compareArray.js, 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 = 1.; +var b, rest; + +var counter = 0; + +for ({[a]:b, ...rest} of [{[a]: [1], bar: 2 }]) { + assert.compareArray(b, [1]); + + assert.sameValue(Object.getOwnPropertyDescriptor(rest, "1"), undefined); + + verifyProperty(rest, "bar", { + value: 2, + enumerable: true, + writable: true, + configurable: true + }); + + counter += 1; +} + +assert.sameValue(counter, 1); diff --git a/test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-array-1e0.js b/test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-array-1e0.js new file mode 100644 index 0000000000..b0ec1033b9 --- /dev/null +++ b/test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-array-1e0.js @@ -0,0 +1,49 @@ +// This file was procedurally generated from the following sources: +// - src/dstr-assignment/obj-rest-non-string-computed-property-array-1e0.case +// - src/dstr-assignment/default/for-of.template +/*--- +description: Destructuring field can be a non-string computed property, i.e it can be defined only at runtime. Rest operation needs to skip these properties as well. (For..of statement) +esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation +features: [object-rest, destructuring-binding] +flags: [generated] +includes: [compareArray.js, 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 = 1.; +var b, rest; + +var counter = 0; + +for ({[a]:b, ...rest} of [{[a]: [1e0], bar: 2 }]) { + assert.compareArray(b, [1]); + + + assert.sameValue(Object.getOwnPropertyDescriptor(rest, "1"), undefined); + + verifyProperty(rest, "bar", { + value: 2, + enumerable: true, + writable: true, + configurable: true + }); + + counter += 1; +} + +assert.sameValue(counter, 1); diff --git a/test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-string-1.js b/test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-string-1.js new file mode 100644 index 0000000000..cb82080a02 --- /dev/null +++ b/test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-string-1.js @@ -0,0 +1,48 @@ +// This file was procedurally generated from the following sources: +// - src/dstr-assignment/obj-rest-non-string-computed-property-string-1.case +// - src/dstr-assignment/default/for-of.template +/*--- +description: Destructuring field can be a non-string computed property, i.e it can be defined only at runtime. Rest operation needs to skip these properties as well. (For..of statement) +esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation +features: [object-rest, destructuring-binding] +flags: [generated] +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 = 1.; +var b, rest; + +var counter = 0; + +for ({[a]:b, ...rest} of [{[a]: "1", bar: 2 }]) { + assert.sameValue(b, "1"); + + assert.sameValue(Object.getOwnPropertyDescriptor(rest, "1"), undefined); + + verifyProperty(rest, "bar", { + value: 2, + enumerable: true, + writable: true, + configurable: true + }); + + counter += 1; +} + +assert.sameValue(counter, 1);