Generate tests

This commit is contained in:
Leo Balter 2019-08-01 14:32:04 -04:00 committed by Rick Waldron
parent 8e5820fce7
commit ca9a3fde50
12 changed files with 930 additions and 0 deletions

View File

@ -0,0 +1,69 @@
// This file was procedurally generated from the following sources:
// - src/dstr-assignment/array-elem-put-obj-literal-prop-ref-init-active.case
// - src/dstr-assignment/default/assignment-expr.template
/*---
description: The DestructuringAssignmentTarget of an AssignmentElement can extend to LHSExpressions if it is neither an ObjectLiteral nor an ArrayLiteral and its AssignmentTargetTyp is simple. Using MemberExpression (ObjLiteral + identifier) with activated initializer. (AssignmentExpression)
esid: sec-variable-statement-runtime-semantics-evaluation
es6id: 13.3.2.4
features: [destructuring-binding]
flags: [generated]
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.
Syntax
AssignmentPattern : ArrayAssignmentPattern
ArrayAssignmentPattern : [ AssignmentElementList ]
AssignmentElementList : AssignmentElisionElement
AssignmentElisionElement : Elision_opt AssignmentElement
AssignmentElement : DestructuringAssignmentTarget Initializer_opt
DestructuringAssignmentTarget : LeftHandSideExpression
Static Semantics: Early Errors
DestructuringAssignmentTarget : LeftHandSideExpression
- It is a Syntax Error if LeftHandSideExpression is either an ObjectLiteral or an ArrayLiteral and if LeftHandSideExpression is not covering an AssignmentPattern.
- It is a Syntax Error if LeftHandSideExpression is neither an ObjectLiteral nor an ArrayLiteral and AssignmentTargetType(LeftHandSideExpression) is not simple.
Runtime Semantics: DestructuringAssignmentEvaluation
ArrayAssignmentPattern : [ AssignmentElementList ]
1. Let iteratorRecord be ? GetIterator(value).
2. Let result be IteratorDestructuringAssignmentEvaluation of AssignmentElementList with argument iteratorRecord.
3. If iteratorRecord.[[Done]] is false, return ? IteratorClose(iteratorRecord, result).
4. Return result.
Runtime Semantics: IteratorDestructuringAssignmentEvaluation
AssignmentElement : DestructuringAssignmentTarget Initializer
1. If DestructuringAssignmentTarget is neither an ObjectLiteral nor an ArrayLiteral, then
a. Let lref be the result of evaluating DestructuringAssignmentTarget.
...
7. Return ? PutValue(lref, v).
---*/
var x, setValue;
var result;
var vals = [undefined];
result = [{
get y() {
throw new Test262Error('The property should not be accessed.');
},
set y(val) {
setValue = val;
}
}.y = 42] = vals;
assert.sameValue(setValue, 42);
assert.sameValue(result, vals);

View File

