Array binding: add generated tests

This commit is contained in:
Alexey Shvayka 2020-08-19 13:52:29 +03:00 committed by Rick Waldron
parent e10392423a
commit 9411d7fccc
216 changed files with 16585 additions and 0 deletions

View File

@ -0,0 +1,62 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-init-iter-get-err-array-prototype.case
// - src/dstr-binding/error/arrow-function.template
/*---
description: Abrupt completion returned by GetIterator (arrow function expression)
esid: sec-arrow-function-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, destructuring-binding]
flags: [generated]
info: |
ArrowFunction : ArrowParameters => ConciseBody
[...]
4. Let closure be FunctionCreate(Arrow, parameters, ConciseBody, scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: BindingInitialization
BindingPattern : ArrayBindingPattern
1. Let iteratorRecord be ? GetIterator(value).
GetIterator ( obj [ , hint [ , method ] ] )
[...]
4. Let iterator be ? Call(method, obj).
Call ( F, V [ , argumentsList ] )
[...]
2. If IsCallable(F) is false, throw a TypeError exception.
---*/
delete Array.prototype[Symbol.iterator];
var f = ([x, y, z]) => {};
assert.throws(TypeError, function() {
f([1, 2, 3]);
});

View File

@ -0,0 +1,80 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-elem-id-iter-val-array-prototype.case
// - src/dstr-binding/default/arrow-function.template
/*---
description: Array destructuring uses overriden Array.prototype[Symbol.iterator] (arrow function expression)
esid: sec-arrow-function-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, generators, destructuring-binding]
flags: [generated]
info: |
ArrowFunction : ArrowParameters => ConciseBody
[...]
4. Let closure be FunctionCreate(Arrow, parameters, ConciseBody, scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
SingleNameBinding : BindingIdentifier Initializer_opt
1. Let bindingId be StringValue of BindingIdentifier.
2. Let lhs be ? ResolveBinding(bindingId, environment).
3. If iteratorRecord.[[Done]] is false, then
a. Let next be IteratorStep(iteratorRecord).
b. If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
c. ReturnIfAbrupt(next).
d. If next is false, set iteratorRecord.[[Done]] to true.
e. Else,
i. Let v be IteratorValue(next).
ii. If v is an abrupt completion, set iteratorRecord.[[Done]] to true.
iii. ReturnIfAbrupt(v).
[...]
7. Return InitializeReferencedBinding(lhs, v).
---*/
Array.prototype[Symbol.iterator] = function* () {
if (this.length > 0) {
yield this[0];
}
if (this.length > 1) {
yield this[1];
}
if (this.length > 2) {
yield 42;
}
};
var callCount = 0;
var f;
f = ([x, y, z]) => {
assert.sameValue(x, 1);
assert.sameValue(y, 2);
assert.sameValue(z, 42);
callCount = callCount + 1;
};
f([1, 2, 3]);
assert.sameValue(callCount, 1, 'arrow function invoked exactly once');

View File

@ -0,0 +1,63 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-rest-id-direct.case
// - src/dstr-binding/default/arrow-function.template
/*---
description: Lone rest element (direct binding) (arrow function expression)
esid: sec-arrow-function-definitions-runtime-semantics-evaluation
features: [destructuring-binding]
flags: [generated]
includes: [compareArray.js]
info: |
ArrowFunction : ArrowParameters => ConciseBody
[...]
4. Let closure be FunctionCreate(Arrow, parameters, ConciseBody, scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
BindingRestElement : ... BindingIdentifier
[...]
2. Let A be ! ArrayCreate(0).
3. Let n be 0.
4. Repeat,
[...]
f. Perform ! CreateDataPropertyOrThrow(A, ! ToString(n), nextValue).
g. Set n to n + 1.
---*/
var callCount = 0;
var f;
f = ([...x]) => {
assert(Array.isArray(x));
assert.compareArray(x, [1]);
callCount = callCount + 1;
};
f([1]);
assert.sameValue(callCount, 1, 'arrow function invoked exactly once');

View File

@ -0,0 +1,62 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-init-iter-get-err-array-prototype.case
// - src/dstr-binding/error/arrow-function-dflt.template
/*---
description: Abrupt completion returned by GetIterator (arrow function expression (default parameter))
esid: sec-arrow-function-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, destructuring-binding, default-parameters]
flags: [generated]
info: |
ArrowFunction : ArrowParameters => ConciseBody
[...]
4. Let closure be FunctionCreate(Arrow, parameters, ConciseBody, scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: BindingInitialization
BindingPattern : ArrayBindingPattern
1. Let iteratorRecord be ? GetIterator(value).
GetIterator ( obj [ , hint [ , method ] ] )
[...]
4. Let iterator be ? Call(method, obj).
Call ( F, V [ , argumentsList ] )
[...]
2. If IsCallable(F) is false, throw a TypeError exception.
---*/
delete Array.prototype[Symbol.iterator];
var f = ([x, y, z] = [1, 2, 3]) => {};
assert.throws(TypeError, function() {
f();
});

View File

@ -0,0 +1,80 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-elem-id-iter-val-array-prototype.case
// - src/dstr-binding/default/arrow-function-dflt.template
/*---
description: Array destructuring uses overriden Array.prototype[Symbol.iterator] (arrow function expression (default parameter))
esid: sec-arrow-function-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, generators, destructuring-binding, default-parameters]
flags: [generated]
info: |
ArrowFunction : ArrowParameters => ConciseBody
[...]
4. Let closure be FunctionCreate(Arrow, parameters, ConciseBody, scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
SingleNameBinding : BindingIdentifier Initializer_opt
1. Let bindingId be StringValue of BindingIdentifier.
2. Let lhs be ? ResolveBinding(bindingId, environment).
3. If iteratorRecord.[[Done]] is false, then
a. Let next be IteratorStep(iteratorRecord).
b. If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
c. ReturnIfAbrupt(next).
d. If next is false, set iteratorRecord.[[Done]] to true.
e. Else,
i. Let v be IteratorValue(next).
ii. If v is an abrupt completion, set iteratorRecord.[[Done]] to true.
iii. ReturnIfAbrupt(v).
[...]
7. Return InitializeReferencedBinding(lhs, v).
---*/
Array.prototype[Symbol.iterator] = function* () {
if (this.length > 0) {
yield this[0];
}
if (this.length > 1) {
yield this[1];
}
if (this.length > 2) {
yield 42;
}
};
var callCount = 0;
var f;
f = ([x, y, z] = [1, 2, 3]) => {
assert.sameValue(x, 1);
assert.sameValue(y, 2);
assert.sameValue(z, 42);
callCount = callCount + 1;
};
f();
assert.sameValue(callCount, 1, 'arrow function invoked exactly once');

View File

@ -0,0 +1,63 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-rest-id-direct.case
// - src/dstr-binding/default/arrow-function-dflt.template
/*---
description: Lone rest element (direct binding) (arrow function expression (default parameter))
esid: sec-arrow-function-definitions-runtime-semantics-evaluation
features: [destructuring-binding, default-parameters]
flags: [generated]
includes: [compareArray.js]
info: |
ArrowFunction : ArrowParameters => ConciseBody
[...]
4. Let closure be FunctionCreate(Arrow, parameters, ConciseBody, scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
BindingRestElement : ... BindingIdentifier
[...]
2. Let A be ! ArrayCreate(0).
3. Let n be 0.
4. Repeat,
[...]
f. Perform ! CreateDataPropertyOrThrow(A, ! ToString(n), nextValue).
g. Set n to n + 1.
---*/
var callCount = 0;
var f;
f = ([...x] = [1]) => {
assert(Array.isArray(x));
assert.compareArray(x, [1]);
callCount = callCount + 1;
};
f();
assert.sameValue(callCount, 1, 'arrow function invoked exactly once');

View File

@ -0,0 +1,45 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-init-iter-get-err-array-prototype.case
// - src/dstr-binding/error/async-gen-func-expr.template
/*---
description: Abrupt completion returned by GetIterator (async generator function expression)
esid: sec-asyncgenerator-definitions-evaluation
features: [Symbol.iterator, async-iteration]
flags: [generated]
info: |
AsyncGeneratorExpression : async [no LineTerminator here] function * ( FormalParameters ) {
AsyncGeneratorBody }
[...]
3. Let closure be ! AsyncGeneratorFunctionCreate(Normal, FormalParameters,
AsyncGeneratorBody, scope, strict).
[...]
Runtime Semantics: BindingInitialization
BindingPattern : ArrayBindingPattern
1. Let iteratorRecord be ? GetIterator(value).
GetIterator ( obj [ , hint [ , method ] ] )
[...]
4. Let iterator be ? Call(method, obj).
Call ( F, V [ , argumentsList ] )
[...]
2. If IsCallable(F) is false, throw a TypeError exception.
---*/
delete Array.prototype[Symbol.iterator];
var f;
f = async function*([x, y, z]) {
};
assert.throws(TypeError, function() {
f([1, 2, 3]);
});

View File

@ -0,0 +1,62 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-elem-id-iter-val-array-prototype.case
// - src/dstr-binding/default/async-gen-func-expr.template
/*---
description: Array destructuring uses overriden Array.prototype[Symbol.iterator] (async generator function expression)
esid: sec-asyncgenerator-definitions-evaluation
features: [Symbol.iterator, generators, async-iteration]
flags: [generated, async]
info: |
AsyncGeneratorExpression : async [no LineTerminator here] function * ( FormalParameters ) {
AsyncGeneratorBody }
[...]
3. Let closure be ! AsyncGeneratorFunctionCreate(Normal, FormalParameters,
AsyncGeneratorBody, scope, strict).
[...]
Runtime Semantics: IteratorBindingInitialization
SingleNameBinding : BindingIdentifier Initializer_opt
1. Let bindingId be StringValue of BindingIdentifier.
2. Let lhs be ? ResolveBinding(bindingId, environment).
3. If iteratorRecord.[[Done]] is false, then
a. Let next be IteratorStep(iteratorRecord).
b. If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
c. ReturnIfAbrupt(next).
d. If next is false, set iteratorRecord.[[Done]] to true.
e. Else,
i. Let v be IteratorValue(next).
ii. If v is an abrupt completion, set iteratorRecord.[[Done]] to true.
iii. ReturnIfAbrupt(v).
[...]
7. Return InitializeReferencedBinding(lhs, v).
---*/
Array.prototype[Symbol.iterator] = function* () {
if (this.length > 0) {
yield this[0];
}
if (this.length > 1) {
yield this[1];
}
if (this.length > 2) {
yield 42;
}
};
var callCount = 0;
var f;
f = async function*([x, y, z]) {
assert.sameValue(x, 1);
assert.sameValue(y, 2);
assert.sameValue(z, 42);
callCount = callCount + 1;
};
f([1, 2, 3]).next().then(() => {
assert.sameValue(callCount, 1, 'invoked exactly once');
}).then($DONE, $DONE);

View File

@ -0,0 +1,45 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-rest-id-direct.case
// - src/dstr-binding/default/async-gen-func-expr.template
/*---
description: Lone rest element (direct binding) (async generator function expression)
esid: sec-asyncgenerator-definitions-evaluation
features: [async-iteration]
flags: [generated, async]
includes: [compareArray.js]
info: |
AsyncGeneratorExpression : async [no LineTerminator here] function * ( FormalParameters ) {
AsyncGeneratorBody }
[...]
3. Let closure be ! AsyncGeneratorFunctionCreate(Normal, FormalParameters,
AsyncGeneratorBody, scope, strict).
[...]
Runtime Semantics: IteratorBindingInitialization
BindingRestElement : ... BindingIdentifier
[...]
2. Let A be ! ArrayCreate(0).
3. Let n be 0.
4. Repeat,
[...]
f. Perform ! CreateDataPropertyOrThrow(A, ! ToString(n), nextValue).
g. Set n to n + 1.
---*/
var callCount = 0;
var f;
f = async function*([...x]) {
assert(Array.isArray(x));
assert.compareArray(x, [1]);
callCount = callCount + 1;
};
f([1]).next().then(() => {
assert.sameValue(callCount, 1, 'invoked exactly once');
}).then($DONE, $DONE);

View File

@ -0,0 +1,44 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-init-iter-get-err-array-prototype.case
// - src/dstr-binding/error/async-gen-func-expr-dflt.template
/*---
description: Abrupt completion returned by GetIterator (async generator function expression (default parameter))
esid: sec-asyncgenerator-definitions-evaluation
features: [Symbol.iterator, async-iteration]
flags: [generated]
info: |
AsyncGeneratorExpression : async [no LineTerminator here] function * ( FormalParameters ) {
AsyncGeneratorBody }
[...]
3. Let closure be ! AsyncGeneratorFunctionCreate(Normal, FormalParameters,
AsyncGeneratorBody, scope, strict).
[...]
Runtime Semantics: BindingInitialization
BindingPattern : ArrayBindingPattern
1. Let iteratorRecord be ? GetIterator(value).
GetIterator ( obj [ , hint [ , method ] ] )
[...]
4. Let iterator be ? Call(method, obj).
Call ( F, V [ , argumentsList ] )
[...]
2. If IsCallable(F) is false, throw a TypeError exception.
---*/
delete Array.prototype[Symbol.iterator];
var f = async function*([x, y, z] = [1, 2, 3]) {
};
assert.throws(TypeError, function() {
f();
});

View File

@ -0,0 +1,62 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-elem-id-iter-val-array-prototype.case
// - src/dstr-binding/default/async-gen-func-expr-dflt.template
/*---
description: Array destructuring uses overriden Array.prototype[Symbol.iterator] (async generator function expression (default parameter))
esid: sec-asyncgenerator-definitions-evaluation
features: [Symbol.iterator, generators, async-iteration]
flags: [generated, async]
info: |
AsyncGeneratorExpression : async [no LineTerminator here] function * ( FormalParameters ) {
AsyncGeneratorBody }
[...]
3. Let closure be ! AsyncGeneratorFunctionCreate(Normal, FormalParameters,
AsyncGeneratorBody, scope, strict).
[...]
Runtime Semantics: IteratorBindingInitialization
SingleNameBinding : BindingIdentifier Initializer_opt
1. Let bindingId be StringValue of BindingIdentifier.
2. Let lhs be ? ResolveBinding(bindingId, environment).
3. If iteratorRecord.[[Done]] is false, then
a. Let next be IteratorStep(iteratorRecord).
b. If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
c. ReturnIfAbrupt(next).
d. If next is false, set iteratorRecord.[[Done]] to true.
e. Else,
i. Let v be IteratorValue(next).
ii. If v is an abrupt completion, set iteratorRecord.[[Done]] to true.
iii. ReturnIfAbrupt(v).
[...]
7. Return InitializeReferencedBinding(lhs, v).
---*/
Array.prototype[Symbol.iterator] = function* () {
if (this.length > 0) {
yield this[0];
}
if (this.length > 1) {
yield this[1];
}
if (this.length > 2) {
yield 42;
}
};
var callCount = 0;
var f;
f = async function*([x, y, z] = [1, 2, 3]) {
assert.sameValue(x, 1);
assert.sameValue(y, 2);
assert.sameValue(z, 42);
callCount = callCount + 1;
};
f().next().then(() => {
assert.sameValue(callCount, 1, 'invoked exactly once');
}).then($DONE, $DONE);

View File

@ -0,0 +1,45 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-rest-id-direct.case
// - src/dstr-binding/default/async-gen-func-expr-dflt.template
/*---
description: Lone rest element (direct binding) (async generator function expression (default parameter))
esid: sec-asyncgenerator-definitions-evaluation
features: [async-iteration]
flags: [generated, async]
includes: [compareArray.js]
info: |
AsyncGeneratorExpression : async [no LineTerminator here] function * ( FormalParameters ) {
AsyncGeneratorBody }
[...]
3. Let closure be ! AsyncGeneratorFunctionCreate(Normal, FormalParameters,
AsyncGeneratorBody, scope, strict).
[...]
Runtime Semantics: IteratorBindingInitialization
BindingRestElement : ... BindingIdentifier
[...]
2. Let A be ! ArrayCreate(0).
3. Let n be 0.
4. Repeat,
[...]
f. Perform ! CreateDataPropertyOrThrow(A, ! ToString(n), nextValue).
g. Set n to n + 1.
---*/
var callCount = 0;
var f;
f = async function*([...x] = [1]) {
assert(Array.isArray(x));
assert.compareArray(x, [1]);
callCount = callCount + 1;
};
f().next().then(() => {
assert.sameValue(callCount, 1, 'invoked exactly once');
}).then($DONE, $DONE);

View File

@ -0,0 +1,45 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-init-iter-get-err-array-prototype.case
// - src/dstr-binding/error/async-gen-func-named-expr.template
/*---
description: Abrupt completion returned by GetIterator (async generator named function expression)
esid: sec-asyncgenerator-definitions-evaluation
features: [Symbol.iterator, async-iteration]
flags: [generated]
info: |
AsyncGeneratorExpression : async [no LineTerminator here] function * BindingIdentifier
( FormalParameters ) { AsyncGeneratorBody }
[...]
7. Let closure be ! AsyncGeneratorFunctionCreate(Normal, FormalParameters,
AsyncGeneratorBody, funcEnv, strict).
[...]
Runtime Semantics: BindingInitialization
BindingPattern : ArrayBindingPattern
1. Let iteratorRecord be ? GetIterator(value).
GetIterator ( obj [ , hint [ , method ] ] )
[...]
4. Let iterator be ? Call(method, obj).
Call ( F, V [ , argumentsList ] )
[...]
2. If IsCallable(F) is false, throw a TypeError exception.
---*/
delete Array.prototype[Symbol.iterator];
var f;
f = async function* g([x, y, z]) {
};
assert.throws(TypeError, function() {
f([1, 2, 3]);
});

View File