@ -0,0 +1,69 @@
// This file was procedurally generated from the following sources:
// - src/dstr-assignment/array-elem-put-obj-literal-prop-ref-init.case
// - src/dstr-assignment/default/assignment-expr.template
/*---
description: The DestructuringAssignmentTarget of an AssignmentElement can extend to LHSExpressions if it is neither an ObjectLiteral nor an ArrayLiteral and its AssignmentTargetTyp is simple. Using MemberExpression (ObjLiteral + identifier) with initializer. (AssignmentExpression)
esid: sec-variable-statement-runtime-semantics-evaluation
es6id: 13.3.2.4
features: [destructuring-binding]
flags: [generated]
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.
Syntax
AssignmentPattern : ArrayAssignmentPattern
ArrayAssignmentPattern : [ AssignmentElementList ]
AssignmentElementList : AssignmentElisionElement
AssignmentElisionElement : Elision_opt AssignmentElement
AssignmentElement : DestructuringAssignmentTarget Initializer_opt
DestructuringAssignmentTarget : LeftHandSideExpression
Static Semantics: Early Errors
DestructuringAssignmentTarget : LeftHandSideExpression
- It is a Syntax Error if LeftHandSideExpression is either an ObjectLiteral or an ArrayLiteral and if LeftHandSideExpression is not covering an AssignmentPattern.
- It is a Syntax Error if LeftHandSideExpression is neither an ObjectLiteral nor an ArrayLiteral and AssignmentTargetType(LeftHandSideExpression) is not simple.
Runtime Semantics: DestructuringAssignmentEvaluation
ArrayAssignmentPattern : [ AssignmentElementList ]
1. Let iteratorRecord be ? GetIterator(value).
2. Let result be IteratorDestructuringAssignmentEvaluation of AssignmentElementList with argument iteratorRecord.
3. If iteratorRecord.[[Done]] is false, return ? IteratorClose(iteratorRecord, result).
4. Return result.
Runtime Semantics: IteratorDestructuringAssignmentEvaluation
AssignmentElement : DestructuringAssignmentTarget Initializer
1. If DestructuringAssignmentTarget is neither an ObjectLiteral nor an ArrayLiteral, then
a. Let lref be the result of evaluating DestructuringAssignmentTarget.
...
7. Return ? PutValue(lref, v).
---*/
var x, setValue;
var result;
var vals = [23];
result = [{
get y() {
throw new Test262Error('The property should not be accessed.');
},
set y(val) {
setValue = val;
}
}.y = 42] = vals;
assert.sameValue(setValue, 23);
assert.sameValue(result, vals);

View File

@ -0,0 +1,69 @@
// This file was procedurally generated from the following sources:
// - src/dstr-assignment/array-elem-put-obj-literal-prop-ref.case
// - src/dstr-assignment/default/assignment-expr.template
/*---
description: The DestructuringAssignmentTarget of an AssignmentElement can extend to LHSExpressions if it is neither an ObjectLiteral nor an ArrayLiteral and its AssignmentTargetTyp is simple. Using MemberExpression (ObjLiteral + identifier). (AssignmentExpression)
esid: sec-variable-statement-runtime-semantics-evaluation
es6id: 13.3.2.4
features: [destructuring-binding]
flags: [generated]
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.
Syntax
AssignmentPattern : ArrayAssignmentPattern
ArrayAssignmentPattern : [ AssignmentElementList ]
AssignmentElementList : AssignmentElisionElement
AssignmentElisionElement : Elision_opt AssignmentElement
AssignmentElement : DestructuringAssignmentTarget Initializer_opt
DestructuringAssignmentTarget : LeftHandSideExpression
Static Semantics: Early Errors
DestructuringAssignmentTarget : LeftHandSideExpression
- It is a Syntax Error if LeftHandSideExpression is either an ObjectLiteral or an ArrayLiteral and if LeftHandSideExpression is not covering an AssignmentPattern.
- It is a Syntax Error if LeftHandSideExpression is neither an ObjectLiteral nor an ArrayLiteral and AssignmentTargetType(LeftHandSideExpression) is not simple.
Runtime Semantics: DestructuringAssignmentEvaluation
ArrayAssignmentPattern : [ AssignmentElementList ]
1. Let iteratorRecord be ? GetIterator(value).
2. Let result be IteratorDestructuringAssignmentEvaluation of AssignmentElementList with argument iteratorRecord.
3. If iteratorRecord.[[Done]] is false, return ? IteratorClose(iteratorRecord, result).
4. Return result.
Runtime Semantics: IteratorDestructuringAssignmentEvaluation
AssignmentElement : DestructuringAssignmentTarget Initializer
1. If DestructuringAssignmentTarget is neither an ObjectLiteral nor an ArrayLiteral, then
a. Let lref be the result of evaluating DestructuringAssignmentTarget.
...
7. Return ? PutValue(lref, v).
---*/
var x, setValue;
var result;
var vals = [23];
result = [{
get y() {
throw new Test262Error('The property should not be accessed.');
},
set y(val) {
setValue = val;
}
}.y] = vals;
assert.sameValue(setValue, 23);
assert.sameValue(result, vals);

View File