@ -0,0 +1,62 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-elem-id-iter-val-array-prototype.case
// - src/dstr-binding/default/async-gen-func-named-expr.template
/*---
description: Array destructuring uses overriden Array.prototype[Symbol.iterator] (async generator named function expression)
esid: sec-asyncgenerator-definitions-evaluation
features: [Symbol.iterator, generators, async-iteration]
flags: [generated, async]
info: |
AsyncGeneratorExpression : async [no LineTerminator here] function * BindingIdentifier
( FormalParameters ) { AsyncGeneratorBody }
[...]
7. Let closure be ! AsyncGeneratorFunctionCreate(Normal, FormalParameters,
AsyncGeneratorBody, funcEnv, strict).
[...]
Runtime Semantics: IteratorBindingInitialization
SingleNameBinding : BindingIdentifier Initializer_opt
1. Let bindingId be StringValue of BindingIdentifier.
2. Let lhs be ? ResolveBinding(bindingId, environment).
3. If iteratorRecord.[[Done]] is false, then
a. Let next be IteratorStep(iteratorRecord).
b. If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
c. ReturnIfAbrupt(next).
d. If next is false, set iteratorRecord.[[Done]] to true.
e. Else,
i. Let v be IteratorValue(next).
ii. If v is an abrupt completion, set iteratorRecord.[[Done]] to true.
iii. ReturnIfAbrupt(v).
[...]
7. Return InitializeReferencedBinding(lhs, v).
---*/
Array.prototype[Symbol.iterator] = function* () {
if (this.length > 0) {
yield this[0];
}
if (this.length > 1) {
yield this[1];
}
if (this.length > 2) {
yield 42;
}
};
var callCount = 0;
var f;
f = async function* h([x, y, z]) {
assert.sameValue(x, 1);
assert.sameValue(y, 2);
assert.sameValue(z, 42);
callCount = callCount + 1;
};
f([1, 2, 3]).next().then(() => {
assert.sameValue(callCount, 1, 'invoked exactly once');
}).then($DONE, $DONE);

View File

@ -0,0 +1,45 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-rest-id-direct.case
// - src/dstr-binding/default/async-gen-func-named-expr.template
/*---
description: Lone rest element (direct binding) (async generator named function expression)
esid: sec-asyncgenerator-definitions-evaluation
features: [async-iteration]
flags: [generated, async]
includes: [compareArray.js]
info: |
AsyncGeneratorExpression : async [no LineTerminator here] function * BindingIdentifier
( FormalParameters ) { AsyncGeneratorBody }
[...]
7. Let closure be ! AsyncGeneratorFunctionCreate(Normal, FormalParameters,
AsyncGeneratorBody, funcEnv, strict).
[...]
Runtime Semantics: IteratorBindingInitialization
BindingRestElement : ... BindingIdentifier
[...]
2. Let A be ! ArrayCreate(0).
3. Let n be 0.
4. Repeat,
[...]
f. Perform ! CreateDataPropertyOrThrow(A, ! ToString(n), nextValue).
g. Set n to n + 1.
---*/
var callCount = 0;
var f;
f = async function* h([...x]) {
assert(Array.isArray(x));
assert.compareArray(x, [1]);
callCount = callCount + 1;
};
f([1]).next().then(() => {
assert.sameValue(callCount, 1, 'invoked exactly once');
}).then($DONE, $DONE);

View File

@ -0,0 +1,45 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-init-iter-get-err-array-prototype.case
// - src/dstr-binding/error/async-gen-func-named-expr-dflt.template
/*---
description: Abrupt completion returned by GetIterator (async generator named function expression (default parameter))
esid: sec-asyncgenerator-definitions-evaluation
features: [Symbol.iterator, async-iteration]
flags: [generated]
info: |
AsyncGeneratorExpression : async [no LineTerminator here] function * BindingIdentifier
( FormalParameters ) { AsyncGeneratorBody }
[...]
7. Let closure be ! AsyncGeneratorFunctionCreate(Normal, FormalParameters,
AsyncGeneratorBody, funcEnv, strict).
[...]
Runtime Semantics: BindingInitialization
BindingPattern : ArrayBindingPattern
1. Let iteratorRecord be ? GetIterator(value).
GetIterator ( obj [ , hint [ , method ] ] )
[...]
4. Let iterator be ? Call(method, obj).
Call ( F, V [ , argumentsList ] )
[...]
2. If IsCallable(F) is false, throw a TypeError exception.
---*/
delete Array.prototype[Symbol.iterator];
var f;
f = async function* h([x, y, z] = [1, 2, 3]) {
};
assert.throws(TypeError, function() {
f();
});

View File

@ -0,0 +1,62 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-elem-id-iter-val-array-prototype.case
// - src/dstr-binding/default/async-gen-func-named-expr-dflt.template
/*---
description: Array destructuring uses overriden Array.prototype[Symbol.iterator] (async generator named function expression (default parameter))
esid: sec-asyncgenerator-definitions-evaluation
features: [Symbol.iterator, generators, async-iteration]
flags: [generated, async]
info: |
AsyncGeneratorExpression : async [no LineTerminator here] function * BindingIdentifier
( FormalParameters ) { AsyncGeneratorBody }
[...]
7. Let closure be ! AsyncGeneratorFunctionCreate(Normal, FormalParameters,
AsyncGeneratorBody, funcEnv, strict).
[...]
Runtime Semantics: IteratorBindingInitialization
SingleNameBinding : BindingIdentifier Initializer_opt
1. Let bindingId be StringValue of BindingIdentifier.
2. Let lhs be ? ResolveBinding(bindingId, environment).
3. If iteratorRecord.[[Done]] is false, then
a. Let next be IteratorStep(iteratorRecord).
b. If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
c. ReturnIfAbrupt(next).
d. If next is false, set iteratorRecord.[[Done]] to true.
e. Else,
i. Let v be IteratorValue(next).
ii. If v is an abrupt completion, set iteratorRecord.[[Done]] to true.
iii. ReturnIfAbrupt(v).
[...]
7. Return InitializeReferencedBinding(lhs, v).
---*/
Array.prototype[Symbol.iterator] = function* () {
if (this.length > 0) {
yield this[0];
}
if (this.length > 1) {
yield this[1];
}
if (this.length > 2) {
yield 42;
}
};
var callCount = 0;
var f;
f = async function* h([x, y, z] = [1, 2, 3]) {
assert.sameValue(x, 1);
assert.sameValue(y, 2);
assert.sameValue(z, 42);
callCount = callCount + 1;
};
f().next().then(() => {
assert.sameValue(callCount, 1, 'invoked exactly once');
}).then($DONE, $DONE);

View File

@ -0,0 +1,45 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-rest-id-direct.case
// - src/dstr-binding/default/async-gen-func-named-expr-dflt.template
/*---
description: Lone rest element (direct binding) (async generator named function expression (default parameter))
esid: sec-asyncgenerator-definitions-evaluation
features: [async-iteration]
flags: [generated, async]
includes: [compareArray.js]
info: |
AsyncGeneratorExpression : async [no LineTerminator here] function * BindingIdentifier
( FormalParameters ) { AsyncGeneratorBody }
[...]
7. Let closure be ! AsyncGeneratorFunctionCreate(Normal, FormalParameters,
AsyncGeneratorBody, funcEnv, strict).
[...]
Runtime Semantics: IteratorBindingInitialization
BindingRestElement : ... BindingIdentifier
[...]
2. Let A be ! ArrayCreate(0).
3. Let n be 0.
4. Repeat,
[...]
f. Perform ! CreateDataPropertyOrThrow(A, ! ToString(n), nextValue).
g. Set n to n + 1.
---*/
var callCount = 0;
var f;
f = async function* h([...x] = [1]) {
assert(Array.isArray(x));
assert.compareArray(x, [1]);
callCount = callCount + 1;
};
f().next().then(() => {
assert.sameValue(callCount, 1, 'invoked exactly once');
}).then($DONE, $DONE);

View File

@ -0,0 +1,72 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-init-iter-get-err-array-prototype.case
// - src/dstr-binding/error/cls-expr-async-gen-meth.template
/*---
description: Abrupt completion returned by GetIterator (class expression method)
esid: sec-class-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, async-iteration]
flags: [generated]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
i. Let status be the result of performing
PropertyDefinitionEvaluation for m with arguments proto and
false.
[...]
Runtime Semantics: PropertyDefinitionEvaluation
AsyncGeneratorMethod :
async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
{ AsyncGeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
AsyncGeneratorBody, scope, strict).
[...]
Runtime Semantics: BindingInitialization
BindingPattern : ArrayBindingPattern
1. Let iteratorRecord be ? GetIterator(value).
GetIterator ( obj [ , hint [ , method ] ] )
[...]
4. Let iterator be ? Call(method, obj).
Call ( F, V [ , argumentsList ] )
[...]
2. If IsCallable(F) is false, throw a TypeError exception.
---*/
delete Array.prototype[Symbol.iterator];
var C = class {
async *method([x, y, z]) {
}
};
var method = C.prototype.method;
assert.throws(TypeError, function() {
method([1, 2, 3]);
});

View File

@ -0,0 +1,87 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-elem-id-iter-val-array-prototype.case
// - src/dstr-binding/default/cls-expr-async-gen-meth.template
/*---
description: Array destructuring uses overriden Array.prototype[Symbol.iterator] (class expression method)
esid: sec-class-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, generators, async-iteration]
flags: [generated, async]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
i. Let status be the result of performing
PropertyDefinitionEvaluation for m with arguments proto and
false.
[...]
Runtime Semantics: PropertyDefinitionEvaluation
AsyncGeneratorMethod :
async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
{ AsyncGeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
AsyncGeneratorBody, scope, strict).
[...]
Runtime Semantics: IteratorBindingInitialization
SingleNameBinding : BindingIdentifier Initializer_opt
1. Let bindingId be StringValue of BindingIdentifier.
2. Let lhs be ? ResolveBinding(bindingId, environment).
3. If iteratorRecord.[[Done]] is false, then
a. Let next be IteratorStep(iteratorRecord).
b. If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
c. ReturnIfAbrupt(next).
d. If next is false, set iteratorRecord.[[Done]] to true.
e. Else,
i. Let v be IteratorValue(next).
ii. If v is an abrupt completion, set iteratorRecord.[[Done]] to true.
iii. ReturnIfAbrupt(v).
[...]
7. Return InitializeReferencedBinding(lhs, v).
---*/
Array.prototype[Symbol.iterator] = function* () {
if (this.length > 0) {
yield this[0];
}
if (this.length > 1) {
yield this[1];
}
if (this.length > 2) {
yield 42;
}
};
var callCount = 0;
var C = class {
async *method([x, y, z]) {
assert.sameValue(x, 1);
assert.sameValue(y, 2);
assert.sameValue(z, 42);
callCount = callCount + 1;
}
};
new C().method([1, 2, 3]).next().then(() => {
assert.sameValue(callCount, 1, 'invoked exactly once');
}).then($DONE, $DONE);

View File

@ -0,0 +1,70 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-rest-id-direct.case
// - src/dstr-binding/default/cls-expr-async-gen-meth.template
/*---
description: Lone rest element (direct binding) (class expression method)
esid: sec-class-definitions-runtime-semantics-evaluation
features: [async-iteration]
flags: [generated, async]
includes: [compareArray.js]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
i. Let status be the result of performing
PropertyDefinitionEvaluation for m with arguments proto and
false.
[...]
Runtime Semantics: PropertyDefinitionEvaluation
AsyncGeneratorMethod :
async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
{ AsyncGeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
AsyncGeneratorBody, scope, strict).
[...]
Runtime Semantics: IteratorBindingInitialization
BindingRestElement : ... BindingIdentifier
[...]
2. Let A be ! ArrayCreate(0).
3. Let n be 0.
4. Repeat,
[...]
f. Perform ! CreateDataPropertyOrThrow(A, ! ToString(n), nextValue).
g. Set n to n + 1.
---*/
var callCount = 0;
var C = class {
async *method([...x]) {
assert(Array.isArray(x));
assert.compareArray(x, [1]);
callCount = callCount + 1;
}
};
new C().method([1]).next().then(() => {
assert.sameValue(callCount, 1, 'invoked exactly once');
}).then($DONE, $DONE);

View File

@ -0,0 +1,72 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-init-iter-get-err-array-prototype.case
// - src/dstr-binding/error/cls-expr-async-gen-meth-dflt.template
/*---
description: Abrupt completion returned by GetIterator (class expression async generator method (default parameter))
esid: sec-class-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, async-iteration]
flags: [generated]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
i. Let status be the result of performing
PropertyDefinitionEvaluation for m with arguments proto and
false.
[...]
Runtime Semantics: PropertyDefinitionEvaluation
AsyncGeneratorMethod :
async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
{ AsyncGeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
AsyncGeneratorBody, scope, strict).
[...]
Runtime Semantics: BindingInitialization
BindingPattern : ArrayBindingPattern
1. Let iteratorRecord be ? GetIterator(value).
GetIterator ( obj [ , hint [ , method ] ] )
[...]
4. Let iterator be ? Call(method, obj).
Call ( F, V [ , argumentsList ] )
[...]
2. If IsCallable(F) is false, throw a TypeError exception.
---*/
delete Array.prototype[Symbol.iterator];
var C = class {
async *method([x, y, z] = [1, 2, 3]) {
}
};
var method = C.prototype.method;
assert.throws(TypeError, function() {
method();
});

View File

@ -0,0 +1,87 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-elem-id-iter-val-array-prototype.case
// - src/dstr-binding/default/cls-expr-async-gen-meth-dflt.template
/*---
description: Array destructuring uses overriden Array.prototype[Symbol.iterator] (class expression async generator method (default parameter))
esid: sec-class-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, generators, async-iteration]
flags: [generated, async]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
i. Let status be the result of performing
PropertyDefinitionEvaluation for m with arguments proto and
false.
[...]
Runtime Semantics: PropertyDefinitionEvaluation
AsyncGeneratorMethod :
async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
{ AsyncGeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
AsyncGeneratorBody, scope, strict).
[...]
Runtime Semantics: IteratorBindingInitialization
SingleNameBinding : BindingIdentifier Initializer_opt
1. Let bindingId be StringValue of BindingIdentifier.
2. Let lhs be ? ResolveBinding(bindingId, environment).
3. If iteratorRecord.[[Done]] is false, then
a. Let next be IteratorStep(iteratorRecord).
b. If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
c. ReturnIfAbrupt(next).
d. If next is false, set iteratorRecord.[[Done]] to true.
e. Else,
i. Let v be IteratorValue(next).
ii. If v is an abrupt completion, set iteratorRecord.[[Done]] to true.
iii. ReturnIfAbrupt(v).
[...]
7. Return InitializeReferencedBinding(lhs, v).
---*/
Array.prototype[Symbol.iterator] = function* () {
if (this.length > 0) {
yield this[0];
}
if (this.length > 1) {
yield this[1];
}
if (this.length > 2) {
yield 42;
}
};
var callCount = 0;
var C = class {
async *method([x, y, z] = [1, 2, 3]) {
assert.sameValue(x, 1);
assert.sameValue(y, 2);
assert.sameValue(z, 42);
callCount = callCount + 1;
}
};
new C().method().next().then(() => {
assert.sameValue(callCount, 1, 'invoked exactly once');
}).then($DONE, $DONE);

View File

@ -0,0 +1,70 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-rest-id-direct.case
// - src/dstr-binding/default/cls-expr-async-gen-meth-dflt.template
/*---
description: Lone rest element (direct binding) (class expression async generator method (default parameter))
esid: sec-class-definitions-runtime-semantics-evaluation
features: [async-iteration]
flags: [generated, async]
includes: [compareArray.js]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
i. Let status be the result of performing
PropertyDefinitionEvaluation for m with arguments proto and
false.
[...]
Runtime Semantics: PropertyDefinitionEvaluation
AsyncGeneratorMethod :
async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
{ AsyncGeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
AsyncGeneratorBody, scope, strict).
[...]
Runtime Semantics: IteratorBindingInitialization
BindingRestElement : ... BindingIdentifier
[...]
2. Let A be ! ArrayCreate(0).
3. Let n be 0.
4. Repeat,
[...]
f. Perform ! CreateDataPropertyOrThrow(A, ! ToString(n), nextValue).
g. Set n to n + 1.
---*/
var callCount = 0;
var C = class {
async *method([...x] = [1]) {
assert(Array.isArray(x));
assert.compareArray(x, [1]);
callCount = callCount + 1;
}
};
new C().method().next().then(() => {
assert.sameValue(callCount, 1, 'invoked exactly once');
}).then($DONE, $DONE);

View File

@ -0,0 +1,72 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-init-iter-get-err-array-prototype.case
// - src/dstr-binding/error/cls-expr-async-gen-meth-static.template
/*---
description: Abrupt completion returned by GetIterator (static class expression async generator method)
esid: sec-class-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, async-iteration]
flags: [generated]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
b. Else,
Let status be the result of performing PropertyDefinitionEvaluation
for m with arguments F and false.
[...]
Runtime Semantics: PropertyDefinitionEvaluation
AsyncGeneratorMethod :
async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
{ AsyncGeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
AsyncGeneratorBody, scope, strict).
[...]
Runtime Semantics: BindingInitialization
BindingPattern : ArrayBindingPattern
1. Let iteratorRecord be ? GetIterator(value).
GetIterator ( obj [ , hint [ , method ] ] )
[...]
4. Let iterator be ? Call(method, obj).
Call ( F, V [ , argumentsList ] )
[...]
2. If IsCallable(F) is false, throw a TypeError exception.
---*/
delete Array.prototype[Symbol.iterator];
var C = class {
static async *method([x, y, z]) {
}
};
var method = C.method;
assert.throws(TypeError, function() {
method([1, 2, 3]);
});

View File

@ -0,0 +1,87 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-elem-id-iter-val-array-prototype.case
// - src/dstr-binding/default/cls-expr-async-gen-meth-static.template
/*---
description: Array destructuring uses overriden Array.prototype[Symbol.iterator] (static class expression async generator method)
esid: sec-class-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, generators, async-iteration]
flags: [generated, async]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
b. Else,
Let status be the result of performing PropertyDefinitionEvaluation
for m with arguments F and false.
[...]
Runtime Semantics: PropertyDefinitionEvaluation
AsyncGeneratorMethod :
async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
{ AsyncGeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
AsyncGeneratorBody, scope, strict).
[...]
Runtime Semantics: IteratorBindingInitialization
SingleNameBinding : BindingIdentifier Initializer_opt
1. Let bindingId be StringValue of BindingIdentifier.
2. Let lhs be ? ResolveBinding(bindingId, environment).
3. If iteratorRecord.[[Done]] is false, then
a. Let next be IteratorStep(iteratorRecord).
b. If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
c. ReturnIfAbrupt(next).
d. If next is false, set iteratorRecord.[[Done]] to true.
e. Else,
i. Let v be IteratorValue(next).
ii. If v is an abrupt completion, set iteratorRecord.[[Done]] to true.
iii. ReturnIfAbrupt(v).
[...]
7. Return InitializeReferencedBinding(lhs, v).
---*/
Array.prototype[Symbol.iterator] = function* () {
if (this.length > 0) {
yield this[0];
}
if (this.length > 1) {
yield this[1];
}
if (this.length > 2) {
yield 42;
}
};
var callCount = 0;
var C = class {
static async *method([x, y, z]) {
assert.sameValue(x, 1);
assert.sameValue(y, 2);
assert.sameValue(z, 42);
callCount = callCount + 1;
}
};
C.method([1, 2, 3]).next().then(() => {
assert.sameValue(callCount, 1, 'invoked exactly once');
}).then($DONE, $DONE);

View File

@ -0,0 +1,70 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-rest-id-direct.case
// - src/dstr-binding/default/cls-expr-async-gen-meth-static.template
/*---
description: Lone rest element (direct binding) (static class expression async generator method)
esid: sec-class-definitions-runtime-semantics-evaluation
features: [async-iteration]
flags: [generated, async]
includes: [compareArray.js]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
b. Else,
Let status be the result of performing PropertyDefinitionEvaluation
for m with arguments F and false.
[...]
Runtime Semantics: PropertyDefinitionEvaluation
AsyncGeneratorMethod :
async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
{ AsyncGeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
AsyncGeneratorBody, scope, strict).
[...]
Runtime Semantics: IteratorBindingInitialization
BindingRestElement : ... BindingIdentifier
[...]
2. Let A be ! ArrayCreate(0).
3. Let n be 0.
4. Repeat,
[...]
f. Perform ! CreateDataPropertyOrThrow(A, ! ToString(n), nextValue).
g. Set n to n + 1.
---*/
var callCount = 0;
var C = class {
static async *method([...x]) {
assert(Array.isArray(x));
assert.compareArray(x, [1]);
callCount = callCount + 1;
}
};
C.method([1]).next().then(() => {
assert.sameValue(callCount, 1, 'invoked exactly once');
}).then($DONE, $DONE);

View File

@ -0,0 +1,72 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-init-iter-get-err-array-prototype.case
// - src/dstr-binding/error/cls-expr-async-gen-meth-static-dflt.template
/*---
description: Abrupt completion returned by GetIterator (static class expression async generator method (default parameter))
esid: sec-class-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, async-iteration]
flags: [generated]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
b. Else,
Let status be the result of performing PropertyDefinitionEvaluation
for m with arguments F and false.
[...]
Runtime Semantics: PropertyDefinitionEvaluation
AsyncGeneratorMethod :
async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
{ AsyncGeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
AsyncGeneratorBody, scope, strict).
[...]
Runtime Semantics: BindingInitialization
BindingPattern : ArrayBindingPattern
1. Let iteratorRecord be ? GetIterator(value).
GetIterator ( obj [ , hint [ , method ] ] )
[...]
4. Let iterator be ? Call(method, obj).
Call ( F, V [ , argumentsList ] )
[...]
2. If IsCallable(F) is false, throw a TypeError exception.
---*/
delete Array.prototype[Symbol.iterator];
var C = class {
static async *method([x, y, z] = [1, 2, 3]) {
}
};
var method = C.method;
assert.throws(TypeError, function() {
method();
});

View File

@ -0,0 +1,87 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-elem-id-iter-val-array-prototype.case
// - src/dstr-binding/default/cls-expr-async-gen-meth-static-dflt.template
/*---
description: Array destructuring uses overriden Array.prototype[Symbol.iterator] (static class expression async generator method (default parameter))
esid: sec-class-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, generators, async-iteration]
flags: [generated, async]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
b. Else,
Let status be the result of performing PropertyDefinitionEvaluation
for m with arguments F and false.
[...]
Runtime Semantics: PropertyDefinitionEvaluation
AsyncGeneratorMethod :
async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
{ AsyncGeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
AsyncGeneratorBody, scope, strict).
[...]
Runtime Semantics: IteratorBindingInitialization
SingleNameBinding : BindingIdentifier Initializer_opt
1. Let bindingId be StringValue of BindingIdentifier.
2. Let lhs be ? ResolveBinding(bindingId, environment).
3. If iteratorRecord.[[Done]] is false, then
a. Let next be IteratorStep(iteratorRecord).
b. If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
c. ReturnIfAbrupt(next).
d. If next is false, set iteratorRecord.[[Done]] to true.
e. Else,
i. Let v be IteratorValue(next).
ii. If v is an abrupt completion, set iteratorRecord.[[Done]] to true.
iii. ReturnIfAbrupt(v).
[...]
7. Return InitializeReferencedBinding(lhs, v).
---*/
Array.prototype[Symbol.iterator] = function* () {
if (this.length > 0) {
yield this[0];
}
if (this.length > 1) {
yield this[1];
}
if (this.length > 2) {
yield 42;
}
};
var callCount = 0;
var C = class {
static async *method([x, y, z] = [1, 2, 3]) {
assert.sameValue(x, 1);
assert.sameValue(y, 2);
assert.sameValue(z, 42);
callCount = callCount + 1;
}
};
C.method().next().then(() => {
assert.sameValue(callCount, 1, 'invoked exactly once');
}).then($DONE, $DONE);

View File

@ -0,0 +1,70 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-rest-id-direct.case
// - src/dstr-binding/default/cls-expr-async-gen-meth-static-dflt.template
/*---
description: Lone rest element (direct binding) (static class expression async generator method (default parameter))
esid: sec-class-definitions-runtime-semantics-evaluation
features: [async-iteration]
flags: [generated, async]
includes: [compareArray.js]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
b. Else,
Let status be the result of performing PropertyDefinitionEvaluation
for m with arguments F and false.
[...]
Runtime Semantics: PropertyDefinitionEvaluation
AsyncGeneratorMethod :
async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
{ AsyncGeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
AsyncGeneratorBody, scope, strict).
[...]
Runtime Semantics: IteratorBindingInitialization
BindingRestElement : ... BindingIdentifier
[...]
2. Let A be ! ArrayCreate(0).
3. Let n be 0.
4. Repeat,
[...]
f. Perform ! CreateDataPropertyOrThrow(A, ! ToString(n), nextValue).
g. Set n to n + 1.
---*/
var callCount = 0;
var C = class {
static async *method([...x] = [1]) {
assert(Array.isArray(x));
assert.compareArray(x, [1]);
callCount = callCount + 1;
}
};
C.method().next().then(() => {
assert.sameValue(callCount, 1, 'invoked exactly once');
}).then($DONE, $DONE);

View File

@ -0,0 +1,91 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-elem-id-iter-val-array-prototype.case
// - src/dstr-binding/default/cls-expr-async-private-gen-meth.template
/*---
description: Array destructuring uses overriden Array.prototype[Symbol.iterator] (private class expression method)
esid: sec-class-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, generators, class, class-methods-private, async-iteration]
flags: [generated, async]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
i. Let status be the result of performing
PropertyDefinitionEvaluation for m with arguments proto and
false.
[...]
Runtime Semantics: PropertyDefinitionEvaluation
AsyncGeneratorMethod :
async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
{ AsyncGeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
AsyncGeneratorBody, scope, strict).
[...]
Runtime Semantics: IteratorBindingInitialization
SingleNameBinding : BindingIdentifier Initializer_opt
1. Let bindingId be StringValue of BindingIdentifier.
2. Let lhs be ? ResolveBinding(bindingId, environment).
3. If iteratorRecord.[[Done]] is false, then
a. Let next be IteratorStep(iteratorRecord).
b. If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
c. ReturnIfAbrupt(next).
d. If next is false, set iteratorRecord.[[Done]] to true.
e. Else,
i. Let v be IteratorValue(next).
ii. If v is an abrupt completion, set iteratorRecord.[[Done]] to true.
iii. ReturnIfAbrupt(v).
[...]
7. Return InitializeReferencedBinding(lhs, v).
---*/
Array.prototype[Symbol.iterator] = function* () {
if (this.length > 0) {
yield this[0];
}
if (this.length > 1) {
yield this[1];
}
if (this.length > 2) {
yield 42;
}
};
var callCount = 0;
var C = class {
async * #method([x, y, z]) {
assert.sameValue(x, 1);
assert.sameValue(y, 2);
assert.sameValue(z, 42);
callCount = callCount + 1;
}
get method() {
return this.#method;
}
};
new C().method([1, 2, 3]).next().then(() => {
assert.sameValue(callCount, 1, 'invoked exactly once');
}).then($DONE, $DONE);

View File

@ -0,0 +1,74 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-rest-id-direct.case
// - src/dstr-binding/default/cls-expr-async-private-gen-meth.template
/*---
description: Lone rest element (direct binding) (private class expression method)
esid: sec-class-definitions-runtime-semantics-evaluation
features: [class, class-methods-private, async-iteration]
flags: [generated, async]
includes: [compareArray.js]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
i. Let status be the result of performing
PropertyDefinitionEvaluation for m with arguments proto and
false.
[...]
Runtime Semantics: PropertyDefinitionEvaluation
AsyncGeneratorMethod :
async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
{ AsyncGeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
AsyncGeneratorBody, scope, strict).
[...]
Runtime Semantics: IteratorBindingInitialization
BindingRestElement : ... BindingIdentifier
[...]
2. Let A be ! ArrayCreate(0).
3. Let n be 0.
4. Repeat,
[...]
f. Perform ! CreateDataPropertyOrThrow(A, ! ToString(n), nextValue).
g. Set n to n + 1.
---*/
var callCount = 0;
var C = class {
async * #method([...x]) {
assert(Array.isArray(x));
assert.compareArray(x, [1]);
callCount = callCount + 1;
}
get method() {
return this.#method;
}
};
new C().method([1]).next().then(() => {
assert.sameValue(callCount, 1, 'invoked exactly once');
}).then($DONE, $DONE);

View File

@ -0,0 +1,91 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-elem-id-iter-val-array-prototype.case
// - src/dstr-binding/default/cls-expr-async-private-gen-meth-dflt.template
/*---
description: Array destructuring uses overriden Array.prototype[Symbol.iterator] (private class expression async generator method (default parameter))
esid: sec-class-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, generators, class, class-methods-private, async-iteration]
flags: [generated, async]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
i. Let status be the result of performing
PropertyDefinitionEvaluation for m with arguments proto and
false.
[...]
Runtime Semantics: PropertyDefinitionEvaluation
AsyncGeneratorMethod :
async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
{ AsyncGeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
AsyncGeneratorBody, scope, strict).
[...]
Runtime Semantics: IteratorBindingInitialization
SingleNameBinding : BindingIdentifier Initializer_opt
1. Let bindingId be StringValue of BindingIdentifier.
2. Let lhs be ? ResolveBinding(bindingId, environment).
3. If iteratorRecord.[[Done]] is false, then
a. Let next be IteratorStep(iteratorRecord).
b. If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
c. ReturnIfAbrupt(next).
d. If next is false, set iteratorRecord.[[Done]] to true.
e. Else,
i. Let v be IteratorValue(next).
ii. If v is an abrupt completion, set iteratorRecord.[[Done]] to true.
iii. ReturnIfAbrupt(v).
[...]
7. Return InitializeReferencedBinding(lhs, v).
---*/
Array.prototype[Symbol.iterator] = function* () {
if (this.length > 0) {
yield this[0];
}
if (this.length > 1) {
yield this[1];
}
if (this.length > 2) {
yield 42;
}
};
var callCount = 0;
var C = class {
async * #method([x, y, z] = [1, 2, 3]) {
assert.sameValue(x, 1);
assert.sameValue(y, 2);
assert.sameValue(z, 42);
callCount = callCount + 1;
}
get method() {
return this.#method;
}
};
new C().method().next().then(() => {
assert.sameValue(callCount, 1, 'invoked exactly once');
}).then($DONE, $DONE);

View File

@ -0,0 +1,74 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-rest-id-direct.case
// - src/dstr-binding/default/cls-expr-async-private-gen-meth-dflt.template
/*---
description: Lone rest element (direct binding) (private class expression async generator method (default parameter))
esid: sec-class-definitions-runtime-semantics-evaluation
features: [class, class-methods-private, async-iteration]
flags: [generated, async]
includes: [compareArray.js]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
i. Let status be the result of performing
PropertyDefinitionEvaluation for m with arguments proto and
false.
[...]
Runtime Semantics: PropertyDefinitionEvaluation
AsyncGeneratorMethod :
async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
{ AsyncGeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
AsyncGeneratorBody, scope, strict).
[...]
Runtime Semantics: IteratorBindingInitialization
BindingRestElement : ... BindingIdentifier
[...]
2. Let A be ! ArrayCreate(0).
3. Let n be 0.
4. Repeat,
[...]
f. Perform ! CreateDataPropertyOrThrow(A, ! ToString(n), nextValue).
g. Set n to n + 1.
---*/
var callCount = 0;
var C = class {
async * #method([...x] = [1]) {
assert(Array.isArray(x));
assert.compareArray(x, [1]);
callCount = callCount + 1;
}
get method() {
return this.#method;
}
};
new C().method().next().then(() => {
assert.sameValue(callCount, 1, 'invoked exactly once');
}).then($DONE, $DONE);

View File

@ -0,0 +1,91 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-elem-id-iter-val-array-prototype.case
// - src/dstr-binding/default/cls-expr-async-private-gen-meth-static.template
/*---
description: Array destructuring uses overriden Array.prototype[Symbol.iterator] (private static class expression async generator method)
esid: sec-class-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, generators, class, class-static-methods-private, async-iteration]
flags: [generated, async]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
b. Else,
Let status be the result of performing PropertyDefinitionEvaluation
for m with arguments F and false.
[...]
Runtime Semantics: PropertyDefinitionEvaluation
AsyncGeneratorMethod :
async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
{ AsyncGeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
AsyncGeneratorBody, scope, strict).
[...]
Runtime Semantics: IteratorBindingInitialization
SingleNameBinding : BindingIdentifier Initializer_opt
1. Let bindingId be StringValue of BindingIdentifier.
2. Let lhs be ? ResolveBinding(bindingId, environment).
3. If iteratorRecord.[[Done]] is false, then
a. Let next be IteratorStep(iteratorRecord).
b. If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
c. ReturnIfAbrupt(next).
d. If next is false, set iteratorRecord.[[Done]] to true.
e. Else,
i. Let v be IteratorValue(next).
ii. If v is an abrupt completion, set iteratorRecord.[[Done]] to true.
iii. ReturnIfAbrupt(v).
[...]
7. Return InitializeReferencedBinding(lhs, v).
---*/
Array.prototype[Symbol.iterator] = function* () {
if (this.length > 0) {
yield this[0];
}
if (this.length > 1) {
yield this[1];
}
if (this.length > 2) {
yield 42;
}
};
var callCount = 0;
var C = class {
static async * #method([x, y, z]) {
assert.sameValue(x, 1);
assert.sameValue(y, 2);
assert.sameValue(z, 42);
callCount = callCount + 1;
}
static get method() {
return this.#method;
}
};
C.method([1, 2, 3]).next().then(() => {
assert.sameValue(callCount, 1, 'invoked exactly once');
}).then($DONE, $DONE);

View File

@ -0,0 +1,74 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-rest-id-direct.case
// - src/dstr-binding/default/cls-expr-async-private-gen-meth-static.template
/*---
description: Lone rest element (direct binding) (private static class expression async generator method)
esid: sec-class-definitions-runtime-semantics-evaluation
features: [class, class-static-methods-private, async-iteration]
flags: [generated, async]
includes: [compareArray.js]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
b. Else,
Let status be the result of performing PropertyDefinitionEvaluation
for m with arguments F and false.
[...]
Runtime Semantics: PropertyDefinitionEvaluation
AsyncGeneratorMethod :
async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
{ AsyncGeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
AsyncGeneratorBody, scope, strict).
[...]
Runtime Semantics: IteratorBindingInitialization
BindingRestElement : ... BindingIdentifier
[...]
2. Let A be ! ArrayCreate(0).
3. Let n be 0.
4. Repeat,
[...]
f. Perform ! CreateDataPropertyOrThrow(A, ! ToString(n), nextValue).
g. Set n to n + 1.
---*/
var callCount = 0;
var C = class {
static async * #method([...x]) {
assert(Array.isArray(x));
assert.compareArray(x, [1]);
callCount = callCount + 1;
}
static get method() {
return this.#method;
}
};
C.method([1]).next().then(() => {
assert.sameValue(callCount, 1, 'invoked exactly once');
}).then($DONE, $DONE);

View File

@ -0,0 +1,91 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-elem-id-iter-val-array-prototype.case
// - src/dstr-binding/default/cls-expr-async-private-gen-meth-static-dflt.template
/*---
description: Array destructuring uses overriden Array.prototype[Symbol.iterator] (private static class expression async generator method (default parameter))
esid: sec-class-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, generators, class, class-static-methods-private, async-iteration]
flags: [generated, async]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
b. Else,
Let status be the result of performing PropertyDefinitionEvaluation
for m with arguments F and false.
[...]
Runtime Semantics: PropertyDefinitionEvaluation
AsyncGeneratorMethod :
async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
{ AsyncGeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
AsyncGeneratorBody, scope, strict).
[...]
Runtime Semantics: IteratorBindingInitialization
SingleNameBinding : BindingIdentifier Initializer_opt
1. Let bindingId be StringValue of BindingIdentifier.
2. Let lhs be ? ResolveBinding(bindingId, environment).
3. If iteratorRecord.[[Done]] is false, then
a. Let next be IteratorStep(iteratorRecord).
b. If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
c. ReturnIfAbrupt(next).
d. If next is false, set iteratorRecord.[[Done]] to true.
e. Else,
i. Let v be IteratorValue(next).
ii. If v is an abrupt completion, set iteratorRecord.[[Done]] to true.
iii. ReturnIfAbrupt(v).
[...]
7. Return InitializeReferencedBinding(lhs, v).
---*/
Array.prototype[Symbol.iterator] = function* () {
if (this.length > 0) {
yield this[0];
}
if (this.length > 1) {
yield this[1];
}
if (this.length > 2) {
yield 42;
}
};
var callCount = 0;
var C = class {
static async * #method([x, y, z] = [1, 2, 3]) {
assert.sameValue(x, 1);
assert.sameValue(y, 2);
assert.sameValue(z, 42);
callCount = callCount + 1;
}
static get method() {
return this.#method;
}
};
C.method().next().then(() => {
assert.sameValue(callCount, 1, 'invoked exactly once');
}).then($DONE, $DONE);

View File

@ -0,0 +1,74 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-rest-id-direct.case
// - src/dstr-binding/default/cls-expr-async-private-gen-meth-static-dflt.template
/*---
description: Lone rest element (direct binding) (private static class expression async generator method (default parameter))
esid: sec-class-definitions-runtime-semantics-evaluation
features: [class, class-static-methods-private, async-iteration]
flags: [generated, async]
includes: [compareArray.js]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
b. Else,
Let status be the result of performing PropertyDefinitionEvaluation
for m with arguments F and false.
[...]
Runtime Semantics: PropertyDefinitionEvaluation
AsyncGeneratorMethod :
async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
{ AsyncGeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
AsyncGeneratorBody, scope, strict).
[...]
Runtime Semantics: IteratorBindingInitialization
BindingRestElement : ... BindingIdentifier
[...]
2. Let A be ! ArrayCreate(0).
3. Let n be 0.
4. Repeat,
[...]
f. Perform ! CreateDataPropertyOrThrow(A, ! ToString(n), nextValue).
g. Set n to n + 1.
---*/
var callCount = 0;
var C = class {
static async * #method([...x] = [1]) {
assert(Array.isArray(x));
assert.compareArray(x, [1]);
callCount = callCount + 1;
}
static get method() {
return this.#method;
}
};
C.method().next().then(() => {
assert.sameValue(callCount, 1, 'invoked exactly once');
}).then($DONE, $DONE);