@ -0,0 +1,77 @@
// This file was procedurally generated from the following sources:
// - src/dstr-assignment/obj-prop-elem-target-obj-literal-prop-ref-init-active.case
// - src/dstr-assignment/default/assignment-expr.template
/*---
description: The DestructuringAssignmentTarget of an AssignmentElement can extend to LHSExpressions if it is neither an ObjectLiteral nor an ArrayLiteral and its AssignmentTargetTyp is simple. Using MemberExpression (ObjLiteral + identifier) with active initializer. (AssignmentExpression)
esid: sec-variable-statement-runtime-semantics-evaluation
es6id: 13.3.2.4
features: [destructuring-binding]
flags: [generated]
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.
Syntax
AssignmentPattern : ObjectAssignmentPattern
ObjectAssignmentPattern : { AssignmentPropertyList }
AssignmentPropertyList : AssignmentProperty
AssignmentProperty : PropertyName : AssignmentElement
AssignmentElement : DestructuringAssignmentTarget Initializer_opt
DestructuringAssignmentTarget : LeftHandSideExpression
Static Semantics: Early Errors
DestructuringAssignmentTarget : LeftHandSideExpression
- It is a Syntax Error if LeftHandSideExpression is either an ObjectLiteral or an ArrayLiteral and if LeftHandSideExpression is not covering an AssignmentPattern.
- It is a Syntax Error if LeftHandSideExpression is neither an ObjectLiteral nor an ArrayLiteral and AssignmentTargetType(LeftHandSideExpression) is not simple.
Runtime Semantics: DestructuringAssignmentEvaluation
ObjectAssignmentPattern : { AssignmentPropertyList }
1. Perform ? RequireObjectCoercible(value).
2. Perform ? PropertyDestructuringAssignmentEvaluation for AssignmentPropertyList using value as the argument.
3. Return NormalCompletion(empty).
Runtime Semantics: PropertyDestructuringAssignmentEvaluation
AssignmentProperty : PropertyName : AssignmentElement
1. Let name be the result of evaluating PropertyName.
2. ReturnIfAbrupt(name).
3. Perform ? KeyedDestructuringAssignmentEvaluation of AssignmentElement with value and name as the arguments.
4. Return a new List containing name.
Runtime Semantics: KeyedDestructuringAssignmentEvaluation
AssignmentElement : DestructuringAssignmentTarget Initializer
1. If DestructuringAssignmentTarget is neither an ObjectLiteral nor an ArrayLiteral, then
a. Let lref be the result of evaluating DestructuringAssignmentTarget.
...
---*/
var setValue;
var result;
var vals = {x: undefined};
result = { x: {
get y() {
throw new Test262Error('The property should not be accessed.');
},
set y(val) {
setValue = val;
}
}.y = 42} = vals;
assert.sameValue(setValue, 42);
assert.sameValue(result, vals);

View File

@ -0,0 +1,77 @@
// This file was procedurally generated from the following sources:
// - src/dstr-assignment/obj-prop-elem-target-obj-literal-prop-ref-init.case
// - src/dstr-assignment/default/assignment-expr.template
/*---
description: The DestructuringAssignmentTarget of an AssignmentElement can extend to LHSExpressions if it is neither an ObjectLiteral nor an ArrayLiteral and its AssignmentTargetTyp is simple. Using MemberExpression (ObjLiteral + identifier) with initializer. (AssignmentExpression)
esid: sec-variable-statement-runtime-semantics-evaluation
es6id: 13.3.2.4
features: [destructuring-binding]
flags: [generated]
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.
Syntax
AssignmentPattern : ObjectAssignmentPattern
ObjectAssignmentPattern : { AssignmentPropertyList }
AssignmentPropertyList : AssignmentProperty
AssignmentProperty : PropertyName : AssignmentElement
AssignmentElement : DestructuringAssignmentTarget Initializer_opt
DestructuringAssignmentTarget : LeftHandSideExpression
Static Semantics: Early Errors
DestructuringAssignmentTarget : LeftHandSideExpression
- It is a Syntax Error if LeftHandSideExpression is either an ObjectLiteral or an ArrayLiteral and if LeftHandSideExpression is not covering an AssignmentPattern.
- It is a Syntax Error if LeftHandSideExpression is neither an ObjectLiteral nor an ArrayLiteral and AssignmentTargetType(LeftHandSideExpression) is not simple.
Runtime Semantics: DestructuringAssignmentEvaluation
ObjectAssignmentPattern : { AssignmentPropertyList }
1. Perform ? RequireObjectCoercible(value).
2. Perform ? PropertyDestructuringAssignmentEvaluation for AssignmentPropertyList using value as the argument.
3. Return NormalCompletion(empty).
Runtime Semantics: PropertyDestructuringAssignmentEvaluation
AssignmentProperty : PropertyName : AssignmentElement
1. Let name be the result of evaluating PropertyName.
2. ReturnIfAbrupt(name).
3. Perform ? KeyedDestructuringAssignmentEvaluation of AssignmentElement with value and name as the arguments.
4. Return a new List containing name.
Runtime Semantics: KeyedDestructuringAssignmentEvaluation
AssignmentElement : DestructuringAssignmentTarget Initializer
1. If DestructuringAssignmentTarget is neither an ObjectLiteral nor an ArrayLiteral, then
a. Let lref be the result of evaluating DestructuringAssignmentTarget.
...
---*/
var setValue;
var result;
var vals = {x: 23};
result = { x: {
get y() {
throw new Test262Error('The property should not be accessed.');
},
set y(val) {
setValue = val;
}
}.y = 42} = vals;
assert.sameValue(setValue, 23);
assert.sameValue(result, vals);

View File

@ -0,0 +1,77 @@
// This file was procedurally generated from the following sources:
// - src/dstr-assignment/obj-prop-elem-target-obj-literal-prop-ref.case
// - src/dstr-assignment/default/assignment-expr.template
/*---
description: The DestructuringAssignmentTarget of an AssignmentElement can extend to LHSExpressions if it is neither an ObjectLiteral nor an ArrayLiteral and its AssignmentTargetTyp is simple. Using MemberExpression (ObjLiteral + identifier). (AssignmentExpression)
esid: sec-variable-statement-runtime-semantics-evaluation
es6id: 13.3.2.4
features: [destructuring-binding]
flags: [generated]
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.
Syntax
AssignmentPattern : ObjectAssignmentPattern
ObjectAssignmentPattern : { AssignmentPropertyList }
AssignmentPropertyList : AssignmentProperty
AssignmentProperty : PropertyName : AssignmentElement
AssignmentElement : DestructuringAssignmentTarget Initializer_opt
DestructuringAssignmentTarget : LeftHandSideExpression
Static Semantics: Early Errors
DestructuringAssignmentTarget : LeftHandSideExpression
- It is a Syntax Error if LeftHandSideExpression is either an ObjectLiteral or an ArrayLiteral and if LeftHandSideExpression is not covering an AssignmentPattern.
- It is a Syntax Error if LeftHandSideExpression is neither an ObjectLiteral nor an ArrayLiteral and AssignmentTargetType(LeftHandSideExpression) is not simple.
Runtime Semantics: DestructuringAssignmentEvaluation
ObjectAssignmentPattern : { AssignmentPropertyList }
1. Perform ? RequireObjectCoercible(value).
2. Perform ? PropertyDestructuringAssignmentEvaluation for AssignmentPropertyList using value as the argument.
3. Return NormalCompletion(empty).
Runtime Semantics: PropertyDestructuringAssignmentEvaluation
AssignmentProperty : PropertyName : AssignmentElement
1. Let name be the result of evaluating PropertyName.
2. ReturnIfAbrupt(name).
3. Perform ? KeyedDestructuringAssignmentEvaluation of AssignmentElement with value and name as the arguments.
4. Return a new List containing name.
Runtime Semantics: KeyedDestructuringAssignmentEvaluation
AssignmentElement : DestructuringAssignmentTarget Initializer
1. If DestructuringAssignmentTarget is neither an ObjectLiteral nor an ArrayLiteral, then
a. Let lref be the result of evaluating DestructuringAssignmentTarget.
...
---*/
var setValue;
var result;
var vals = {x: 23};
result = { x: {
get y() {
throw new Test262Error('The property should not be accessed.');
},
set y(val) {
setValue = val;
}
}.y} = vals;
assert.sameValue(setValue, 23);
assert.sameValue(result, vals);