View File

@ -0,0 +1,89 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-init-iter-get-err-array-prototype.case
// - src/dstr-binding/error/cls-expr-gen-meth.template
/*---
description: Abrupt completion returned by GetIterator (class expression method)
esid: sec-class-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, generators, destructuring-binding]
flags: [generated]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
i. Let status be the result of performing
PropertyDefinitionEvaluation for m with arguments proto and
false.
[...]
14.4.13 Runtime Semantics: PropertyDefinitionEvaluation
GeneratorMethod :
* PropertyName ( StrictFormalParameters ) { GeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this GeneratorMethod is strict mode code,
let strict be true. Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be GeneratorFunctionCreate(Method,
StrictFormalParameters, GeneratorBody, scope, strict).
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: BindingInitialization
BindingPattern : ArrayBindingPattern
1. Let iteratorRecord be ? GetIterator(value).
GetIterator ( obj [ , hint [ , method ] ] )
[...]
4. Let iterator be ? Call(method, obj).
Call ( F, V [ , argumentsList ] )
[...]
2. If IsCallable(F) is false, throw a TypeError exception.
---*/
delete Array.prototype[Symbol.iterator];
var C = class {
*method([x, y, z]) {}
};
var c = new C();
assert.throws(TypeError, function() {
c.method([1, 2, 3]);
});

View File

@ -0,0 +1,105 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-elem-id-iter-val-array-prototype.case
// - src/dstr-binding/default/cls-expr-gen-meth.template
/*---
description: Array destructuring uses overriden Array.prototype[Symbol.iterator] (class expression method)
esid: sec-class-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, generators, destructuring-binding]
flags: [generated]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
i. Let status be the result of performing
PropertyDefinitionEvaluation for m with arguments proto and
false.
[...]
14.4.13 Runtime Semantics: PropertyDefinitionEvaluation
GeneratorMethod :
* PropertyName ( StrictFormalParameters ) { GeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this GeneratorMethod is strict mode code,
let strict be true. Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be GeneratorFunctionCreate(Method,
StrictFormalParameters, GeneratorBody, scope, strict).
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
SingleNameBinding : BindingIdentifier Initializer_opt
1. Let bindingId be StringValue of BindingIdentifier.
2. Let lhs be ? ResolveBinding(bindingId, environment).
3. If iteratorRecord.[[Done]] is false, then
a. Let next be IteratorStep(iteratorRecord).
b. If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
c. ReturnIfAbrupt(next).
d. If next is false, set iteratorRecord.[[Done]] to true.
e. Else,
i. Let v be IteratorValue(next).
ii. If v is an abrupt completion, set iteratorRecord.[[Done]] to true.
iii. ReturnIfAbrupt(v).
[...]
7. Return InitializeReferencedBinding(lhs, v).
---*/
Array.prototype[Symbol.iterator] = function* () {
if (this.length > 0) {
yield this[0];
}
if (this.length > 1) {
yield this[1];
}
if (this.length > 2) {
yield 42;
}
};
var callCount = 0;
var C = class {
*method([x, y, z]) {
assert.sameValue(x, 1);
assert.sameValue(y, 2);
assert.sameValue(z, 42);
callCount = callCount + 1;
}
};
new C().method([1, 2, 3]).next();
assert.sameValue(callCount, 1, 'method invoked exactly once');

View File

@ -0,0 +1,88 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-rest-id-direct.case
// - src/dstr-binding/default/cls-expr-gen-meth.template
/*---
description: Lone rest element (direct binding) (class expression method)
esid: sec-class-definitions-runtime-semantics-evaluation
features: [generators, destructuring-binding]
flags: [generated]
includes: [compareArray.js]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
i. Let status be the result of performing
PropertyDefinitionEvaluation for m with arguments proto and
false.
[...]
14.4.13 Runtime Semantics: PropertyDefinitionEvaluation
GeneratorMethod :
* PropertyName ( StrictFormalParameters ) { GeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this GeneratorMethod is strict mode code,
let strict be true. Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be GeneratorFunctionCreate(Method,
StrictFormalParameters, GeneratorBody, scope, strict).
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
BindingRestElement : ... BindingIdentifier
[...]
2. Let A be ! ArrayCreate(0).
3. Let n be 0.
4. Repeat,
[...]
f. Perform ! CreateDataPropertyOrThrow(A, ! ToString(n), nextValue).
g. Set n to n + 1.
---*/
var callCount = 0;
var C = class {
*method([...x]) {
assert(Array.isArray(x));
assert.compareArray(x, [1]);
callCount = callCount + 1;
}
};
new C().method([1]).next();
assert.sameValue(callCount, 1, 'method invoked exactly once');

View File

@ -0,0 +1,89 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-init-iter-get-err-array-prototype.case
// - src/dstr-binding/error/cls-expr-gen-meth-dflt.template
/*---
description: Abrupt completion returned by GetIterator (class expression method (default parameter))
esid: sec-class-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, generators, destructuring-binding, default-parameters]
flags: [generated]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
i. Let status be the result of performing
PropertyDefinitionEvaluation for m with arguments proto and
false.
[...]
14.4.13 Runtime Semantics: PropertyDefinitionEvaluation
GeneratorMethod :
* PropertyName ( StrictFormalParameters ) { GeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this GeneratorMethod is strict mode code,
let strict be true. Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be GeneratorFunctionCreate(Method,
StrictFormalParameters, GeneratorBody, scope, strict).
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: BindingInitialization
BindingPattern : ArrayBindingPattern
1. Let iteratorRecord be ? GetIterator(value).
GetIterator ( obj [ , hint [ , method ] ] )
[...]
4. Let iterator be ? Call(method, obj).
Call ( F, V [ , argumentsList ] )
[...]
2. If IsCallable(F) is false, throw a TypeError exception.
---*/
delete Array.prototype[Symbol.iterator];
var C = class {
*method([x, y, z] = [1, 2, 3]) {}
};
var c = new C();
assert.throws(TypeError, function() {
c.method();
});

View File

@ -0,0 +1,105 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-elem-id-iter-val-array-prototype.case
// - src/dstr-binding/default/cls-expr-gen-meth-dflt.template
/*---
description: Array destructuring uses overriden Array.prototype[Symbol.iterator] (class expression method (default parameter))
esid: sec-class-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, generators, destructuring-binding, default-parameters]
flags: [generated]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
i. Let status be the result of performing
PropertyDefinitionEvaluation for m with arguments proto and
false.
[...]
14.4.13 Runtime Semantics: PropertyDefinitionEvaluation
GeneratorMethod :
* PropertyName ( StrictFormalParameters ) { GeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this GeneratorMethod is strict mode code,
let strict be true. Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be GeneratorFunctionCreate(Method,
StrictFormalParameters, GeneratorBody, scope, strict).
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
SingleNameBinding : BindingIdentifier Initializer_opt
1. Let bindingId be StringValue of BindingIdentifier.
2. Let lhs be ? ResolveBinding(bindingId, environment).
3. If iteratorRecord.[[Done]] is false, then
a. Let next be IteratorStep(iteratorRecord).
b. If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
c. ReturnIfAbrupt(next).
d. If next is false, set iteratorRecord.[[Done]] to true.
e. Else,
i. Let v be IteratorValue(next).
ii. If v is an abrupt completion, set iteratorRecord.[[Done]] to true.
iii. ReturnIfAbrupt(v).
[...]
7. Return InitializeReferencedBinding(lhs, v).
---*/
Array.prototype[Symbol.iterator] = function* () {
if (this.length > 0) {
yield this[0];
}
if (this.length > 1) {
yield this[1];
}
if (this.length > 2) {
yield 42;
}
};
var callCount = 0;
var C = class {
*method([x, y, z] = [1, 2, 3]) {
assert.sameValue(x, 1);
assert.sameValue(y, 2);
assert.sameValue(z, 42);
callCount = callCount + 1;
}
};
new C().method().next();
assert.sameValue(callCount, 1, 'method invoked exactly once');

View File

@ -0,0 +1,88 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-rest-id-direct.case
// - src/dstr-binding/default/cls-expr-gen-meth-dflt.template
/*---
description: Lone rest element (direct binding) (class expression method (default parameter))
esid: sec-class-definitions-runtime-semantics-evaluation
features: [generators, destructuring-binding, default-parameters]
flags: [generated]
includes: [compareArray.js]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
i. Let status be the result of performing
PropertyDefinitionEvaluation for m with arguments proto and
false.
[...]
14.4.13 Runtime Semantics: PropertyDefinitionEvaluation
GeneratorMethod :
* PropertyName ( StrictFormalParameters ) { GeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this GeneratorMethod is strict mode code,
let strict be true. Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be GeneratorFunctionCreate(Method,
StrictFormalParameters, GeneratorBody, scope, strict).
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
BindingRestElement : ... BindingIdentifier
[...]
2. Let A be ! ArrayCreate(0).
3. Let n be 0.
4. Repeat,
[...]
f. Perform ! CreateDataPropertyOrThrow(A, ! ToString(n), nextValue).
g. Set n to n + 1.
---*/
var callCount = 0;
var C = class {
*method([...x] = [1]) {
assert(Array.isArray(x));
assert.compareArray(x, [1]);
callCount = callCount + 1;
}
};
new C().method().next();
assert.sameValue(callCount, 1, 'method invoked exactly once');

View File

@ -0,0 +1,88 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-init-iter-get-err-array-prototype.case
// - src/dstr-binding/error/cls-expr-gen-meth-static.template
/*---
description: Abrupt completion returned by GetIterator (static class expression generator method)
esid: sec-class-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, generators, destructuring-binding]
flags: [generated]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
b. Else,
Let status be the result of performing PropertyDefinitionEvaluation
for m with arguments F and false.
[...]
14.4.13 Runtime Semantics: PropertyDefinitionEvaluation
GeneratorMethod :
* PropertyName ( StrictFormalParameters ) { GeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this GeneratorMethod is strict mode code,
let strict be true. Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be GeneratorFunctionCreate(Method,
StrictFormalParameters, GeneratorBody, scope, strict).
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: BindingInitialization
BindingPattern : ArrayBindingPattern
1. Let iteratorRecord be ? GetIterator(value).
GetIterator ( obj [ , hint [ , method ] ] )
[...]
4. Let iterator be ? Call(method, obj).
Call ( F, V [ , argumentsList ] )
[...]
2. If IsCallable(F) is false, throw a TypeError exception.
---*/
delete Array.prototype[Symbol.iterator];
var C = class {
static *method([x, y, z]) {}
};
assert.throws(TypeError, function() {
C.method([1, 2, 3]);
});

View File

@ -0,0 +1,105 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-elem-id-iter-val-array-prototype.case
// - src/dstr-binding/default/cls-expr-gen-meth-static.template
/*---
description: Array destructuring uses overriden Array.prototype[Symbol.iterator] (static class expression generator method)
esid: sec-class-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, generators, destructuring-binding]
flags: [generated]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
b. Else,
Let status be the result of performing PropertyDefinitionEvaluation
for m with arguments F and false.
[...]
14.4.13 Runtime Semantics: PropertyDefinitionEvaluation
GeneratorMethod :
* PropertyName ( StrictFormalParameters ) { GeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this GeneratorMethod is strict mode code,
let strict be true. Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be GeneratorFunctionCreate(Method,
StrictFormalParameters, GeneratorBody, scope, strict).
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
SingleNameBinding : BindingIdentifier Initializer_opt
1. Let bindingId be StringValue of BindingIdentifier.
2. Let lhs be ? ResolveBinding(bindingId, environment).
3. If iteratorRecord.[[Done]] is false, then
a. Let next be IteratorStep(iteratorRecord).
b. If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
c. ReturnIfAbrupt(next).
d. If next is false, set iteratorRecord.[[Done]] to true.
e. Else,
i. Let v be IteratorValue(next).
ii. If v is an abrupt completion, set iteratorRecord.[[Done]] to true.
iii. ReturnIfAbrupt(v).
[...]
7. Return InitializeReferencedBinding(lhs, v).
---*/
Array.prototype[Symbol.iterator] = function* () {
if (this.length > 0) {
yield this[0];
}
if (this.length > 1) {
yield this[1];
}
if (this.length > 2) {
yield 42;
}
};
var callCount = 0;
var C = class {
static *method([x, y, z]) {
assert.sameValue(x, 1);
assert.sameValue(y, 2);
assert.sameValue(z, 42);
callCount = callCount + 1;
}
};
C.method([1, 2, 3]).next();
assert.sameValue(callCount, 1, 'method invoked exactly once');

View File

@ -0,0 +1,88 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-rest-id-direct.case
// - src/dstr-binding/default/cls-expr-gen-meth-static.template
/*---
description: Lone rest element (direct binding) (static class expression generator method)
esid: sec-class-definitions-runtime-semantics-evaluation
features: [generators, destructuring-binding]
flags: [generated]
includes: [compareArray.js]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
b. Else,
Let status be the result of performing PropertyDefinitionEvaluation
for m with arguments F and false.
[...]
14.4.13 Runtime Semantics: PropertyDefinitionEvaluation
GeneratorMethod :
* PropertyName ( StrictFormalParameters ) { GeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this GeneratorMethod is strict mode code,
let strict be true. Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be GeneratorFunctionCreate(Method,
StrictFormalParameters, GeneratorBody, scope, strict).
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
BindingRestElement : ... BindingIdentifier
[...]
2. Let A be ! ArrayCreate(0).
3. Let n be 0.
4. Repeat,
[...]
f. Perform ! CreateDataPropertyOrThrow(A, ! ToString(n), nextValue).
g. Set n to n + 1.
---*/
var callCount = 0;
var C = class {
static *method([...x]) {
assert(Array.isArray(x));
assert.compareArray(x, [1]);
callCount = callCount + 1;
}
};
C.method([1]).next();
assert.sameValue(callCount, 1, 'method invoked exactly once');

View File

@ -0,0 +1,88 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-init-iter-get-err-array-prototype.case
// - src/dstr-binding/error/cls-expr-gen-meth-static-dflt.template
/*---
description: Abrupt completion returned by GetIterator (static class expression generator method (default parameter))
esid: sec-class-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, generators, destructuring-binding, default-parameters]
flags: [generated]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
b. Else,
Let status be the result of performing PropertyDefinitionEvaluation
for m with arguments F and false.
[...]
14.4.13 Runtime Semantics: PropertyDefinitionEvaluation
GeneratorMethod :
* PropertyName ( StrictFormalParameters ) { GeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this GeneratorMethod is strict mode code,
let strict be true. Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be GeneratorFunctionCreate(Method,
StrictFormalParameters, GeneratorBody, scope, strict).
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: BindingInitialization
BindingPattern : ArrayBindingPattern
1. Let iteratorRecord be ? GetIterator(value).
GetIterator ( obj [ , hint [ , method ] ] )
[...]
4. Let iterator be ? Call(method, obj).
Call ( F, V [ , argumentsList ] )
[...]
2. If IsCallable(F) is false, throw a TypeError exception.
---*/
delete Array.prototype[Symbol.iterator];
var C = class {
static *method([x, y, z] = [1, 2, 3]) {}
};
assert.throws(TypeError, function() {
C.method();
});

View File

@ -0,0 +1,105 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-elem-id-iter-val-array-prototype.case
// - src/dstr-binding/default/cls-expr-gen-meth-static-dflt.template
/*---
description: Array destructuring uses overriden Array.prototype[Symbol.iterator] (static class expression generator method (default parameter))
esid: sec-class-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, generators, destructuring-binding, default-parameters]
flags: [generated]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
b. Else,
Let status be the result of performing PropertyDefinitionEvaluation
for m with arguments F and false.
[...]
14.4.13 Runtime Semantics: PropertyDefinitionEvaluation
GeneratorMethod :
* PropertyName ( StrictFormalParameters ) { GeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this GeneratorMethod is strict mode code,
let strict be true. Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be GeneratorFunctionCreate(Method,
StrictFormalParameters, GeneratorBody, scope, strict).
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
SingleNameBinding : BindingIdentifier Initializer_opt
1. Let bindingId be StringValue of BindingIdentifier.
2. Let lhs be ? ResolveBinding(bindingId, environment).
3. If iteratorRecord.[[Done]] is false, then
a. Let next be IteratorStep(iteratorRecord).
b. If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
c. ReturnIfAbrupt(next).
d. If next is false, set iteratorRecord.[[Done]] to true.
e. Else,
i. Let v be IteratorValue(next).
ii. If v is an abrupt completion, set iteratorRecord.[[Done]] to true.
iii. ReturnIfAbrupt(v).
[...]
7. Return InitializeReferencedBinding(lhs, v).
---*/
Array.prototype[Symbol.iterator] = function* () {
if (this.length > 0) {
yield this[0];
}
if (this.length > 1) {
yield this[1];
}
if (this.length > 2) {
yield 42;
}
};
var callCount = 0;
var C = class {
static *method([x, y, z] = [1, 2, 3]) {
assert.sameValue(x, 1);
assert.sameValue(y, 2);
assert.sameValue(z, 42);
callCount = callCount + 1;
}
};
C.method().next();
assert.sameValue(callCount, 1, 'method invoked exactly once');

View File

@ -0,0 +1,88 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-rest-id-direct.case
// - src/dstr-binding/default/cls-expr-gen-meth-static-dflt.template
/*---
description: Lone rest element (direct binding) (static class expression generator method (default parameter))
esid: sec-class-definitions-runtime-semantics-evaluation
features: [generators, destructuring-binding, default-parameters]
flags: [generated]
includes: [compareArray.js]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
b. Else,
Let status be the result of performing PropertyDefinitionEvaluation
for m with arguments F and false.
[...]
14.4.13 Runtime Semantics: PropertyDefinitionEvaluation
GeneratorMethod :
* PropertyName ( StrictFormalParameters ) { GeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this GeneratorMethod is strict mode code,
let strict be true. Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be GeneratorFunctionCreate(Method,
StrictFormalParameters, GeneratorBody, scope, strict).
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
BindingRestElement : ... BindingIdentifier
[...]
2. Let A be ! ArrayCreate(0).
3. Let n be 0.
4. Repeat,
[...]
f. Perform ! CreateDataPropertyOrThrow(A, ! ToString(n), nextValue).
g. Set n to n + 1.
---*/
var callCount = 0;
var C = class {
static *method([...x] = [1]) {
assert(Array.isArray(x));
assert.compareArray(x, [1]);
callCount = callCount + 1;
}
};
C.method().next();
assert.sameValue(callCount, 1, 'method invoked exactly once');

View File

@ -0,0 +1,87 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-init-iter-get-err-array-prototype.case
// - src/dstr-binding/error/cls-expr-meth.template
/*---
description: Abrupt completion returned by GetIterator (class expression method)
esid: sec-class-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, destructuring-binding]
flags: [generated]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
i. Let status be the result of performing
PropertyDefinitionEvaluation for m with arguments proto and
false.
[...]
14.3.8 Runtime Semantics: DefineMethod
MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
[...]
6. Let closure be FunctionCreate(kind, StrictFormalParameters, FunctionBody,
scope, strict). If functionPrototype was passed as a parameter then pass its
value as the functionPrototype optional argument of FunctionCreate.
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: BindingInitialization
BindingPattern : ArrayBindingPattern
1. Let iteratorRecord be ? GetIterator(value).
GetIterator ( obj [ , hint [ , method ] ] )
[...]
4. Let iterator be ? Call(method, obj).
Call ( F, V [ , argumentsList ] )
[...]
2. If IsCallable(F) is false, throw a TypeError exception.
---*/
delete Array.prototype[Symbol.iterator];
var C = class {
method([x, y, z]) {}
};
var c = new C();
assert.throws(TypeError, function() {
c.method([1, 2, 3]);
});

View File

@ -0,0 +1,102 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-elem-id-iter-val-array-prototype.case
// - src/dstr-binding/default/cls-expr-meth.template
/*---
description: Array destructuring uses overriden Array.prototype[Symbol.iterator] (class expression method)
esid: sec-class-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, generators, destructuring-binding]
flags: [generated]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
i. Let status be the result of performing
PropertyDefinitionEvaluation for m with arguments proto and
false.
[...]
14.3.8 Runtime Semantics: DefineMethod
MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
[...]
6. Let closure be FunctionCreate(kind, StrictFormalParameters, FunctionBody,
scope, strict). If functionPrototype was passed as a parameter then pass its
value as the functionPrototype optional argument of FunctionCreate.
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
SingleNameBinding : BindingIdentifier Initializer_opt
1. Let bindingId be StringValue of BindingIdentifier.
2. Let lhs be ? ResolveBinding(bindingId, environment).
3. If iteratorRecord.[[Done]] is false, then
a. Let next be IteratorStep(iteratorRecord).
b. If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
c. ReturnIfAbrupt(next).
d. If next is false, set iteratorRecord.[[Done]] to true.
e. Else,
i. Let v be IteratorValue(next).
ii. If v is an abrupt completion, set iteratorRecord.[[Done]] to true.
iii. ReturnIfAbrupt(v).
[...]
7. Return InitializeReferencedBinding(lhs, v).
---*/
Array.prototype[Symbol.iterator] = function* () {
if (this.length > 0) {
yield this[0];
}
if (this.length > 1) {
yield this[1];
}
if (this.length > 2) {
yield 42;
}
};
var callCount = 0;
var C = class {
method([x, y, z]) {
assert.sameValue(x, 1);
assert.sameValue(y, 2);
assert.sameValue(z, 42);
callCount = callCount + 1;
}
};
new C().method([1, 2, 3]);
assert.sameValue(callCount, 1, 'method invoked exactly once');

View File

@ -0,0 +1,85 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-rest-id-direct.case
// - src/dstr-binding/default/cls-expr-meth.template
/*---
description: Lone rest element (direct binding) (class expression method)
esid: sec-class-definitions-runtime-semantics-evaluation
features: [destructuring-binding]
flags: [generated]
includes: [compareArray.js]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
i. Let status be the result of performing
PropertyDefinitionEvaluation for m with arguments proto and
false.
[...]
14.3.8 Runtime Semantics: DefineMethod
MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
[...]
6. Let closure be FunctionCreate(kind, StrictFormalParameters, FunctionBody,
scope, strict). If functionPrototype was passed as a parameter then pass its
value as the functionPrototype optional argument of FunctionCreate.
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
BindingRestElement : ... BindingIdentifier
[...]
2. Let A be ! ArrayCreate(0).
3. Let n be 0.
4. Repeat,
[...]
f. Perform ! CreateDataPropertyOrThrow(A, ! ToString(n), nextValue).
g. Set n to n + 1.
---*/
var callCount = 0;
var C = class {
method([...x]) {
assert(Array.isArray(x));
assert.compareArray(x, [1]);
callCount = callCount + 1;
}
};
new C().method([1]);
assert.sameValue(callCount, 1, 'method invoked exactly once');

View File

@ -0,0 +1,87 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-init-iter-get-err-array-prototype.case
// - src/dstr-binding/error/cls-expr-meth-dflt.template
/*---
description: Abrupt completion returned by GetIterator (class expression method (default parameter))
esid: sec-class-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, destructuring-binding, default-parameters]
flags: [generated]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
i. Let status be the result of performing
PropertyDefinitionEvaluation for m with arguments proto and
false.
[...]
14.3.8 Runtime Semantics: DefineMethod
MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
[...]
6. Let closure be FunctionCreate(kind, StrictFormalParameters, FunctionBody,
scope, strict). If functionPrototype was passed as a parameter then pass its
value as the functionPrototype optional argument of FunctionCreate.
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: BindingInitialization
BindingPattern : ArrayBindingPattern
1. Let iteratorRecord be ? GetIterator(value).
GetIterator ( obj [ , hint [ , method ] ] )
[...]
4. Let iterator be ? Call(method, obj).
Call ( F, V [ , argumentsList ] )
[...]
2. If IsCallable(F) is false, throw a TypeError exception.
---*/
delete Array.prototype[Symbol.iterator];
var C = class {
method([x, y, z] = [1, 2, 3]) {}
};
var c = new C();
assert.throws(TypeError, function() {
c.method();
});

View File

@ -0,0 +1,102 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-elem-id-iter-val-array-prototype.case
// - src/dstr-binding/default/cls-expr-meth-dflt.template
/*---
description: Array destructuring uses overriden Array.prototype[Symbol.iterator] (class expression method (default parameter))
esid: sec-class-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, generators, destructuring-binding, default-parameters]
flags: [generated]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
i. Let status be the result of performing
PropertyDefinitionEvaluation for m with arguments proto and
false.
[...]
14.3.8 Runtime Semantics: DefineMethod
MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
[...]
6. Let closure be FunctionCreate(kind, StrictFormalParameters, FunctionBody,
scope, strict). If functionPrototype was passed as a parameter then pass its
value as the functionPrototype optional argument of FunctionCreate.
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
SingleNameBinding : BindingIdentifier Initializer_opt
1. Let bindingId be StringValue of BindingIdentifier.
2. Let lhs be ? ResolveBinding(bindingId, environment).
3. If iteratorRecord.[[Done]] is false, then
a. Let next be IteratorStep(iteratorRecord).
b. If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
c. ReturnIfAbrupt(next).
d. If next is false, set iteratorRecord.[[Done]] to true.
e. Else,
i. Let v be IteratorValue(next).
ii. If v is an abrupt completion, set iteratorRecord.[[Done]] to true.
iii. ReturnIfAbrupt(v).
[...]
7. Return InitializeReferencedBinding(lhs, v).
---*/
Array.prototype[Symbol.iterator] = function* () {
if (this.length > 0) {
yield this[0];
}
if (this.length > 1) {
yield this[1];
}
if (this.length > 2) {
yield 42;
}
};
var callCount = 0;
var C = class {
method([x, y, z] = [1, 2, 3]) {
assert.sameValue(x, 1);
assert.sameValue(y, 2);
assert.sameValue(z, 42);
callCount = callCount + 1;
}
};
new C().method();
assert.sameValue(callCount, 1, 'method invoked exactly once');

View File

@ -0,0 +1,85 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-rest-id-direct.case
// - src/dstr-binding/default/cls-expr-meth-dflt.template
/*---
description: Lone rest element (direct binding) (class expression method (default parameter))
esid: sec-class-definitions-runtime-semantics-evaluation
features: [destructuring-binding, default-parameters]
flags: [generated]
includes: [compareArray.js]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
i. Let status be the result of performing
PropertyDefinitionEvaluation for m with arguments proto and
false.
[...]
14.3.8 Runtime Semantics: DefineMethod
MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
[...]
6. Let closure be FunctionCreate(kind, StrictFormalParameters, FunctionBody,
scope, strict). If functionPrototype was passed as a parameter then pass its
value as the functionPrototype optional argument of FunctionCreate.
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
BindingRestElement : ... BindingIdentifier
[...]
2. Let A be ! ArrayCreate(0).
3. Let n be 0.
4. Repeat,
[...]
f. Perform ! CreateDataPropertyOrThrow(A, ! ToString(n), nextValue).
g. Set n to n + 1.
---*/
var callCount = 0;
var C = class {
method([...x] = [1]) {
assert(Array.isArray(x));
assert.compareArray(x, [1]);
callCount = callCount + 1;
}
};
new C().method();
assert.sameValue(callCount, 1, 'method invoked exactly once');

View File

@ -0,0 +1,85 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-init-iter-get-err-array-prototype.case
// - src/dstr-binding/error/cls-expr-meth-static.template
/*---
description: Abrupt completion returned by GetIterator (static class expression method)
esid: sec-class-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, destructuring-binding]
flags: [generated]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
b. Else,
Let status be the result of performing PropertyDefinitionEvaluation for
m with arguments F and false.
[...]
14.3.8 Runtime Semantics: DefineMethod
MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
[...]
6. Let closure be FunctionCreate(kind, StrictFormalParameters, FunctionBody,
scope, strict). If functionPrototype was passed as a parameter then pass its
value as the functionPrototype optional argument of FunctionCreate.
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: BindingInitialization
BindingPattern : ArrayBindingPattern
1. Let iteratorRecord be ? GetIterator(value).
GetIterator ( obj [ , hint [ , method ] ] )
[...]
4. Let iterator be ? Call(method, obj).
Call ( F, V [ , argumentsList ] )
[...]
2. If IsCallable(F) is false, throw a TypeError exception.
---*/
delete Array.prototype[Symbol.iterator];
var C = class {
static method([x, y, z]) {}
};
assert.throws(TypeError, function() {
C.method([1, 2, 3]);
});

View File

@ -0,0 +1,102 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-elem-id-iter-val-array-prototype.case
// - src/dstr-binding/default/cls-expr-meth-static.template
/*---
description: Array destructuring uses overriden Array.prototype[Symbol.iterator] (static class expression method)
esid: sec-class-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, generators, destructuring-binding]
flags: [generated]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
b. Else,
Let status be the result of performing PropertyDefinitionEvaluation for
m with arguments F and false.
[...]
14.3.8 Runtime Semantics: DefineMethod
MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
[...]
6. Let closure be FunctionCreate(kind, StrictFormalParameters, FunctionBody,
scope, strict). If functionPrototype was passed as a parameter then pass its
value as the functionPrototype optional argument of FunctionCreate.
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
SingleNameBinding : BindingIdentifier Initializer_opt
1. Let bindingId be StringValue of BindingIdentifier.
2. Let lhs be ? ResolveBinding(bindingId, environment).
3. If iteratorRecord.[[Done]] is false, then
a. Let next be IteratorStep(iteratorRecord).
b. If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
c. ReturnIfAbrupt(next).
d. If next is false, set iteratorRecord.[[Done]] to true.
e. Else,
i. Let v be IteratorValue(next).
ii. If v is an abrupt completion, set iteratorRecord.[[Done]] to true.
iii. ReturnIfAbrupt(v).
[...]
7. Return InitializeReferencedBinding(lhs, v).
---*/
Array.prototype[Symbol.iterator] = function* () {
if (this.length > 0) {
yield this[0];
}
if (this.length > 1) {
yield this[1];
}
if (this.length > 2) {
yield 42;
}
};
var callCount = 0;
var C = class {
static method([x, y, z]) {
assert.sameValue(x, 1);
assert.sameValue(y, 2);
assert.sameValue(z, 42);
callCount = callCount + 1;
}
};
C.method([1, 2, 3]);
assert.sameValue(callCount, 1, 'method invoked exactly once');

View File

@ -0,0 +1,85 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-rest-id-direct.case
// - src/dstr-binding/default/cls-expr-meth-static.template
/*---
description: Lone rest element (direct binding) (static class expression method)
esid: sec-class-definitions-runtime-semantics-evaluation
features: [destructuring-binding]
flags: [generated]
includes: [compareArray.js]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
b. Else,
Let status be the result of performing PropertyDefinitionEvaluation for
m with arguments F and false.
[...]
14.3.8 Runtime Semantics: DefineMethod
MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
[...]
6. Let closure be FunctionCreate(kind, StrictFormalParameters, FunctionBody,
scope, strict). If functionPrototype was passed as a parameter then pass its
value as the functionPrototype optional argument of FunctionCreate.
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
BindingRestElement : ... BindingIdentifier
[...]
2. Let A be ! ArrayCreate(0).
3. Let n be 0.
4. Repeat,
[...]
f. Perform ! CreateDataPropertyOrThrow(A, ! ToString(n), nextValue).
g. Set n to n + 1.
---*/
var callCount = 0;
var C = class {
static method([...x]) {
assert(Array.isArray(x));
assert.compareArray(x, [1]);
callCount = callCount + 1;
}
};
C.method([1]);
assert.sameValue(callCount, 1, 'method invoked exactly once');

View File

@ -0,0 +1,85 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-init-iter-get-err-array-prototype.case
// - src/dstr-binding/error/cls-expr-meth-static-dflt.template
/*---
description: Abrupt completion returned by GetIterator (static class expression method (default parameter))
esid: sec-class-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, destructuring-binding, default-parameters]
flags: [generated]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
b. Else,
Let status be the result of performing PropertyDefinitionEvaluation for
m with arguments F and false.
[...]
14.3.8 Runtime Semantics: DefineMethod
MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
[...]
6. Let closure be FunctionCreate(kind, StrictFormalParameters, FunctionBody,
scope, strict). If functionPrototype was passed as a parameter then pass its
value as the functionPrototype optional argument of FunctionCreate.
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: BindingInitialization
BindingPattern : ArrayBindingPattern
1. Let iteratorRecord be ? GetIterator(value).
GetIterator ( obj [ , hint [ , method ] ] )
[...]
4. Let iterator be ? Call(method, obj).
Call ( F, V [ , argumentsList ] )
[...]
2. If IsCallable(F) is false, throw a TypeError exception.
---*/
delete Array.prototype[Symbol.iterator];
var C = class {
static method([x, y, z] = [1, 2, 3]) {}
};
assert.throws(TypeError, function() {
C.method();
});

View File

@ -0,0 +1,102 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-elem-id-iter-val-array-prototype.case
// - src/dstr-binding/default/cls-expr-meth-static-dflt.template
/*---
description: Array destructuring uses overriden Array.prototype[Symbol.iterator] (static class expression method (default parameter))
esid: sec-class-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, generators, destructuring-binding, default-parameters]
flags: [generated]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
b. Else,
Let status be the result of performing PropertyDefinitionEvaluation for
m with arguments F and false.
[...]
14.3.8 Runtime Semantics: DefineMethod
MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
[...]
6. Let closure be FunctionCreate(kind, StrictFormalParameters, FunctionBody,
scope, strict). If functionPrototype was passed as a parameter then pass its
value as the functionPrototype optional argument of FunctionCreate.
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
SingleNameBinding : BindingIdentifier Initializer_opt
1. Let bindingId be StringValue of BindingIdentifier.
2. Let lhs be ? ResolveBinding(bindingId, environment).
3. If iteratorRecord.[[Done]] is false, then
a. Let next be IteratorStep(iteratorRecord).
b. If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
c. ReturnIfAbrupt(next).
d. If next is false, set iteratorRecord.[[Done]] to true.
e. Else,
i. Let v be IteratorValue(next).
ii. If v is an abrupt completion, set iteratorRecord.[[Done]] to true.
iii. ReturnIfAbrupt(v).
[...]
7. Return InitializeReferencedBinding(lhs, v).
---*/
Array.prototype[Symbol.iterator] = function* () {
if (this.length > 0) {
yield this[0];
}
if (this.length > 1) {
yield this[1];
}
if (this.length > 2) {
yield 42;
}
};
var callCount = 0;
var C = class {
static method([x, y, z] = [1, 2, 3]) {
assert.sameValue(x, 1);
assert.sameValue(y, 2);
assert.sameValue(z, 42);
callCount = callCount + 1;
}
};
C.method();
assert.sameValue(callCount, 1, 'method invoked exactly once');

View File

@ -0,0 +1,85 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-rest-id-direct.case
// - src/dstr-binding/default/cls-expr-meth-static-dflt.template
/*---
description: Lone rest element (direct binding) (static class expression method (default parameter))
esid: sec-class-definitions-runtime-semantics-evaluation
features: [destructuring-binding, default-parameters]
flags: [generated]
includes: [compareArray.js]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
b. Else,
Let status be the result of performing PropertyDefinitionEvaluation for
m with arguments F and false.
[...]
14.3.8 Runtime Semantics: DefineMethod
MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
[...]
6. Let closure be FunctionCreate(kind, StrictFormalParameters, FunctionBody,
scope, strict). If functionPrototype was passed as a parameter then pass its
value as the functionPrototype optional argument of FunctionCreate.
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
BindingRestElement : ... BindingIdentifier
[...]
2. Let A be ! ArrayCreate(0).
3. Let n be 0.
4. Repeat,
[...]
f. Perform ! CreateDataPropertyOrThrow(A, ! ToString(n), nextValue).
g. Set n to n + 1.
---*/
var callCount = 0;
var C = class {
static method([...x] = [1]) {
assert(Array.isArray(x));
assert.compareArray(x, [1]);
callCount = callCount + 1;
}
};
C.method();
assert.sameValue(callCount, 1, 'method invoked exactly once');

View File