View File

@ -0,0 +1,78 @@
// This file was procedurally generated from the following sources:
// - src/dstr-assignment/array-elem-put-obj-literal-prop-ref-init-active.case
// - src/dstr-assignment/default/for-of.template
/*---
description: The DestructuringAssignmentTarget of an AssignmentElement can extend to LHSExpressions if it is neither an ObjectLiteral nor an ArrayLiteral and its AssignmentTargetTyp is simple. Using MemberExpression (ObjLiteral + identifier) with activated initializer. (For..of statement)
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
es6id: 13.7.5.11
features: [destructuring-binding]
flags: [generated]
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.
[...]
Syntax
AssignmentPattern : ArrayAssignmentPattern
ArrayAssignmentPattern : [ AssignmentElementList ]
AssignmentElementList : AssignmentElisionElement
AssignmentElisionElement : Elision_opt AssignmentElement
AssignmentElement : DestructuringAssignmentTarget Initializer_opt
DestructuringAssignmentTarget : LeftHandSideExpression
Static Semantics: Early Errors
DestructuringAssignmentTarget : LeftHandSideExpression
- It is a Syntax Error if LeftHandSideExpression is either an ObjectLiteral or an ArrayLiteral and if LeftHandSideExpression is not covering an AssignmentPattern.
- It is a Syntax Error if LeftHandSideExpression is neither an ObjectLiteral nor an ArrayLiteral and AssignmentTargetType(LeftHandSideExpression) is not simple.
Runtime Semantics: DestructuringAssignmentEvaluation
ArrayAssignmentPattern : [ AssignmentElementList ]
1. Let iteratorRecord be ? GetIterator(value).
2. Let result be IteratorDestructuringAssignmentEvaluation of AssignmentElementList with argument iteratorRecord.
3. If iteratorRecord.[[Done]] is false, return ? IteratorClose(iteratorRecord, result).
4. Return result.
Runtime Semantics: IteratorDestructuringAssignmentEvaluation
AssignmentElement : DestructuringAssignmentTarget Initializer
1. If DestructuringAssignmentTarget is neither an ObjectLiteral nor an ArrayLiteral, then
a. Let lref be the result of evaluating DestructuringAssignmentTarget.
...
7. Return ? PutValue(lref, v).
---*/
var x, setValue;
var counter = 0;
for ([{
get y() {
throw new Test262Error('The property should not be accessed.');
},
set y(val) {
setValue = val;
}
}.y = 42] of [[undefined]]) {
assert.sameValue(setValue, 42);
counter += 1;
}
assert.sameValue(counter, 1);

View File