@ -0,0 +1,109 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-elem-id-iter-val-array-prototype.case
// - src/dstr-binding/default/cls-expr-private-gen-meth.template
/*---
description: Array destructuring uses overriden Array.prototype[Symbol.iterator] (private class expression method)
esid: sec-class-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, generators, class, class-methods-private, destructuring-binding]
flags: [generated]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
i. Let status be the result of performing
PropertyDefinitionEvaluation for m with arguments proto and
false.
[...]
14.4.13 Runtime Semantics: PropertyDefinitionEvaluation
GeneratorMethod :
* PropertyName ( StrictFormalParameters ) { GeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this GeneratorMethod is strict mode code,
let strict be true. Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be GeneratorFunctionCreate(Method,
StrictFormalParameters, GeneratorBody, scope, strict).
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
SingleNameBinding : BindingIdentifier Initializer_opt
1. Let bindingId be StringValue of BindingIdentifier.
2. Let lhs be ? ResolveBinding(bindingId, environment).
3. If iteratorRecord.[[Done]] is false, then
a. Let next be IteratorStep(iteratorRecord).
b. If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
c. ReturnIfAbrupt(next).
d. If next is false, set iteratorRecord.[[Done]] to true.
e. Else,
i. Let v be IteratorValue(next).
ii. If v is an abrupt completion, set iteratorRecord.[[Done]] to true.
iii. ReturnIfAbrupt(v).
[...]
7. Return InitializeReferencedBinding(lhs, v).
---*/
Array.prototype[Symbol.iterator] = function* () {
if (this.length > 0) {
yield this[0];
}
if (this.length > 1) {
yield this[1];
}
if (this.length > 2) {
yield 42;
}
};
var callCount = 0;
var C = class {
* #method([x, y, z]) {
assert.sameValue(x, 1);
assert.sameValue(y, 2);
assert.sameValue(z, 42);
callCount = callCount + 1;
}
get method() {
return this.#method;
}
};
new C().method([1, 2, 3]).next();
assert.sameValue(callCount, 1, 'method invoked exactly once');

View File

@ -0,0 +1,92 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-rest-id-direct.case
// - src/dstr-binding/default/cls-expr-private-gen-meth.template
/*---
description: Lone rest element (direct binding) (private class expression method)
esid: sec-class-definitions-runtime-semantics-evaluation
features: [class, class-methods-private, generators, destructuring-binding]
flags: [generated]
includes: [compareArray.js]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
i. Let status be the result of performing
PropertyDefinitionEvaluation for m with arguments proto and
false.
[...]
14.4.13 Runtime Semantics: PropertyDefinitionEvaluation
GeneratorMethod :
* PropertyName ( StrictFormalParameters ) { GeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this GeneratorMethod is strict mode code,
let strict be true. Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be GeneratorFunctionCreate(Method,
StrictFormalParameters, GeneratorBody, scope, strict).
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
BindingRestElement : ... BindingIdentifier
[...]
2. Let A be ! ArrayCreate(0).
3. Let n be 0.
4. Repeat,
[...]
f. Perform ! CreateDataPropertyOrThrow(A, ! ToString(n), nextValue).
g. Set n to n + 1.
---*/
var callCount = 0;
var C = class {
* #method([...x]) {
assert(Array.isArray(x));
assert.compareArray(x, [1]);
callCount = callCount + 1;
}
get method() {
return this.#method;
}
};
new C().method([1]).next();
assert.sameValue(callCount, 1, 'method invoked exactly once');

View File

@ -0,0 +1,109 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-elem-id-iter-val-array-prototype.case
// - src/dstr-binding/default/cls-expr-private-gen-meth-dflt.template
/*---
description: Array destructuring uses overriden Array.prototype[Symbol.iterator] (private class expression method (default parameter))
esid: sec-class-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, generators, class, class-methods-private, destructuring-binding, default-parameters]
flags: [generated]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
i. Let status be the result of performing
PropertyDefinitionEvaluation for m with arguments proto and
false.
[...]
14.4.13 Runtime Semantics: PropertyDefinitionEvaluation
GeneratorMethod :
* PropertyName ( StrictFormalParameters ) { GeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this GeneratorMethod is strict mode code,
let strict be true. Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be GeneratorFunctionCreate(Method,
StrictFormalParameters, GeneratorBody, scope, strict).
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
SingleNameBinding : BindingIdentifier Initializer_opt
1. Let bindingId be StringValue of BindingIdentifier.
2. Let lhs be ? ResolveBinding(bindingId, environment).
3. If iteratorRecord.[[Done]] is false, then
a. Let next be IteratorStep(iteratorRecord).
b. If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
c. ReturnIfAbrupt(next).
d. If next is false, set iteratorRecord.[[Done]] to true.
e. Else,
i. Let v be IteratorValue(next).
ii. If v is an abrupt completion, set iteratorRecord.[[Done]] to true.
iii. ReturnIfAbrupt(v).
[...]
7. Return InitializeReferencedBinding(lhs, v).
---*/
Array.prototype[Symbol.iterator] = function* () {
if (this.length > 0) {
yield this[0];
}
if (this.length > 1) {
yield this[1];
}
if (this.length > 2) {
yield 42;
}
};
var callCount = 0;
var C = class {
* #method([x, y, z] = [1, 2, 3]) {
assert.sameValue(x, 1);
assert.sameValue(y, 2);
assert.sameValue(z, 42);
callCount = callCount + 1;
}
get method() {
return this.#method;
}
};
new C().method().next();
assert.sameValue(callCount, 1, 'method invoked exactly once');

View File

@ -0,0 +1,92 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-rest-id-direct.case
// - src/dstr-binding/default/cls-expr-private-gen-meth-dflt.template
/*---
description: Lone rest element (direct binding) (private class expression method (default parameter))
esid: sec-class-definitions-runtime-semantics-evaluation
features: [class, class-methods-private, generators, destructuring-binding, default-parameters]
flags: [generated]
includes: [compareArray.js]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
i. Let status be the result of performing
PropertyDefinitionEvaluation for m with arguments proto and
false.
[...]
14.4.13 Runtime Semantics: PropertyDefinitionEvaluation
GeneratorMethod :
* PropertyName ( StrictFormalParameters ) { GeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this GeneratorMethod is strict mode code,
let strict be true. Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be GeneratorFunctionCreate(Method,
StrictFormalParameters, GeneratorBody, scope, strict).
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
BindingRestElement : ... BindingIdentifier
[...]
2. Let A be ! ArrayCreate(0).
3. Let n be 0.
4. Repeat,
[...]
f. Perform ! CreateDataPropertyOrThrow(A, ! ToString(n), nextValue).
g. Set n to n + 1.
---*/
var callCount = 0;
var C = class {
* #method([...x] = [1]) {
assert(Array.isArray(x));
assert.compareArray(x, [1]);
callCount = callCount + 1;
}
get method() {
return this.#method;
}
};
new C().method().next();
assert.sameValue(callCount, 1, 'method invoked exactly once');

View File

@ -0,0 +1,109 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-elem-id-iter-val-array-prototype.case
// - src/dstr-binding/default/cls-expr-private-gen-meth-static.template
/*---
description: Array destructuring uses overriden Array.prototype[Symbol.iterator] (private static class expression generator method)
esid: sec-class-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, generators, class, class-static-methods-private, destructuring-binding]
flags: [generated]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
b. Else,
Let status be the result of performing PropertyDefinitionEvaluation
for m with arguments F and false.
[...]
14.4.13 Runtime Semantics: PropertyDefinitionEvaluation
GeneratorMethod :
* PropertyName ( StrictFormalParameters ) { GeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this GeneratorMethod is strict mode code,
let strict be true. Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be GeneratorFunctionCreate(Method,
StrictFormalParameters, GeneratorBody, scope, strict).
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
SingleNameBinding : BindingIdentifier Initializer_opt
1. Let bindingId be StringValue of BindingIdentifier.
2. Let lhs be ? ResolveBinding(bindingId, environment).
3. If iteratorRecord.[[Done]] is false, then
a. Let next be IteratorStep(iteratorRecord).
b. If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
c. ReturnIfAbrupt(next).
d. If next is false, set iteratorRecord.[[Done]] to true.
e. Else,
i. Let v be IteratorValue(next).
ii. If v is an abrupt completion, set iteratorRecord.[[Done]] to true.
iii. ReturnIfAbrupt(v).
[...]
7. Return InitializeReferencedBinding(lhs, v).
---*/
Array.prototype[Symbol.iterator] = function* () {
if (this.length > 0) {
yield this[0];
}
if (this.length > 1) {
yield this[1];
}
if (this.length > 2) {
yield 42;
}
};
var callCount = 0;
var C = class {
static * #method([x, y, z]) {
assert.sameValue(x, 1);
assert.sameValue(y, 2);
assert.sameValue(z, 42);
callCount = callCount + 1;
}
static get method() {
return this.#method;
}
};
C.method([1, 2, 3]).next();
assert.sameValue(callCount, 1, 'method invoked exactly once');

View File

@ -0,0 +1,92 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-rest-id-direct.case
// - src/dstr-binding/default/cls-expr-private-gen-meth-static.template
/*---
description: Lone rest element (direct binding) (private static class expression generator method)
esid: sec-class-definitions-runtime-semantics-evaluation
features: [class, class-static-methods-private, generators, destructuring-binding]
flags: [generated]
includes: [compareArray.js]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
b. Else,
Let status be the result of performing PropertyDefinitionEvaluation
for m with arguments F and false.
[...]
14.4.13 Runtime Semantics: PropertyDefinitionEvaluation
GeneratorMethod :
* PropertyName ( StrictFormalParameters ) { GeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this GeneratorMethod is strict mode code,
let strict be true. Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be GeneratorFunctionCreate(Method,
StrictFormalParameters, GeneratorBody, scope, strict).
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
BindingRestElement : ... BindingIdentifier
[...]
2. Let A be ! ArrayCreate(0).
3. Let n be 0.
4. Repeat,
[...]
f. Perform ! CreateDataPropertyOrThrow(A, ! ToString(n), nextValue).
g. Set n to n + 1.
---*/
var callCount = 0;
var C = class {
static * #method([...x]) {
assert(Array.isArray(x));
assert.compareArray(x, [1]);
callCount = callCount + 1;
}
static get method() {
return this.#method;
}
};
C.method([1]).next();
assert.sameValue(callCount, 1, 'method invoked exactly once');

View File

@ -0,0 +1,109 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-elem-id-iter-val-array-prototype.case
// - src/dstr-binding/default/cls-expr-private-gen-meth-static-dflt.template
/*---
description: Array destructuring uses overriden Array.prototype[Symbol.iterator] (private static class expression generator method (default parameter))
esid: sec-class-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, generators, class, class-static-methods-private, destructuring-binding, default-parameters]
flags: [generated]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
b. Else,
Let status be the result of performing PropertyDefinitionEvaluation
for m with arguments F and false.
[...]
14.4.13 Runtime Semantics: PropertyDefinitionEvaluation
GeneratorMethod :
* PropertyName ( StrictFormalParameters ) { GeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this GeneratorMethod is strict mode code,
let strict be true. Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be GeneratorFunctionCreate(Method,
StrictFormalParameters, GeneratorBody, scope, strict).
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
SingleNameBinding : BindingIdentifier Initializer_opt
1. Let bindingId be StringValue of BindingIdentifier.
2. Let lhs be ? ResolveBinding(bindingId, environment).
3. If iteratorRecord.[[Done]] is false, then
a. Let next be IteratorStep(iteratorRecord).
b. If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
c. ReturnIfAbrupt(next).
d. If next is false, set iteratorRecord.[[Done]] to true.
e. Else,
i. Let v be IteratorValue(next).
ii. If v is an abrupt completion, set iteratorRecord.[[Done]] to true.
iii. ReturnIfAbrupt(v).
[...]
7. Return InitializeReferencedBinding(lhs, v).
---*/
Array.prototype[Symbol.iterator] = function* () {
if (this.length > 0) {
yield this[0];
}
if (this.length > 1) {
yield this[1];
}
if (this.length > 2) {
yield 42;
}
};
var callCount = 0;
var C = class {
static * #method([x, y, z] = [1, 2, 3]) {
assert.sameValue(x, 1);
assert.sameValue(y, 2);
assert.sameValue(z, 42);
callCount = callCount + 1;
}
static get method() {
return this.#method;
}
};
C.method().next();
assert.sameValue(callCount, 1, 'method invoked exactly once');

View File

@ -0,0 +1,92 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-rest-id-direct.case
// - src/dstr-binding/default/cls-expr-private-gen-meth-static-dflt.template
/*---
description: Lone rest element (direct binding) (private static class expression generator method (default parameter))
esid: sec-class-definitions-runtime-semantics-evaluation
features: [class, class-static-methods-private, generators, destructuring-binding, default-parameters]
flags: [generated]
includes: [compareArray.js]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
b. Else,
Let status be the result of performing PropertyDefinitionEvaluation
for m with arguments F and false.
[...]
14.4.13 Runtime Semantics: PropertyDefinitionEvaluation
GeneratorMethod :
* PropertyName ( StrictFormalParameters ) { GeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this GeneratorMethod is strict mode code,
let strict be true. Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be GeneratorFunctionCreate(Method,
StrictFormalParameters, GeneratorBody, scope, strict).
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
BindingRestElement : ... BindingIdentifier
[...]
2. Let A be ! ArrayCreate(0).
3. Let n be 0.
4. Repeat,
[...]
f. Perform ! CreateDataPropertyOrThrow(A, ! ToString(n), nextValue).
g. Set n to n + 1.
---*/
var callCount = 0;
var C = class {
static * #method([...x] = [1]) {
assert(Array.isArray(x));
assert.compareArray(x, [1]);
callCount = callCount + 1;
}
static get method() {
return this.#method;
}
};
C.method().next();
assert.sameValue(callCount, 1, 'method invoked exactly once');

View File

@ -0,0 +1,106 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-elem-id-iter-val-array-prototype.case
// - src/dstr-binding/default/cls-expr-private-meth.template
/*---
description: Array destructuring uses overriden Array.prototype[Symbol.iterator] (private class expression method)
esid: sec-class-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, generators, class, class-methods-private, destructuring-binding]
flags: [generated]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
i. Let status be the result of performing
PropertyDefinitionEvaluation for m with arguments proto and
false.
[...]
14.3.8 Runtime Semantics: DefineMethod
MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
[...]
6. Let closure be FunctionCreate(kind, StrictFormalParameters, FunctionBody,
scope, strict). If functionPrototype was passed as a parameter then pass its
value as the functionPrototype optional argument of FunctionCreate.
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
SingleNameBinding : BindingIdentifier Initializer_opt
1. Let bindingId be StringValue of BindingIdentifier.
2. Let lhs be ? ResolveBinding(bindingId, environment).
3. If iteratorRecord.[[Done]] is false, then
a. Let next be IteratorStep(iteratorRecord).
b. If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
c. ReturnIfAbrupt(next).
d. If next is false, set iteratorRecord.[[Done]] to true.
e. Else,
i. Let v be IteratorValue(next).
ii. If v is an abrupt completion, set iteratorRecord.[[Done]] to true.
iii. ReturnIfAbrupt(v).
[...]
7. Return InitializeReferencedBinding(lhs, v).
---*/
Array.prototype[Symbol.iterator] = function* () {
if (this.length > 0) {
yield this[0];
}
if (this.length > 1) {
yield this[1];
}
if (this.length > 2) {
yield 42;
}
};
var callCount = 0;
var C = class {
#method([x, y, z]) {
assert.sameValue(x, 1);
assert.sameValue(y, 2);
assert.sameValue(z, 42);
callCount = callCount + 1;
}
get method() {
return this.#method;
}
};
new C().method([1, 2, 3]);
assert.sameValue(callCount, 1, 'method invoked exactly once');

View File

@ -0,0 +1,89 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-rest-id-direct.case
// - src/dstr-binding/default/cls-expr-private-meth.template
/*---
description: Lone rest element (direct binding) (private class expression method)
esid: sec-class-definitions-runtime-semantics-evaluation
features: [class, class-methods-private, destructuring-binding]
flags: [generated]
includes: [compareArray.js]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
i. Let status be the result of performing
PropertyDefinitionEvaluation for m with arguments proto and
false.
[...]
14.3.8 Runtime Semantics: DefineMethod
MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
[...]
6. Let closure be FunctionCreate(kind, StrictFormalParameters, FunctionBody,
scope, strict). If functionPrototype was passed as a parameter then pass its
value as the functionPrototype optional argument of FunctionCreate.
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
BindingRestElement : ... BindingIdentifier
[...]
2. Let A be ! ArrayCreate(0).
3. Let n be 0.
4. Repeat,
[...]
f. Perform ! CreateDataPropertyOrThrow(A, ! ToString(n), nextValue).
g. Set n to n + 1.
---*/
var callCount = 0;
var C = class {
#method([...x]) {
assert(Array.isArray(x));
assert.compareArray(x, [1]);
callCount = callCount + 1;
}
get method() {
return this.#method;
}
};
new C().method([1]);
assert.sameValue(callCount, 1, 'method invoked exactly once');

View File

@ -0,0 +1,106 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-elem-id-iter-val-array-prototype.case
// - src/dstr-binding/default/cls-expr-private-meth-dflt.template
/*---
description: Array destructuring uses overriden Array.prototype[Symbol.iterator] (private class expression method (default parameter))
esid: sec-class-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, generators, class, class-methods-private, destructuring-binding, default-parameters]
flags: [generated]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
i. Let status be the result of performing
PropertyDefinitionEvaluation for m with arguments proto and
false.
[...]
14.3.8 Runtime Semantics: DefineMethod
MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
[...]
6. Let closure be FunctionCreate(kind, StrictFormalParameters, FunctionBody,
scope, strict). If functionPrototype was passed as a parameter then pass its
value as the functionPrototype optional argument of FunctionCreate.
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
SingleNameBinding : BindingIdentifier Initializer_opt
1. Let bindingId be StringValue of BindingIdentifier.
2. Let lhs be ? ResolveBinding(bindingId, environment).
3. If iteratorRecord.[[Done]] is false, then
a. Let next be IteratorStep(iteratorRecord).
b. If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
c. ReturnIfAbrupt(next).
d. If next is false, set iteratorRecord.[[Done]] to true.
e. Else,
i. Let v be IteratorValue(next).
ii. If v is an abrupt completion, set iteratorRecord.[[Done]] to true.
iii. ReturnIfAbrupt(v).
[...]
7. Return InitializeReferencedBinding(lhs, v).
---*/
Array.prototype[Symbol.iterator] = function* () {
if (this.length > 0) {
yield this[0];
}
if (this.length > 1) {
yield this[1];
}
if (this.length > 2) {
yield 42;
}
};
var callCount = 0;
var C = class {
#method([x, y, z] = [1, 2, 3]) {
assert.sameValue(x, 1);
assert.sameValue(y, 2);
assert.sameValue(z, 42);
callCount = callCount + 1;
}
get method() {
return this.#method;
}
};
new C().method();
assert.sameValue(callCount, 1, 'method invoked exactly once');

View File

@ -0,0 +1,89 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-rest-id-direct.case
// - src/dstr-binding/default/cls-expr-private-meth-dflt.template
/*---
description: Lone rest element (direct binding) (private class expression method (default parameter))
esid: sec-class-definitions-runtime-semantics-evaluation
features: [class, class-methods-private, destructuring-binding, default-parameters]
flags: [generated]
includes: [compareArray.js]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
i. Let status be the result of performing
PropertyDefinitionEvaluation for m with arguments proto and
false.
[...]
14.3.8 Runtime Semantics: DefineMethod
MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
[...]
6. Let closure be FunctionCreate(kind, StrictFormalParameters, FunctionBody,
scope, strict). If functionPrototype was passed as a parameter then pass its
value as the functionPrototype optional argument of FunctionCreate.
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
BindingRestElement : ... BindingIdentifier
[...]
2. Let A be ! ArrayCreate(0).
3. Let n be 0.
4. Repeat,
[...]
f. Perform ! CreateDataPropertyOrThrow(A, ! ToString(n), nextValue).
g. Set n to n + 1.
---*/
var callCount = 0;
var C = class {
#method([...x] = [1]) {
assert(Array.isArray(x));
assert.compareArray(x, [1]);
callCount = callCount + 1;
}
get method() {
return this.#method;
}
};
new C().method();
assert.sameValue(callCount, 1, 'method invoked exactly once');

View File

@ -0,0 +1,106 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-elem-id-iter-val-array-prototype.case
// - src/dstr-binding/default/cls-expr-private-meth-static.template
/*---
description: Array destructuring uses overriden Array.prototype[Symbol.iterator] (private static class expression method)
esid: sec-class-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, generators, class, class-static-methods-private, destructuring-binding]
flags: [generated]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
b. Else,
Let status be the result of performing PropertyDefinitionEvaluation for
m with arguments F and false.
[...]
14.3.8 Runtime Semantics: DefineMethod
MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
[...]
6. Let closure be FunctionCreate(kind, StrictFormalParameters, FunctionBody,
scope, strict). If functionPrototype was passed as a parameter then pass its
value as the functionPrototype optional argument of FunctionCreate.
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
SingleNameBinding : BindingIdentifier Initializer_opt
1. Let bindingId be StringValue of BindingIdentifier.
2. Let lhs be ? ResolveBinding(bindingId, environment).
3. If iteratorRecord.[[Done]] is false, then
a. Let next be IteratorStep(iteratorRecord).
b. If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
c. ReturnIfAbrupt(next).
d. If next is false, set iteratorRecord.[[Done]] to true.
e. Else,
i. Let v be IteratorValue(next).
ii. If v is an abrupt completion, set iteratorRecord.[[Done]] to true.
iii. ReturnIfAbrupt(v).
[...]
7. Return InitializeReferencedBinding(lhs, v).
---*/
Array.prototype[Symbol.iterator] = function* () {
if (this.length > 0) {
yield this[0];
}
if (this.length > 1) {
yield this[1];
}
if (this.length > 2) {
yield 42;
}
};
var callCount = 0;
var C = class {
static #method([x, y, z]) {
assert.sameValue(x, 1);
assert.sameValue(y, 2);
assert.sameValue(z, 42);
callCount = callCount + 1;
}
static get method() {
return this.#method;
}
};
C.method([1, 2, 3]);
assert.sameValue(callCount, 1, 'method invoked exactly once');

View File

@ -0,0 +1,89 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-rest-id-direct.case
// - src/dstr-binding/default/cls-expr-private-meth-static.template
/*---
description: Lone rest element (direct binding) (private static class expression method)
esid: sec-class-definitions-runtime-semantics-evaluation
features: [class, class-static-methods-private, destructuring-binding]
flags: [generated]
includes: [compareArray.js]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
b. Else,
Let status be the result of performing PropertyDefinitionEvaluation for
m with arguments F and false.
[...]
14.3.8 Runtime Semantics: DefineMethod
MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
[...]
6. Let closure be FunctionCreate(kind, StrictFormalParameters, FunctionBody,
scope, strict). If functionPrototype was passed as a parameter then pass its
value as the functionPrototype optional argument of FunctionCreate.
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
BindingRestElement : ... BindingIdentifier
[...]
2. Let A be ! ArrayCreate(0).
3. Let n be 0.
4. Repeat,
[...]
f. Perform ! CreateDataPropertyOrThrow(A, ! ToString(n), nextValue).
g. Set n to n + 1.
---*/
var callCount = 0;
var C = class {
static #method([...x]) {
assert(Array.isArray(x));
assert.compareArray(x, [1]);
callCount = callCount + 1;
}
static get method() {
return this.#method;
}
};
C.method([1]);
assert.sameValue(callCount, 1, 'method invoked exactly once');

View File

@ -0,0 +1,106 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-elem-id-iter-val-array-prototype.case
// - src/dstr-binding/default/cls-expr-private-meth-static-dflt.template
/*---
description: Array destructuring uses overriden Array.prototype[Symbol.iterator] (private static class expression method (default parameter))
esid: sec-class-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, generators, class, class-static-methods-private, destructuring-binding, default-parameters]
flags: [generated]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
b. Else,
Let status be the result of performing PropertyDefinitionEvaluation for
m with arguments F and false.
[...]
14.3.8 Runtime Semantics: DefineMethod
MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
[...]
6. Let closure be FunctionCreate(kind, StrictFormalParameters, FunctionBody,
scope, strict). If functionPrototype was passed as a parameter then pass its
value as the functionPrototype optional argument of FunctionCreate.
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
SingleNameBinding : BindingIdentifier Initializer_opt
1. Let bindingId be StringValue of BindingIdentifier.
2. Let lhs be ? ResolveBinding(bindingId, environment).
3. If iteratorRecord.[[Done]] is false, then
a. Let next be IteratorStep(iteratorRecord).
b. If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
c. ReturnIfAbrupt(next).
d. If next is false, set iteratorRecord.[[Done]] to true.
e. Else,
i. Let v be IteratorValue(next).
ii. If v is an abrupt completion, set iteratorRecord.[[Done]] to true.
iii. ReturnIfAbrupt(v).
[...]
7. Return InitializeReferencedBinding(lhs, v).
---*/
Array.prototype[Symbol.iterator] = function* () {
if (this.length > 0) {
yield this[0];
}
if (this.length > 1) {
yield this[1];
}
if (this.length > 2) {
yield 42;
}
};
var callCount = 0;
var C = class {
static #method([x, y, z] = [1, 2, 3]) {
assert.sameValue(x, 1);
assert.sameValue(y, 2);
assert.sameValue(z, 42);
callCount = callCount + 1;
}
static get method() {
return this.#method;
}
};
C.method();
assert.sameValue(callCount, 1, 'method invoked exactly once');

View File

@ -0,0 +1,89 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-rest-id-direct.case
// - src/dstr-binding/default/cls-expr-private-meth-static-dflt.template
/*---
description: Lone rest element (direct binding) (private static class expression method (default parameter))
esid: sec-class-definitions-runtime-semantics-evaluation
features: [class, class-static-methods-private, destructuring-binding, default-parameters]
flags: [generated]
includes: [compareArray.js]
info: |
ClassExpression : class BindingIdentifieropt ClassTail
1. If BindingIdentifieropt is not present, let className be undefined.
2. Else, let className be StringValue of BindingIdentifier.
3. Let value be the result of ClassDefinitionEvaluation of ClassTail
with argument className.
[...]
14.5.14 Runtime Semantics: ClassDefinitionEvaluation
21. For each ClassElement m in order from methods
a. If IsStatic of m is false, then
b. Else,
Let status be the result of performing PropertyDefinitionEvaluation for
m with arguments F and false.
[...]
14.3.8 Runtime Semantics: DefineMethod
MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
[...]
6. Let closure be FunctionCreate(kind, StrictFormalParameters, FunctionBody,
scope, strict). If functionPrototype was passed as a parameter then pass its
value as the functionPrototype optional argument of FunctionCreate.
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
BindingRestElement : ... BindingIdentifier
[...]
2. Let A be ! ArrayCreate(0).
3. Let n be 0.
4. Repeat,
[...]
f. Perform ! CreateDataPropertyOrThrow(A, ! ToString(n), nextValue).
g. Set n to n + 1.
---*/
var callCount = 0;
var C = class {
static #method([...x] = [1]) {
assert(Array.isArray(x));
assert.compareArray(x, [1]);
callCount = callCount + 1;
}
static get method() {
return this.#method;
}
};
C.method();
assert.sameValue(callCount, 1, 'method invoked exactly once');

View File

@ -0,0 +1,63 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-init-iter-get-err-array-prototype.case
// - src/dstr-binding/error/func-expr.template
/*---
description: Abrupt completion returned by GetIterator (function expression)
esid: sec-function-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, destructuring-binding]
flags: [generated]
info: |
FunctionExpression : function ( FormalParameters ) { FunctionBody }
[...]
3. Let closure be FunctionCreate(Normal, FormalParameters, FunctionBody,
scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: BindingInitialization
BindingPattern : ArrayBindingPattern
1. Let iteratorRecord be ? GetIterator(value).
GetIterator ( obj [ , hint [ , method ] ] )
[...]
4. Let iterator be ? Call(method, obj).
Call ( F, V [ , argumentsList ] )
[...]
2. If IsCallable(F) is false, throw a TypeError exception.
---*/
delete Array.prototype[Symbol.iterator];
var f = function([x, y, z]) {};
assert.throws(TypeError, function() {
f([1, 2, 3]);
});

View File

@ -0,0 +1,81 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-elem-id-iter-val-array-prototype.case
// - src/dstr-binding/default/func-expr.template
/*---
description: Array destructuring uses overriden Array.prototype[Symbol.iterator] (function expression)
esid: sec-function-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, generators, destructuring-binding]
flags: [generated]
info: |
FunctionExpression : function ( FormalParameters ) { FunctionBody }
[...]
3. Let closure be FunctionCreate(Normal, FormalParameters, FunctionBody,
scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
SingleNameBinding : BindingIdentifier Initializer_opt
1. Let bindingId be StringValue of BindingIdentifier.
2. Let lhs be ? ResolveBinding(bindingId, environment).
3. If iteratorRecord.[[Done]] is false, then
a. Let next be IteratorStep(iteratorRecord).
b. If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
c. ReturnIfAbrupt(next).
d. If next is false, set iteratorRecord.[[Done]] to true.
e. Else,
i. Let v be IteratorValue(next).
ii. If v is an abrupt completion, set iteratorRecord.[[Done]] to true.
iii. ReturnIfAbrupt(v).
[...]
7. Return InitializeReferencedBinding(lhs, v).
---*/
Array.prototype[Symbol.iterator] = function* () {
if (this.length > 0) {
yield this[0];
}
if (this.length > 1) {
yield this[1];
}
if (this.length > 2) {
yield 42;
}
};
var callCount = 0;
var f;
f = function([x, y, z]) {
assert.sameValue(x, 1);
assert.sameValue(y, 2);
assert.sameValue(z, 42);
callCount = callCount + 1;
};
f([1, 2, 3]);
assert.sameValue(callCount, 1, 'function invoked exactly once');

View File

@ -0,0 +1,64 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-rest-id-direct.case
// - src/dstr-binding/default/func-expr.template
/*---
description: Lone rest element (direct binding) (function expression)
esid: sec-function-definitions-runtime-semantics-evaluation
features: [destructuring-binding]
flags: [generated]
includes: [compareArray.js]
info: |
FunctionExpression : function ( FormalParameters ) { FunctionBody }
[...]
3. Let closure be FunctionCreate(Normal, FormalParameters, FunctionBody,
scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
BindingRestElement : ... BindingIdentifier
[...]
2. Let A be ! ArrayCreate(0).
3. Let n be 0.
4. Repeat,
[...]
f. Perform ! CreateDataPropertyOrThrow(A, ! ToString(n), nextValue).
g. Set n to n + 1.
---*/
var callCount = 0;
var f;
f = function([...x]) {
assert(Array.isArray(x));
assert.compareArray(x, [1]);
callCount = callCount + 1;
};
f([1]);
assert.sameValue(callCount, 1, 'function invoked exactly once');

View File

@ -0,0 +1,63 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-init-iter-get-err-array-prototype.case
// - src/dstr-binding/error/func-expr-dflt.template
/*---
description: Abrupt completion returned by GetIterator (function expression (default parameter))
esid: sec-function-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, destructuring-binding, default-parameters]
flags: [generated]
info: |
FunctionExpression : function ( FormalParameters ) { FunctionBody }
[...]
3. Let closure be FunctionCreate(Normal, FormalParameters, FunctionBody,
scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: BindingInitialization
BindingPattern : ArrayBindingPattern
1. Let iteratorRecord be ? GetIterator(value).
GetIterator ( obj [ , hint [ , method ] ] )
[...]
4. Let iterator be ? Call(method, obj).
Call ( F, V [ , argumentsList ] )
[...]
2. If IsCallable(F) is false, throw a TypeError exception.
---*/
delete Array.prototype[Symbol.iterator];
var f = function([x, y, z] = [1, 2, 3]) {};
assert.throws(TypeError, function() {
f();
});

View File

@ -0,0 +1,81 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-elem-id-iter-val-array-prototype.case
// - src/dstr-binding/default/func-expr-dflt.template
/*---
description: Array destructuring uses overriden Array.prototype[Symbol.iterator] (function expression (default parameter))
esid: sec-function-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, generators, destructuring-binding, default-parameters]
flags: [generated]
info: |
FunctionExpression : function ( FormalParameters ) { FunctionBody }
[...]
3. Let closure be FunctionCreate(Normal, FormalParameters, FunctionBody,
scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
SingleNameBinding : BindingIdentifier Initializer_opt
1. Let bindingId be StringValue of BindingIdentifier.
2. Let lhs be ? ResolveBinding(bindingId, environment).
3. If iteratorRecord.[[Done]] is false, then
a. Let next be IteratorStep(iteratorRecord).
b. If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
c. ReturnIfAbrupt(next).
d. If next is false, set iteratorRecord.[[Done]] to true.
e. Else,
i. Let v be IteratorValue(next).
ii. If v is an abrupt completion, set iteratorRecord.[[Done]] to true.
iii. ReturnIfAbrupt(v).
[...]
7. Return InitializeReferencedBinding(lhs, v).
---*/
Array.prototype[Symbol.iterator] = function* () {
if (this.length > 0) {
yield this[0];
}
if (this.length > 1) {
yield this[1];
}
if (this.length > 2) {
yield 42;
}
};
var callCount = 0;
var f;
f = function([x, y, z] = [1, 2, 3]) {
assert.sameValue(x, 1);
assert.sameValue(y, 2);
assert.sameValue(z, 42);
callCount = callCount + 1;
};
f();
assert.sameValue(callCount, 1, 'function invoked exactly once');

View File

@ -0,0 +1,64 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-rest-id-direct.case
// - src/dstr-binding/default/func-expr-dflt.template
/*---
description: Lone rest element (direct binding) (function expression (default parameter))
esid: sec-function-definitions-runtime-semantics-evaluation
features: [destructuring-binding, default-parameters]
flags: [generated]
includes: [compareArray.js]
info: |
FunctionExpression : function ( FormalParameters ) { FunctionBody }
[...]
3. Let closure be FunctionCreate(Normal, FormalParameters, FunctionBody,
scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
BindingRestElement : ... BindingIdentifier
[...]
2. Let A be ! ArrayCreate(0).
3. Let n be 0.
4. Repeat,
[...]
f. Perform ! CreateDataPropertyOrThrow(A, ! ToString(n), nextValue).
g. Set n to n + 1.
---*/
var callCount = 0;
var f;
f = function([...x] = [1]) {
assert(Array.isArray(x));
assert.compareArray(x, [1]);
callCount = callCount + 1;
};
f();
assert.sameValue(callCount, 1, 'function invoked exactly once');

View File

@ -0,0 +1,63 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-init-iter-get-err-array-prototype.case
// - src/dstr-binding/error/gen-func-expr.template
/*---
description: Abrupt completion returned by GetIterator (generator function expression)
esid: sec-generator-function-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, generators, destructuring-binding]
flags: [generated]
info: |
GeneratorExpression : function * ( FormalParameters ) { GeneratorBody }
[...]
3. Let closure be GeneratorFunctionCreate(Normal, FormalParameters,
GeneratorBody, scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: BindingInitialization
BindingPattern : ArrayBindingPattern
1. Let iteratorRecord be ? GetIterator(value).
GetIterator ( obj [ , hint [ , method ] ] )
[...]
4. Let iterator be ? Call(method, obj).
Call ( F, V [ , argumentsList ] )
[...]
2. If IsCallable(F) is false, throw a TypeError exception.
---*/
delete Array.prototype[Symbol.iterator];
var f = function*([x, y, z]) {};
assert.throws(TypeError, function() {
f([1, 2, 3]);
});

View File

@ -0,0 +1,81 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-elem-id-iter-val-array-prototype.case
// - src/dstr-binding/default/gen-func-expr.template
/*---
description: Array destructuring uses overriden Array.prototype[Symbol.iterator] (generator function expression)
esid: sec-generator-function-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, generators, destructuring-binding]
flags: [generated]
info: |
GeneratorExpression : function * ( FormalParameters ) { GeneratorBody }
[...]
3. Let closure be GeneratorFunctionCreate(Normal, FormalParameters,
GeneratorBody, scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
SingleNameBinding : BindingIdentifier Initializer_opt
1. Let bindingId be StringValue of BindingIdentifier.
2. Let lhs be ? ResolveBinding(bindingId, environment).
3. If iteratorRecord.[[Done]] is false, then
a. Let next be IteratorStep(iteratorRecord).
b. If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
c. ReturnIfAbrupt(next).
d. If next is false, set iteratorRecord.[[Done]] to true.
e. Else,
i. Let v be IteratorValue(next).
ii. If v is an abrupt completion, set iteratorRecord.[[Done]] to true.
iii. ReturnIfAbrupt(v).
[...]
7. Return InitializeReferencedBinding(lhs, v).
---*/
Array.prototype[Symbol.iterator] = function* () {
if (this.length > 0) {
yield this[0];
}
if (this.length > 1) {
yield this[1];
}
if (this.length > 2) {
yield 42;
}
};
var callCount = 0;
var f;
f = function*([x, y, z]) {
assert.sameValue(x, 1);
assert.sameValue(y, 2);
assert.sameValue(z, 42);
callCount = callCount + 1;
};
f([1, 2, 3]).next();
assert.sameValue(callCount, 1, 'generator function invoked exactly once');

View File