@ -0,0 +1,78 @@
// This file was procedurally generated from the following sources:
// - src/dstr-assignment/array-elem-put-obj-literal-prop-ref-init.case
// - src/dstr-assignment/default/for-of.template
/*---
description: The DestructuringAssignmentTarget of an AssignmentElement can extend to LHSExpressions if it is neither an ObjectLiteral nor an ArrayLiteral and its AssignmentTargetTyp is simple. Using MemberExpression (ObjLiteral + identifier) with initializer. (For..of statement)
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
es6id: 13.7.5.11
features: [destructuring-binding]
flags: [generated]
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.
[...]
Syntax
AssignmentPattern : ArrayAssignmentPattern
ArrayAssignmentPattern : [ AssignmentElementList ]
AssignmentElementList : AssignmentElisionElement
AssignmentElisionElement : Elision_opt AssignmentElement
AssignmentElement : DestructuringAssignmentTarget Initializer_opt
DestructuringAssignmentTarget : LeftHandSideExpression
Static Semantics: Early Errors
DestructuringAssignmentTarget : LeftHandSideExpression
- It is a Syntax Error if LeftHandSideExpression is either an ObjectLiteral or an ArrayLiteral and if LeftHandSideExpression is not covering an AssignmentPattern.
- It is a Syntax Error if LeftHandSideExpression is neither an ObjectLiteral nor an ArrayLiteral and AssignmentTargetType(LeftHandSideExpression) is not simple.
Runtime Semantics: DestructuringAssignmentEvaluation
ArrayAssignmentPattern : [ AssignmentElementList ]
1. Let iteratorRecord be ? GetIterator(value).
2. Let result be IteratorDestructuringAssignmentEvaluation of AssignmentElementList with argument iteratorRecord.
3. If iteratorRecord.[[Done]] is false, return ? IteratorClose(iteratorRecord, result).
4. Return result.
Runtime Semantics: IteratorDestructuringAssignmentEvaluation
AssignmentElement : DestructuringAssignmentTarget Initializer
1. If DestructuringAssignmentTarget is neither an ObjectLiteral nor an ArrayLiteral, then
a. Let lref be the result of evaluating DestructuringAssignmentTarget.
...
7. Return ? PutValue(lref, v).
---*/
var x, setValue;
var counter = 0;
for ([{
get y() {
throw new Test262Error('The property should not be accessed.');
},
set y(val) {
setValue = val;
}
}.y = 42] of [[23]]) {
assert.sameValue(setValue, 23);
counter += 1;
}
assert.sameValue(counter, 1);

View File

@ -0,0 +1,78 @@
// This file was procedurally generated from the following sources:
// - src/dstr-assignment/array-elem-put-obj-literal-prop-ref.case
// - src/dstr-assignment/default/for-of.template
/*---
description: The DestructuringAssignmentTarget of an AssignmentElement can extend to LHSExpressions if it is neither an ObjectLiteral nor an ArrayLiteral and its AssignmentTargetTyp is simple. Using MemberExpression (ObjLiteral + identifier). (For..of statement)
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
es6id: 13.7.5.11
features: [destructuring-binding]
flags: [generated]
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.
[...]
Syntax
AssignmentPattern : ArrayAssignmentPattern
ArrayAssignmentPattern : [ AssignmentElementList ]
AssignmentElementList : AssignmentElisionElement
AssignmentElisionElement : Elision_opt AssignmentElement
AssignmentElement : DestructuringAssignmentTarget Initializer_opt
DestructuringAssignmentTarget : LeftHandSideExpression
Static Semantics: Early Errors
DestructuringAssignmentTarget : LeftHandSideExpression
- It is a Syntax Error if LeftHandSideExpression is either an ObjectLiteral or an ArrayLiteral and if LeftHandSideExpression is not covering an AssignmentPattern.
- It is a Syntax Error if LeftHandSideExpression is neither an ObjectLiteral nor an ArrayLiteral and AssignmentTargetType(LeftHandSideExpression) is not simple.
Runtime Semantics: DestructuringAssignmentEvaluation
ArrayAssignmentPattern : [ AssignmentElementList ]
1. Let iteratorRecord be ? GetIterator(value).
2. Let result be IteratorDestructuringAssignmentEvaluation of AssignmentElementList with argument iteratorRecord.
3. If iteratorRecord.[[Done]] is false, return ? IteratorClose(iteratorRecord, result).
4. Return result.
Runtime Semantics: IteratorDestructuringAssignmentEvaluation
AssignmentElement : DestructuringAssignmentTarget Initializer
1. If DestructuringAssignmentTarget is neither an ObjectLiteral nor an ArrayLiteral, then
a. Let lref be the result of evaluating DestructuringAssignmentTarget.
...
7. Return ? PutValue(lref, v).
---*/
var x, setValue;
var counter = 0;
for ([{
get y() {
throw new Test262Error('The property should not be accessed.');
},
set y(val) {
setValue = val;
}
}.y] of [[23]]) {
assert.sameValue(setValue, 23);
counter += 1;
}
assert.sameValue(counter, 1);

View File

@ -0,0 +1,86 @@
// This file was procedurally generated from the following sources:
// - src/dstr-assignment/obj-prop-elem-target-obj-literal-prop-ref-init-active.case
// - src/dstr-assignment/default/for-of.template
/*---
description: The DestructuringAssignmentTarget of an AssignmentElement can extend to LHSExpressions if it is neither an ObjectLiteral nor an ArrayLiteral and its AssignmentTargetTyp is simple. Using MemberExpression (ObjLiteral + identifier) with active initializer. (For..of statement)
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
es6id: 13.7.5.11
features: [destructuring-binding]
flags: [generated]
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.
[...]
Syntax
AssignmentPattern : ObjectAssignmentPattern
ObjectAssignmentPattern : { AssignmentPropertyList }
AssignmentPropertyList : AssignmentProperty
AssignmentProperty : PropertyName : AssignmentElement
AssignmentElement : DestructuringAssignmentTarget Initializer_opt
DestructuringAssignmentTarget : LeftHandSideExpression
Static Semantics: Early Errors
DestructuringAssignmentTarget : LeftHandSideExpression
- It is a Syntax Error if LeftHandSideExpression is either an ObjectLiteral or an ArrayLiteral and if LeftHandSideExpression is not covering an AssignmentPattern.
- It is a Syntax Error if LeftHandSideExpression is neither an ObjectLiteral nor an ArrayLiteral and AssignmentTargetType(LeftHandSideExpression) is not simple.
Runtime Semantics: DestructuringAssignmentEvaluation
ObjectAssignmentPattern : { AssignmentPropertyList }
1. Perform ? RequireObjectCoercible(value).
2. Perform ? PropertyDestructuringAssignmentEvaluation for AssignmentPropertyList using value as the argument.
3. Return NormalCompletion(empty).
Runtime Semantics: PropertyDestructuringAssignmentEvaluation
AssignmentProperty : PropertyName : AssignmentElement
1. Let name be the result of evaluating PropertyName.
2. ReturnIfAbrupt(name).
3. Perform ? KeyedDestructuringAssignmentEvaluation of AssignmentElement with value and name as the arguments.
4. Return a new List containing name.
Runtime Semantics: KeyedDestructuringAssignmentEvaluation
AssignmentElement : DestructuringAssignmentTarget Initializer
1. If DestructuringAssignmentTarget is neither an ObjectLiteral nor an ArrayLiteral, then
a. Let lref be the result of evaluating DestructuringAssignmentTarget.
...
---*/
var setValue;
var counter = 0;
for ({ x: {
get y() {
throw new Test262Error('The property should not be accessed.');
},
set y(val) {
setValue = val;
}
}.y = 42} of [{x: undefined}]) {
assert.sameValue(setValue, 42);
counter += 1;
}
assert.sameValue(counter, 1);

View File

@ -0,0 +1,86 @@
// This file was procedurally generated from the following sources:
// - src/dstr-assignment/obj-prop-elem-target-obj-literal-prop-ref-init.case
// - src/dstr-assignment/default/for-of.template
/*---
description: The DestructuringAssignmentTarget of an AssignmentElement can extend to LHSExpressions if it is neither an ObjectLiteral nor an ArrayLiteral and its AssignmentTargetTyp is simple. Using MemberExpression (ObjLiteral + identifier) with initializer. (For..of statement)
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
es6id: 13.7.5.11
features: [destructuring-binding]
flags: [generated]
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.
[...]
Syntax
AssignmentPattern : ObjectAssignmentPattern
ObjectAssignmentPattern : { AssignmentPropertyList }
AssignmentPropertyList : AssignmentProperty
AssignmentProperty : PropertyName : AssignmentElement
AssignmentElement : DestructuringAssignmentTarget Initializer_opt
DestructuringAssignmentTarget : LeftHandSideExpression
Static Semantics: Early Errors
DestructuringAssignmentTarget : LeftHandSideExpression
- It is a Syntax Error if LeftHandSideExpression is either an ObjectLiteral or an ArrayLiteral and if LeftHandSideExpression is not covering an AssignmentPattern.
- It is a Syntax Error if LeftHandSideExpression is neither an ObjectLiteral nor an ArrayLiteral and AssignmentTargetType(LeftHandSideExpression) is not simple.
Runtime Semantics: DestructuringAssignmentEvaluation
ObjectAssignmentPattern : { AssignmentPropertyList }
1. Perform ? RequireObjectCoercible(value).
2. Perform ? PropertyDestructuringAssignmentEvaluation for AssignmentPropertyList using value as the argument.
3. Return NormalCompletion(empty).
Runtime Semantics: PropertyDestructuringAssignmentEvaluation
AssignmentProperty : PropertyName : AssignmentElement
1. Let name be the result of evaluating PropertyName.
2. ReturnIfAbrupt(name).
3. Perform ? KeyedDestructuringAssignmentEvaluation of AssignmentElement with value and name as the arguments.
4. Return a new List containing name.
Runtime Semantics: KeyedDestructuringAssignmentEvaluation
AssignmentElement : DestructuringAssignmentTarget Initializer
1. If DestructuringAssignmentTarget is neither an ObjectLiteral nor an ArrayLiteral, then
a. Let lref be the result of evaluating DestructuringAssignmentTarget.
...
---*/
var setValue;
var counter = 0;
for ({ x: {
get y() {
throw new Test262Error('The property should not be accessed.');
},
set y(val) {
setValue = val;
}
}.y = 42} of [{x: 23}]) {
assert.sameValue(setValue, 23);
counter += 1;
}
assert.sameValue(counter, 1);