@ -0,0 +1,64 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-rest-id-direct.case
// - src/dstr-binding/default/gen-func-expr.template
/*---
description: Lone rest element (direct binding) (generator function expression)
esid: sec-generator-function-definitions-runtime-semantics-evaluation
features: [generators, destructuring-binding]
flags: [generated]
includes: [compareArray.js]
info: |
GeneratorExpression : function * ( FormalParameters ) { GeneratorBody }
[...]
3. Let closure be GeneratorFunctionCreate(Normal, FormalParameters,
GeneratorBody, scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
BindingRestElement : ... BindingIdentifier
[...]
2. Let A be ! ArrayCreate(0).
3. Let n be 0.
4. Repeat,
[...]
f. Perform ! CreateDataPropertyOrThrow(A, ! ToString(n), nextValue).
g. Set n to n + 1.
---*/
var callCount = 0;
var f;
f = function*([...x]) {
assert(Array.isArray(x));
assert.compareArray(x, [1]);
callCount = callCount + 1;
};
f([1]).next();
assert.sameValue(callCount, 1, 'generator function invoked exactly once');

View File

@ -0,0 +1,63 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-init-iter-get-err-array-prototype.case
// - src/dstr-binding/error/gen-func-expr-dflt.template
/*---
description: Abrupt completion returned by GetIterator (generator function expression (default parameter))
esid: sec-generator-function-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, generators, destructuring-binding, default-parameters]
flags: [generated]
info: |
GeneratorExpression : function * ( FormalParameters ) { GeneratorBody }
[...]
3. Let closure be GeneratorFunctionCreate(Normal, FormalParameters,
GeneratorBody, scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: BindingInitialization
BindingPattern : ArrayBindingPattern
1. Let iteratorRecord be ? GetIterator(value).
GetIterator ( obj [ , hint [ , method ] ] )
[...]
4. Let iterator be ? Call(method, obj).
Call ( F, V [ , argumentsList ] )
[...]
2. If IsCallable(F) is false, throw a TypeError exception.
---*/
delete Array.prototype[Symbol.iterator];
var f = function*([x, y, z] = [1, 2, 3]) {};
assert.throws(TypeError, function() {
f();
});

View File

@ -0,0 +1,81 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-elem-id-iter-val-array-prototype.case
// - src/dstr-binding/default/gen-func-expr-dflt.template
/*---
description: Array destructuring uses overriden Array.prototype[Symbol.iterator] (generator function expression (default parameter))
esid: sec-generator-function-definitions-runtime-semantics-evaluation
features: [Symbol.iterator, generators, destructuring-binding, default-parameters]
flags: [generated]
info: |
GeneratorExpression : function * ( FormalParameters ) { GeneratorBody }
[...]
3. Let closure be GeneratorFunctionCreate(Normal, FormalParameters,
GeneratorBody, scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
SingleNameBinding : BindingIdentifier Initializer_opt
1. Let bindingId be StringValue of BindingIdentifier.
2. Let lhs be ? ResolveBinding(bindingId, environment).
3. If iteratorRecord.[[Done]] is false, then
a. Let next be IteratorStep(iteratorRecord).
b. If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
c. ReturnIfAbrupt(next).
d. If next is false, set iteratorRecord.[[Done]] to true.
e. Else,
i. Let v be IteratorValue(next).
ii. If v is an abrupt completion, set iteratorRecord.[[Done]] to true.
iii. ReturnIfAbrupt(v).
[...]
7. Return InitializeReferencedBinding(lhs, v).
---*/
Array.prototype[Symbol.iterator] = function* () {
if (this.length > 0) {
yield this[0];
}
if (this.length > 1) {
yield this[1];
}
if (this.length > 2) {
yield 42;
}
};
var callCount = 0;
var f;
f = function*([x, y, z] = [1, 2, 3]) {
assert.sameValue(x, 1);
assert.sameValue(y, 2);
assert.sameValue(z, 42);
callCount = callCount + 1;
};
f().next();
assert.sameValue(callCount, 1, 'generator function invoked exactly once');

View File

@ -0,0 +1,64 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-rest-id-direct.case
// - src/dstr-binding/default/gen-func-expr-dflt.template
/*---
description: Lone rest element (direct binding) (generator function expression (default parameter))
esid: sec-generator-function-definitions-runtime-semantics-evaluation
features: [generators, destructuring-binding, default-parameters]
flags: [generated]
includes: [compareArray.js]
info: |
GeneratorExpression : function * ( FormalParameters ) { GeneratorBody }
[...]
3. Let closure be GeneratorFunctionCreate(Normal, FormalParameters,
GeneratorBody, scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
BindingRestElement : ... BindingIdentifier
[...]
2. Let A be ! ArrayCreate(0).
3. Let n be 0.
4. Repeat,
[...]
f. Perform ! CreateDataPropertyOrThrow(A, ! ToString(n), nextValue).
g. Set n to n + 1.
---*/
var callCount = 0;
var f;
f = function*([...x] = [1]) {
assert(Array.isArray(x));
assert.compareArray(x, [1]);
callCount = callCount + 1;
};
f().next();
assert.sameValue(callCount, 1, 'generator function invoked exactly once');

View File

@ -0,0 +1,51 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-init-iter-get-err-array-prototype.case
// - src/dstr-binding/error/async-gen-meth.template
/*---
description: Abrupt completion returned by GetIterator (async generator method)
esid: sec-asyncgenerator-definitions-propertydefinitionevaluation
features: [Symbol.iterator, async-iteration]
flags: [generated]
info: |
AsyncGeneratorMethod :
async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
{ AsyncGeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
AsyncGeneratorBody, scope, strict).
[...]
Runtime Semantics: BindingInitialization
BindingPattern : ArrayBindingPattern
1. Let iteratorRecord be ? GetIterator(value).
GetIterator ( obj [ , hint [ , method ] ] )
[...]
4. Let iterator be ? Call(method, obj).
Call ( F, V [ , argumentsList ] )
[...]
2. If IsCallable(F) is false, throw a TypeError exception.
---*/
delete Array.prototype[Symbol.iterator];
var obj = {
async *method([x, y, z]) {
}
};
assert.throws(TypeError, function() {
obj.method([1, 2, 3]);
});

View File

@ -0,0 +1,68 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-elem-id-iter-val-array-prototype.case
// - src/dstr-binding/default/async-gen-meth.template
/*---
description: Array destructuring uses overriden Array.prototype[Symbol.iterator] (async generator method)
esid: sec-asyncgenerator-definitions-propertydefinitionevaluation
features: [Symbol.iterator, generators, async-iteration]
flags: [generated, async]
info: |
AsyncGeneratorMethod :
async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
{ AsyncGeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
AsyncGeneratorBody, scope, strict).
[...]
Runtime Semantics: IteratorBindingInitialization
SingleNameBinding : BindingIdentifier Initializer_opt
1. Let bindingId be StringValue of BindingIdentifier.
2. Let lhs be ? ResolveBinding(bindingId, environment).
3. If iteratorRecord.[[Done]] is false, then
a. Let next be IteratorStep(iteratorRecord).
b. If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
c. ReturnIfAbrupt(next).
d. If next is false, set iteratorRecord.[[Done]] to true.
e. Else,
i. Let v be IteratorValue(next).
ii. If v is an abrupt completion, set iteratorRecord.[[Done]] to true.
iii. ReturnIfAbrupt(v).
[...]
7. Return InitializeReferencedBinding(lhs, v).
---*/
Array.prototype[Symbol.iterator] = function* () {
if (this.length > 0) {
yield this[0];
}
if (this.length > 1) {
yield this[1];
}
if (this.length > 2) {
yield 42;
}
};
var callCount = 0;
var obj = {
async *method([x, y, z]) {
assert.sameValue(x, 1);
assert.sameValue(y, 2);
assert.sameValue(z, 42);
callCount = callCount + 1;
}
};
obj.method([1, 2, 3]).next().then(() => {
assert.sameValue(callCount, 1, 'invoked exactly once');
}).then($DONE, $DONE);

View File

@ -0,0 +1,51 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-rest-id-direct.case
// - src/dstr-binding/default/async-gen-meth.template
/*---
description: Lone rest element (direct binding) (async generator method)
esid: sec-asyncgenerator-definitions-propertydefinitionevaluation
features: [async-iteration]
flags: [generated, async]
includes: [compareArray.js]
info: |
AsyncGeneratorMethod :
async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
{ AsyncGeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
AsyncGeneratorBody, scope, strict).
[...]
Runtime Semantics: IteratorBindingInitialization
BindingRestElement : ... BindingIdentifier
[...]
2. Let A be ! ArrayCreate(0).
3. Let n be 0.
4. Repeat,
[...]
f. Perform ! CreateDataPropertyOrThrow(A, ! ToString(n), nextValue).
g. Set n to n + 1.
---*/
var callCount = 0;
var obj = {
async *method([...x]) {
assert(Array.isArray(x));
assert.compareArray(x, [1]);
callCount = callCount + 1;
}
};
obj.method([1]).next().then(() => {
assert.sameValue(callCount, 1, 'invoked exactly once');
}).then($DONE, $DONE);

View File

@ -0,0 +1,51 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-init-iter-get-err-array-prototype.case
// - src/dstr-binding/error/async-gen-method-dflt.template
/*---
description: Abrupt completion returned by GetIterator (async generator method (default parameter))
esid: sec-asyncgenerator-definitions-propertydefinitionevaluation
features: [Symbol.iterator, async-iteration]
flags: [generated]
info: |
AsyncGeneratorMethod :
async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
{ AsyncGeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
AsyncGeneratorBody, scope, strict).
[...]
Runtime Semantics: BindingInitialization
BindingPattern : ArrayBindingPattern
1. Let iteratorRecord be ? GetIterator(value).
GetIterator ( obj [ , hint [ , method ] ] )
[...]
4. Let iterator be ? Call(method, obj).
Call ( F, V [ , argumentsList ] )
[...]
2. If IsCallable(F) is false, throw a TypeError exception.
---*/
delete Array.prototype[Symbol.iterator];
var obj = {
async *method([x, y, z] = [1, 2, 3]) {
}
};
assert.throws(TypeError, function() {
obj.method();
});

View File

@ -0,0 +1,68 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-elem-id-iter-val-array-prototype.case
// - src/dstr-binding/default/async-gen-method-dflt.template
/*---
description: Array destructuring uses overriden Array.prototype[Symbol.iterator] (async generator method (default parameter))
esid: sec-asyncgenerator-definitions-propertydefinitionevaluation
features: [Symbol.iterator, generators, async-iteration]
flags: [generated, async]
info: |
AsyncGeneratorMethod :
async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
{ AsyncGeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
AsyncGeneratorBody, scope, strict).
[...]
Runtime Semantics: IteratorBindingInitialization
SingleNameBinding : BindingIdentifier Initializer_opt
1. Let bindingId be StringValue of BindingIdentifier.
2. Let lhs be ? ResolveBinding(bindingId, environment).
3. If iteratorRecord.[[Done]] is false, then
a. Let next be IteratorStep(iteratorRecord).
b. If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
c. ReturnIfAbrupt(next).
d. If next is false, set iteratorRecord.[[Done]] to true.
e. Else,
i. Let v be IteratorValue(next).
ii. If v is an abrupt completion, set iteratorRecord.[[Done]] to true.
iii. ReturnIfAbrupt(v).
[...]
7. Return InitializeReferencedBinding(lhs, v).
---*/
Array.prototype[Symbol.iterator] = function* () {
if (this.length > 0) {
yield this[0];
}
if (this.length > 1) {
yield this[1];
}
if (this.length > 2) {
yield 42;
}
};
var callCount = 0;
var obj = {
async *method([x, y, z] = [1, 2, 3]) {
assert.sameValue(x, 1);
assert.sameValue(y, 2);
assert.sameValue(z, 42);
callCount = callCount + 1;
}
};
obj.method().next().then(() => {
assert.sameValue(callCount, 1, 'invoked exactly once');
}).then($DONE, $DONE);

View File

@ -0,0 +1,51 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-rest-id-direct.case
// - src/dstr-binding/default/async-gen-method-dflt.template
/*---
description: Lone rest element (direct binding) (async generator method (default parameter))
esid: sec-asyncgenerator-definitions-propertydefinitionevaluation
features: [async-iteration]
flags: [generated, async]
includes: [compareArray.js]
info: |
AsyncGeneratorMethod :
async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
{ AsyncGeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
AsyncGeneratorBody, scope, strict).
[...]
Runtime Semantics: IteratorBindingInitialization
BindingRestElement : ... BindingIdentifier
[...]
2. Let A be ! ArrayCreate(0).
3. Let n be 0.
4. Repeat,
[...]
f. Perform ! CreateDataPropertyOrThrow(A, ! ToString(n), nextValue).
g. Set n to n + 1.
---*/
var callCount = 0;
var obj = {
async *method([...x] = [1]) {
assert(Array.isArray(x));
assert.compareArray(x, [1]);
callCount = callCount + 1;
}
};
obj.method().next().then(() => {
assert.sameValue(callCount, 1, 'invoked exactly once');
}).then($DONE, $DONE);

View File

@ -0,0 +1,70 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-init-iter-get-err-array-prototype.case
// - src/dstr-binding/error/gen-meth.template
/*---
description: Abrupt completion returned by GetIterator (generator method)
esid: sec-generator-function-definitions-runtime-semantics-propertydefinitionevaluation
features: [Symbol.iterator, generators, destructuring-binding]
flags: [generated]
info: |
GeneratorMethod :
* PropertyName ( StrictFormalParameters ) { GeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this GeneratorMethod is strict mode code,
let strict be true. Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be GeneratorFunctionCreate(Method,
StrictFormalParameters, GeneratorBody, scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: BindingInitialization
BindingPattern : ArrayBindingPattern
1. Let iteratorRecord be ? GetIterator(value).
GetIterator ( obj [ , hint [ , method ] ] )
[...]
4. Let iterator be ? Call(method, obj).
Call ( F, V [ , argumentsList ] )
[...]
2. If IsCallable(F) is false, throw a TypeError exception.
---*/
delete Array.prototype[Symbol.iterator];
var obj = {
*method([x, y, z]) {}
};
assert.throws(TypeError, function() {
obj.method([1, 2, 3]);
});

View File

@ -0,0 +1,87 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-elem-id-iter-val-array-prototype.case
// - src/dstr-binding/default/gen-meth.template
/*---
description: Array destructuring uses overriden Array.prototype[Symbol.iterator] (generator method)
esid: sec-generator-function-definitions-runtime-semantics-propertydefinitionevaluation
features: [Symbol.iterator, generators, destructuring-binding]
flags: [generated]
info: |
GeneratorMethod :
* PropertyName ( StrictFormalParameters ) { GeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this GeneratorMethod is strict mode code,
let strict be true. Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be GeneratorFunctionCreate(Method,
StrictFormalParameters, GeneratorBody, scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
SingleNameBinding : BindingIdentifier Initializer_opt
1. Let bindingId be StringValue of BindingIdentifier.
2. Let lhs be ? ResolveBinding(bindingId, environment).
3. If iteratorRecord.[[Done]] is false, then
a. Let next be IteratorStep(iteratorRecord).
b. If next is an abrupt completion, set iteratorRecord.[[Done]] to true.
c. ReturnIfAbrupt(next).
d. If next is false, set iteratorRecord.[[Done]] to true.
e. Else,
i. Let v be IteratorValue(next).
ii. If v is an abrupt completion, set iteratorRecord.[[Done]] to true.
iii. ReturnIfAbrupt(v).
[...]
7. Return InitializeReferencedBinding(lhs, v).
---*/
Array.prototype[Symbol.iterator] = function* () {
if (this.length > 0) {
yield this[0];
}
if (this.length > 1) {
yield this[1];
}
if (this.length > 2) {
yield 42;
}
};
var callCount = 0;
var obj = {
*method([x, y, z]) {
assert.sameValue(x, 1);
assert.sameValue(y, 2);
assert.sameValue(z, 42);
callCount = callCount + 1;
}
};
obj.method([1, 2, 3]).next();
assert.sameValue(callCount, 1, 'generator method invoked exactly once');

View File

@ -0,0 +1,70 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-ptrn-rest-id-direct.case
// - src/dstr-binding/default/gen-meth.template
/*---
description: Lone rest element (direct binding) (generator method)
esid: sec-generator-function-definitions-runtime-semantics-propertydefinitionevaluation
features: [generators, destructuring-binding]
flags: [generated]
includes: [compareArray.js]
info: |
GeneratorMethod :
* PropertyName ( StrictFormalParameters ) { GeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this GeneratorMethod is strict mode code,
let strict be true. Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be GeneratorFunctionCreate(Method,
StrictFormalParameters, GeneratorBody, scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
BindingRestElement : ... BindingIdentifier
[...]
2. Let A be ! ArrayCreate(0).
3. Let n be 0.
4. Repeat,
[...]
f. Perform ! CreateDataPropertyOrThrow(A, ! ToString(n), nextValue).
g. Set n to n + 1.
---*/
var callCount = 0;
var obj = {
*method([...x]) {
assert(Array.isArray(x));
assert.compareArray(x, [1]);
callCount = callCount + 1;
}
};
obj.method([1]).next();
assert.sameValue(callCount, 1, 'generator method invoked exactly once');

View File

@ -0,0 +1,70 @@
// This file was procedurally generated from the following sources:
// - src/dstr-binding/ary-init-iter-get-err-array-prototype.case
// - src/dstr-binding/error/gen-meth-dflt.template
/*---
description: Abrupt completion returned by GetIterator (generator method (default parameter))
esid: sec-generator-function-definitions-runtime-semantics-propertydefinitionevaluation
features: [Symbol.iterator, generators, destructuring-binding, default-parameters]
flags: [generated]
info: |
GeneratorMethod :
* PropertyName ( StrictFormalParameters ) { GeneratorBody }
1. Let propKey be the result of evaluating PropertyName.
2. ReturnIfAbrupt(propKey).
3. If the function code for this GeneratorMethod is strict mode code,
let strict be true. Otherwise let strict be false.
4. Let scope be the running execution context's LexicalEnvironment.
5. Let closure be GeneratorFunctionCreate(Method,
StrictFormalParameters, GeneratorBody, scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: BindingInitialization
BindingPattern : ArrayBindingPattern
1. Let iteratorRecord be ? GetIterator(value).
GetIterator ( obj [ , hint [ , method ] ] )
[...]
4. Let iterator be ? Call(method, obj).
Call ( F, V [ , argumentsList ] )
[...]
2. If IsCallable(F) is false, throw a TypeError exception.
---*/
delete Array.prototype[Symbol.iterator];
var obj = {
*method([x, y, z] = [1, 2, 3]) {}
};
assert.throws(TypeError, function() {
obj.method();
});

Some files were not shown because too many files have changed in this diff Show More