View File

@ -0,0 +1,86 @@
// This file was procedurally generated from the following sources:
// - src/dstr-assignment/obj-prop-elem-target-obj-literal-prop-ref.case
// - src/dstr-assignment/default/for-of.template
/*---
description: The DestructuringAssignmentTarget of an AssignmentElement can extend to LHSExpressions if it is neither an ObjectLiteral nor an ArrayLiteral and its AssignmentTargetTyp is simple. Using MemberExpression (ObjLiteral + identifier). (For..of statement)
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
es6id: 13.7.5.11
features: [destructuring-binding]
flags: [generated]
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.
[...]
Syntax
AssignmentPattern : ObjectAssignmentPattern
ObjectAssignmentPattern : { AssignmentPropertyList }
AssignmentPropertyList : AssignmentProperty
AssignmentProperty : PropertyName : AssignmentElement
AssignmentElement : DestructuringAssignmentTarget Initializer_opt
DestructuringAssignmentTarget : LeftHandSideExpression
Static Semantics: Early Errors
DestructuringAssignmentTarget : LeftHandSideExpression
- It is a Syntax Error if LeftHandSideExpression is either an ObjectLiteral or an ArrayLiteral and if LeftHandSideExpression is not covering an AssignmentPattern.
- It is a Syntax Error if LeftHandSideExpression is neither an ObjectLiteral nor an ArrayLiteral and AssignmentTargetType(LeftHandSideExpression) is not simple.
Runtime Semantics: DestructuringAssignmentEvaluation
ObjectAssignmentPattern : { AssignmentPropertyList }
1. Perform ? RequireObjectCoercible(value).
2. Perform ? PropertyDestructuringAssignmentEvaluation for AssignmentPropertyList using value as the argument.
3. Return NormalCompletion(empty).
Runtime Semantics: PropertyDestructuringAssignmentEvaluation
AssignmentProperty : PropertyName : AssignmentElement
1. Let name be the result of evaluating PropertyName.
2. ReturnIfAbrupt(name).
3. Perform ? KeyedDestructuringAssignmentEvaluation of AssignmentElement with value and name as the arguments.
4. Return a new List containing name.
Runtime Semantics: KeyedDestructuringAssignmentEvaluation
AssignmentElement : DestructuringAssignmentTarget Initializer
1. If DestructuringAssignmentTarget is neither an ObjectLiteral nor an ArrayLiteral, then
a. Let lref be the result of evaluating DestructuringAssignmentTarget.
...
---*/
var setValue;
var counter = 0;
for ({ x: {
get y() {
throw new Test262Error('The property should not be accessed.');
},
set y(val) {
setValue = val;
}
}.y} of [{x: 23}]) {
assert.sameValue(setValue, 23);
counter += 1;
}
assert.sameValue(counter, 1);