mirror of
https://github.com/tc39/test262.git
synced 2025-07-27 07:54:41 +02:00
Merge pull request #1020 from rwaldron/dstr-binding_for-await-of-async-gen-func-error
for-await-of: dstr-binding, error, async func & async gen templates
This commit is contained in:
commit
17b13b9d01
@ -0,0 +1,48 @@
|
|||||||
|
// Copyright (C) 2017 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
path: language/statements/for-await-of/async-func-dstr-const-
|
||||||
|
name: for-await-of statement
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (const /*{ elems }*/ of [/*{ vals }*/]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, /*{ error }*/))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
48
src/dstr-binding/error/for-await-of-async-func-let.template
Normal file
48
src/dstr-binding/error/for-await-of-async-func-let.template
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
// Copyright (C) 2017 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
path: language/statements/for-await-of/async-func-dstr-let-
|
||||||
|
name: for-await-of statement
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (let /*{ elems }*/ of [/*{ vals }*/]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, /*{ error }*/))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
47
src/dstr-binding/error/for-await-of-async-func-var.template
Normal file
47
src/dstr-binding/error/for-await-of-async-func-var.template
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
// Copyright (C) 2017 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
path: language/statements/for-await-of/async-func-dstr-var-
|
||||||
|
name: for-await-of statement
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( var ForBinding of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForBinding, Statement, keyResult,
|
||||||
|
varBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (var /*{ elems }*/ of [/*{ vals }*/]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, /*{ error }*/))
|
||||||
|
.then($DONE, $DONE);
|
48
src/dstr-binding/error/for-await-of-async-gen-const.template
Normal file
48
src/dstr-binding/error/for-await-of-async-gen-const.template
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
// Copyright (C) 2017 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
path: language/statements/for-await-of/async-gen-dstr-const-
|
||||||
|
name: for-await-of statement
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function * gen() {
|
||||||
|
for await (const /*{ elems }*/ of [/*{ vals }*/]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gen().next()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, /*{ error }*/))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
47
src/dstr-binding/error/for-await-of-async-gen-let.template
Normal file
47
src/dstr-binding/error/for-await-of-async-gen-let.template
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
// Copyright (C) 2017 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
path: language/statements/for-await-of/async-gen-dstr-let-
|
||||||
|
name: for-await-of statement
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( var ForBinding of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForBinding, Statement, keyResult,
|
||||||
|
varBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function * gen() {
|
||||||
|
for await (let /*{ elems }*/ of [/*{ vals }*/]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gen().next()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, /*{ error }*/))
|
||||||
|
.then($DONE, $DONE);
|
48
src/dstr-binding/error/for-await-of-async-gen-var.template
Normal file
48
src/dstr-binding/error/for-await-of-async-gen-var.template
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
// Copyright (C) 2017 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
path: language/statements/for-await-of/async-gen-dstr-var-
|
||||||
|
name: for-await-of statement
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function * gen() {
|
||||||
|
for await (var /*{ elems }*/ of [/*{ vals }*/]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gen().next()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, /*{ error }*/))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,60 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-init-iter-get-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-const.template
|
||||||
|
/*---
|
||||||
|
description: Abrupt completion returned by GetIterator (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [Symbol.iterator, destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.5 Runtime Semantics: BindingInitialization
|
||||||
|
|
||||||
|
BindingPattern : ArrayBindingPattern
|
||||||
|
|
||||||
|
1. Let iterator be GetIterator(value).
|
||||||
|
2. ReturnIfAbrupt(iterator).
|
||||||
|
|
||||||
|
---*/
|
||||||
|
var iter = {};
|
||||||
|
iter[Symbol.iterator] = function() {
|
||||||
|
throw new Test262Error();
|
||||||
|
};
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (const [x] of [iter]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,67 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-elem-ary-val-null.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-const.template
|
||||||
|
/*---
|
||||||
|
description: Nested array destructuring with a null value (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
|
||||||
|
BindingElement : BindingPattern Initializeropt
|
||||||
|
|
||||||
|
1. If iteratorRecord.[[done]] is false, then
|
||||||
|
[...]
|
||||||
|
e. Else
|
||||||
|
i. Let v be IteratorValue(next).
|
||||||
|
[...]
|
||||||
|
4. Return the result of performing BindingInitialization of BindingPattern
|
||||||
|
with v and environment as the arguments.
|
||||||
|
|
||||||
|
13.3.3.5 Runtime Semantics: BindingInitialization
|
||||||
|
|
||||||
|
BindingPattern : ArrayBindingPattern
|
||||||
|
|
||||||
|
1. Let iterator be GetIterator(value).
|
||||||
|
2. ReturnIfAbrupt(iterator).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (const [[x]] of [[null]]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,58 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-elem-id-init-throws.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-const.template
|
||||||
|
/*---
|
||||||
|
description: Destructuring initializer returns an abrupt completion (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
|
||||||
|
SingleNameBinding : BindingIdentifier Initializeropt
|
||||||
|
|
||||||
|
[...]
|
||||||
|
6. If Initializer is present and v is undefined, then
|
||||||
|
a. Let defaultValue be the result of evaluating Initializer.
|
||||||
|
b. Let v be GetValue(defaultValue).
|
||||||
|
c. ReturnIfAbrupt(v).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (const [x = (function() { throw new Test262Error(); })()] of [[undefined]]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,65 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-elem-id-init-unresolvable.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-const.template
|
||||||
|
/*---
|
||||||
|
description: Destructuring initializer is an unresolvable reference (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
|
||||||
|
SingleNameBinding : BindingIdentifier Initializeropt
|
||||||
|
|
||||||
|
[...]
|
||||||
|
6. If Initializer is present and v is undefined, then
|
||||||
|
a. Let defaultValue be the result of evaluating Initializer.
|
||||||
|
b. Let v be GetValue(defaultValue).
|
||||||
|
c. ReturnIfAbrupt(v).
|
||||||
|
|
||||||
|
6.2.3.1 GetValue (V)
|
||||||
|
|
||||||
|
1. ReturnIfAbrupt(V).
|
||||||
|
2. If Type(V) is not Reference, return V.
|
||||||
|
3. Let base be GetBase(V).
|
||||||
|
4. If IsUnresolvableReference(V), throw a ReferenceError exception.
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (const [ x = unresolvableReference ] of [[]]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, ReferenceError))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,66 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-elem-id-iter-step-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-const.template
|
||||||
|
/*---
|
||||||
|
description: Error forwarding when IteratorStep returns an abrupt completion (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
|
||||||
|
SingleNameBinding : BindingIdentifier Initializeropt
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. If iteratorRecord.[[done]] is false, then
|
||||||
|
a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
|
||||||
|
b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
|
||||||
|
c. ReturnIfAbrupt(next).
|
||||||
|
---*/
|
||||||
|
var g = {};
|
||||||
|
g[Symbol.iterator] = function() {
|
||||||
|
return {
|
||||||
|
next: function() {
|
||||||
|
throw new Test262Error();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (const [x] of [g]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,77 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-elem-id-iter-val-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-const.template
|
||||||
|
/*---
|
||||||
|
description: Error forwarding when IteratorValue returns an abrupt completion (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
|
||||||
|
SingleNameBinding : BindingIdentifier Initializeropt
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. If iteratorRecord.[[done]] is false, then
|
||||||
|
a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
|
||||||
|
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).
|
||||||
|
---*/
|
||||||
|
var poisonedValue = Object.defineProperty({}, 'value', {
|
||||||
|
get: function() {
|
||||||
|
throw new Test262Error();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
var g = {};
|
||||||
|
g[Symbol.iterator] = function() {
|
||||||
|
return {
|
||||||
|
next: function() {
|
||||||
|
return poisonedValue;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (const [x] of [g]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,67 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-elem-obj-val-null.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-const.template
|
||||||
|
/*---
|
||||||
|
description: Nested object destructuring with a null value (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
|
||||||
|
BindingElement : BindingPattern Initializeropt
|
||||||
|
|
||||||
|
1. If iteratorRecord.[[done]] is false, then
|
||||||
|
[...]
|
||||||
|
e. Else
|
||||||
|
i. Let v be IteratorValue(next).
|
||||||
|
[...]
|
||||||
|
4. Return the result of performing BindingInitialization of BindingPattern
|
||||||
|
with v and environment as the arguments.
|
||||||
|
|
||||||
|
13.3.3.5 Runtime Semantics: BindingInitialization
|
||||||
|
|
||||||
|
BindingPattern : ObjectBindingPattern
|
||||||
|
|
||||||
|
1. Let valid be RequireObjectCoercible(value).
|
||||||
|
2. ReturnIfAbrupt(valid).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (const [{ x }] of [[null]]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,67 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-elem-obj-val-undef.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-const.template
|
||||||
|
/*---
|
||||||
|
description: Nested object destructuring with a value of `undefined` (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
|
||||||
|
BindingElement : BindingPattern Initializeropt
|
||||||
|
|
||||||
|
1. If iteratorRecord.[[done]] is false, then
|
||||||
|
[...]
|
||||||
|
e. Else
|
||||||
|
i. Let v be IteratorValue(next).
|
||||||
|
[...]
|
||||||
|
4. Return the result of performing BindingInitialization of BindingPattern
|
||||||
|
with v and environment as the arguments.
|
||||||
|
|
||||||
|
13.3.3.5 Runtime Semantics: BindingInitialization
|
||||||
|
|
||||||
|
BindingPattern : ObjectBindingPattern
|
||||||
|
|
||||||
|
1. Let valid be RequireObjectCoercible(value).
|
||||||
|
2. ReturnIfAbrupt(valid).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (const [{ x }] of [[]]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,74 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-elision-step-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-const.template
|
||||||
|
/*---
|
||||||
|
description: Elision advances iterator and forwards abrupt completions (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [generator, destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
|
||||||
|
ArrayBindingPattern : [ Elision ]
|
||||||
|
|
||||||
|
1. Return the result of performing
|
||||||
|
IteratorDestructuringAssignmentEvaluation of Elision with iteratorRecord
|
||||||
|
as the argument.
|
||||||
|
|
||||||
|
12.14.5.3 Runtime Semantics: IteratorDestructuringAssignmentEvaluation
|
||||||
|
|
||||||
|
Elision : ,
|
||||||
|
|
||||||
|
1. If iteratorRecord.[[done]] is false, then
|
||||||
|
a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
|
||||||
|
b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
|
||||||
|
c. ReturnIfAbrupt(next).
|
||||||
|
|
||||||
|
---*/
|
||||||
|
var following = 0;
|
||||||
|
var iter =function* () {
|
||||||
|
throw new Test262Error();
|
||||||
|
following += 1;
|
||||||
|
}();
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (const [,] of [iter]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
||||||
|
|
||||||
|
iter.next();
|
||||||
|
assert.sameValue(following, 0, 'Iterator was properly closed.');
|
@ -0,0 +1,60 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-rest-id-elision-next-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-const.template
|
||||||
|
/*---
|
||||||
|
description: Rest element following elision elements (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [generators, destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
ArrayBindingPattern : [ Elisionopt BindingRestElement ]
|
||||||
|
1. If Elision is present, then
|
||||||
|
a. Let status be the result of performing
|
||||||
|
IteratorDestructuringAssignmentEvaluation of Elision with
|
||||||
|
iteratorRecord as the argument.
|
||||||
|
b. ReturnIfAbrupt(status).
|
||||||
|
2. Return the result of performing IteratorBindingInitialization for
|
||||||
|
BindingRestElement with iteratorRecord and environment as arguments.
|
||||||
|
|
||||||
|
---*/
|
||||||
|
var iter = (function*() { throw new Test262Error(); })();
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (const [, ...x] of [iter]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,71 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-rest-id-iter-step-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-const.template
|
||||||
|
/*---
|
||||||
|
description: Error forwarding when IteratorStep returns an abrupt completion (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [generators, destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
BindingRestElement : ... BindingIdentifier
|
||||||
|
1. Let lhs be ResolveBinding(StringValue of BindingIdentifier,
|
||||||
|
environment).
|
||||||
|
2. ReturnIfAbrupt(lhs). 3. Let A be ArrayCreate(0). 4. Let n=0. 5. Repeat,
|
||||||
|
a. If iteratorRecord.[[done]] is false,
|
||||||
|
i. Let next be IteratorStep(iteratorRecord.[[iterator]]).
|
||||||
|
ii. If next is an abrupt completion, set iteratorRecord.[[done]] to
|
||||||
|
true.
|
||||||
|
iii. ReturnIfAbrupt(next).
|
||||||
|
|
||||||
|
---*/
|
||||||
|
var first = 0;
|
||||||
|
var second = 0;
|
||||||
|
var iter = function*() {
|
||||||
|
first += 1;
|
||||||
|
throw new Test262Error();
|
||||||
|
second += 1;
|
||||||
|
}();
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (const [...x] of [iter]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
||||||
|
|
||||||
|
iter.next();
|
||||||
|
assert.sameValue(first, 1);
|
||||||
|
assert.sameValue(second, 0, 'Iterator is closed following abrupt completion.');
|
@ -0,0 +1,73 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-rest-id-iter-val-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-const.template
|
||||||
|
/*---
|
||||||
|
description: Error forwarding when IteratorValue returns an abrupt completion (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [Symbol.iterator, destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
BindingRestElement : ... BindingIdentifier
|
||||||
|
1. Let lhs be ResolveBinding(StringValue of BindingIdentifier,
|
||||||
|
environment).
|
||||||
|
2. ReturnIfAbrupt(lhs). 3. Let A be ArrayCreate(0). 4. Let n=0. 5. Repeat,
|
||||||
|
[...]
|
||||||
|
c. Let nextValue be IteratorValue(next).
|
||||||
|
d. If nextValue is an abrupt completion, set iteratorRecord.[[done]] to
|
||||||
|
true.
|
||||||
|
e. ReturnIfAbrupt(nextValue).
|
||||||
|
|
||||||
|
---*/
|
||||||
|
var poisonedValue = Object.defineProperty({}, 'value', {
|
||||||
|
get: function() {
|
||||||
|
throw new Test262Error();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
var iter = {};
|
||||||
|
iter[Symbol.iterator] = function() {
|
||||||
|
return {
|
||||||
|
next: function() {
|
||||||
|
return poisonedValue;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (const [...x] of [iter]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,54 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-init-null.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-const.template
|
||||||
|
/*---
|
||||||
|
description: Value specifed for object binding pattern must be object coercible (null) (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
Runtime Semantics: BindingInitialization
|
||||||
|
|
||||||
|
ObjectBindingPattern : { }
|
||||||
|
|
||||||
|
1. Return NormalCompletion(empty).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (const {} of [null]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,54 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-init-undefined.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-const.template
|
||||||
|
/*---
|
||||||
|
description: Value specifed for object binding pattern must be object coercible (undefined) (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
Runtime Semantics: BindingInitialization
|
||||||
|
|
||||||
|
ObjectBindingPattern : { }
|
||||||
|
|
||||||
|
1. Return NormalCompletion(empty).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (const {} of [undefined]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,61 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-ptrn-id-get-value-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-const.template
|
||||||
|
/*---
|
||||||
|
description: Error thrown when accessing the corresponding property of the value object (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.7 Runtime Semantics: KeyedBindingInitialization
|
||||||
|
|
||||||
|
SingleNameBinding : BindingIdentifier Initializeropt
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let v be GetV(value, propertyName).
|
||||||
|
5. ReturnIfAbrupt(v).
|
||||||
|
---*/
|
||||||
|
var poisonedProperty = Object.defineProperty({}, 'poisoned', {
|
||||||
|
get: function() {
|
||||||
|
throw new Test262Error();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (const { poisoned } of [poisonedProperty]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,61 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-ptrn-id-init-throws.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-const.template
|
||||||
|
/*---
|
||||||
|
description: Error thrown when evaluating the initializer (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.7 Runtime Semantics: KeyedBindingInitialization
|
||||||
|
|
||||||
|
SingleNameBinding : BindingIdentifier Initializeropt
|
||||||
|
|
||||||
|
[...]
|
||||||
|
6. If Initializer is present and v is undefined, then
|
||||||
|
a. Let defaultValue be the result of evaluating Initializer.
|
||||||
|
b. Let v be GetValue(defaultValue).
|
||||||
|
c. ReturnIfAbrupt(v).
|
||||||
|
---*/
|
||||||
|
function thrower() {
|
||||||
|
throw new Test262Error();
|
||||||
|
}
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (const { x = thrower() } of [{}]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,65 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-ptrn-id-init-unresolvable.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-const.template
|
||||||
|
/*---
|
||||||
|
description: Destructuring initializer is an unresolvable reference (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.7 Runtime Semantics: KeyedBindingInitialization
|
||||||
|
|
||||||
|
SingleNameBinding : BindingIdentifier Initializeropt
|
||||||
|
|
||||||
|
[...]
|
||||||
|
6. If Initializer is present and v is undefined, then
|
||||||
|
a. Let defaultValue be the result of evaluating Initializer.
|
||||||
|
b. Let v be GetValue(defaultValue).
|
||||||
|
c. ReturnIfAbrupt(v).
|
||||||
|
|
||||||
|
6.2.3.1 GetValue (V)
|
||||||
|
|
||||||
|
1. ReturnIfAbrupt(V).
|
||||||
|
2. If Type(V) is not Reference, return V.
|
||||||
|
3. Let base be GetBase(V).
|
||||||
|
4. If IsUnresolvableReference(V), throw a ReferenceError exception.
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (const { x = unresolvableReference } of [{}]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, ReferenceError))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,62 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-ptrn-list-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-const.template
|
||||||
|
/*---
|
||||||
|
description: Binding property list evaluation is interrupted by an abrupt completion (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.5 Runtime Semantics: BindingInitialization
|
||||||
|
|
||||||
|
BindingPropertyList : BindingPropertyList , BindingProperty
|
||||||
|
|
||||||
|
1. Let status be the result of performing BindingInitialization for
|
||||||
|
BindingPropertyList using value and environment as arguments.
|
||||||
|
2. ReturnIfAbrupt(status).
|
||||||
|
---*/
|
||||||
|
var initCount = 0;
|
||||||
|
function thrower() {
|
||||||
|
throw new Test262Error();
|
||||||
|
}
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (const { a, b = thrower(), c = ++initCount } of [{}]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
||||||
|
|
||||||
|
assert.sameValue(initCount, 0);
|
@ -0,0 +1,56 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-ptrn-prop-ary-value-null.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-const.template
|
||||||
|
/*---
|
||||||
|
description: Object binding pattern with "nested" array binding pattern taking the `null` value (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.7 Runtime Semantics: KeyedBindingInitialization
|
||||||
|
|
||||||
|
[...]
|
||||||
|
3. If Initializer is present and v is undefined, then
|
||||||
|
[...]
|
||||||
|
4. Return the result of performing BindingInitialization for BindingPattern
|
||||||
|
passing v and environment as arguments.
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (const { w: [x, y, z] = [4, 5, 6] } of [{ w: null }]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,58 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-ptrn-prop-eval-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-const.template
|
||||||
|
/*---
|
||||||
|
description: Evaluation of property name returns an abrupt completion (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.5 Runtime Semantics: BindingInitialization
|
||||||
|
|
||||||
|
BindingProperty : PropertyName : BindingElement
|
||||||
|
|
||||||
|
1. Let P be the result of evaluating PropertyName
|
||||||
|
2. ReturnIfAbrupt(P).
|
||||||
|
---*/
|
||||||
|
function thrower() {
|
||||||
|
throw new Test262Error();
|
||||||
|
}
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (const { [thrower()]: x } of [{}]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,63 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-ptrn-prop-id-get-value-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-const.template
|
||||||
|
/*---
|
||||||
|
description: Error thrown when accessing the corresponding property of the value object (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.7 Runtime Semantics: KeyedBindingInitialization
|
||||||
|
|
||||||
|
BindingElement : BindingPattern Initializeropt
|
||||||
|
|
||||||
|
1. Let v be GetV(value, propertyName).
|
||||||
|
2. ReturnIfAbrupt(v).
|
||||||
|
---*/
|
||||||
|
var initEvalCount = 0;
|
||||||
|
var poisonedProperty = Object.defineProperty({}, 'poisoned', {
|
||||||
|
get: function() {
|
||||||
|
throw new Test262Error();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (const { poisoned: x = ++initEvalCount } of [poisonedProperty]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
||||||
|
|
||||||
|
assert.sameValue(initEvalCount, 0);
|
@ -0,0 +1,61 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-ptrn-prop-id-init-throws.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-const.template
|
||||||
|
/*---
|
||||||
|
description: Error thrown when evaluating the initializer (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.7 Runtime Semantics: KeyedBindingInitialization
|
||||||
|
|
||||||
|
BindingElement : BindingPattern Initializeropt
|
||||||
|
|
||||||
|
[...]
|
||||||
|
3. If Initializer is present and v is undefined, then
|
||||||
|
a. Let defaultValue be the result of evaluating Initializer.
|
||||||
|
b. Let v be GetValue(defaultValue).
|
||||||
|
c. ReturnIfAbrupt(v).
|
||||||
|
---*/
|
||||||
|
function thrower() {
|
||||||
|
throw new Test262Error();
|
||||||
|
}
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (const { x: y = thrower() } of [{}]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,65 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-ptrn-prop-id-init-unresolvable.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-const.template
|
||||||
|
/*---
|
||||||
|
description: Destructuring initializer is an unresolvable reference (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.7 Runtime Semantics: KeyedBindingInitialization
|
||||||
|
|
||||||
|
BindingElement : BindingPattern Initializeropt
|
||||||
|
|
||||||
|
[...]
|
||||||
|
3. If Initializer is present and v is undefined, then
|
||||||
|
a. Let defaultValue be the result of evaluating Initializer.
|
||||||
|
b. Let v be GetValue(defaultValue).
|
||||||
|
c. ReturnIfAbrupt(v).
|
||||||
|
|
||||||
|
6.2.3.1 GetValue (V)
|
||||||
|
|
||||||
|
1. ReturnIfAbrupt(V).
|
||||||
|
2. If Type(V) is not Reference, return V.
|
||||||
|
3. Let base be GetBase(V).
|
||||||
|
4. If IsUnresolvableReference(V), throw a ReferenceError exception.
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (const { x: y = unresolvableReference } of [{}]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, ReferenceError))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,56 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-ptrn-prop-obj-value-null.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-const.template
|
||||||
|
/*---
|
||||||
|
description: Object binding pattern with "nested" object binding pattern taking the `null` value (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.7 Runtime Semantics: KeyedBindingInitialization
|
||||||
|
|
||||||
|
[...]
|
||||||
|
3. If Initializer is present and v is undefined, then
|
||||||
|
[...]
|
||||||
|
4. Return the result of performing BindingInitialization for BindingPattern
|
||||||
|
passing v and environment as arguments.
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (const { w: { x, y, z } = { x: 4, y: 5, z: 6 } } of [{ w: null }]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,56 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-ptrn-prop-obj-value-undef.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-const.template
|
||||||
|
/*---
|
||||||
|
description: Object binding pattern with "nested" object binding pattern taking the `null` value (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.7 Runtime Semantics: KeyedBindingInitialization
|
||||||
|
|
||||||
|
[...]
|
||||||
|
3. If Initializer is present and v is undefined, then
|
||||||
|
[...]
|
||||||
|
4. Return the result of performing BindingInitialization for BindingPattern
|
||||||
|
passing v and environment as arguments.
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (const { w: { x, y, z } = undefined } of [{ }]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,60 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-init-iter-get-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-let.template
|
||||||
|
/*---
|
||||||
|
description: Abrupt completion returned by GetIterator (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [Symbol.iterator, destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.5 Runtime Semantics: BindingInitialization
|
||||||
|
|
||||||
|
BindingPattern : ArrayBindingPattern
|
||||||
|
|
||||||
|
1. Let iterator be GetIterator(value).
|
||||||
|
2. ReturnIfAbrupt(iterator).
|
||||||
|
|
||||||
|
---*/
|
||||||
|
var iter = {};
|
||||||
|
iter[Symbol.iterator] = function() {
|
||||||
|
throw new Test262Error();
|
||||||
|
};
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (let [x] of [iter]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,67 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-elem-ary-val-null.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-let.template
|
||||||
|
/*---
|
||||||
|
description: Nested array destructuring with a null value (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
|
||||||
|
BindingElement : BindingPattern Initializeropt
|
||||||
|
|
||||||
|
1. If iteratorRecord.[[done]] is false, then
|
||||||
|
[...]
|
||||||
|
e. Else
|
||||||
|
i. Let v be IteratorValue(next).
|
||||||
|
[...]
|
||||||
|
4. Return the result of performing BindingInitialization of BindingPattern
|
||||||
|
with v and environment as the arguments.
|
||||||
|
|
||||||
|
13.3.3.5 Runtime Semantics: BindingInitialization
|
||||||
|
|
||||||
|
BindingPattern : ArrayBindingPattern
|
||||||
|
|
||||||
|
1. Let iterator be GetIterator(value).
|
||||||
|
2. ReturnIfAbrupt(iterator).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (let [[x]] of [[null]]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,58 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-elem-id-init-throws.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-let.template
|
||||||
|
/*---
|
||||||
|
description: Destructuring initializer returns an abrupt completion (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
|
||||||
|
SingleNameBinding : BindingIdentifier Initializeropt
|
||||||
|
|
||||||
|
[...]
|
||||||
|
6. If Initializer is present and v is undefined, then
|
||||||
|
a. Let defaultValue be the result of evaluating Initializer.
|
||||||
|
b. Let v be GetValue(defaultValue).
|
||||||
|
c. ReturnIfAbrupt(v).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (let [x = (function() { throw new Test262Error(); })()] of [[undefined]]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,65 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-elem-id-init-unresolvable.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-let.template
|
||||||
|
/*---
|
||||||
|
description: Destructuring initializer is an unresolvable reference (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
|
||||||
|
SingleNameBinding : BindingIdentifier Initializeropt
|
||||||
|
|
||||||
|
[...]
|
||||||
|
6. If Initializer is present and v is undefined, then
|
||||||
|
a. Let defaultValue be the result of evaluating Initializer.
|
||||||
|
b. Let v be GetValue(defaultValue).
|
||||||
|
c. ReturnIfAbrupt(v).
|
||||||
|
|
||||||
|
6.2.3.1 GetValue (V)
|
||||||
|
|
||||||
|
1. ReturnIfAbrupt(V).
|
||||||
|
2. If Type(V) is not Reference, return V.
|
||||||
|
3. Let base be GetBase(V).
|
||||||
|
4. If IsUnresolvableReference(V), throw a ReferenceError exception.
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (let [ x = unresolvableReference ] of [[]]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, ReferenceError))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,66 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-elem-id-iter-step-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-let.template
|
||||||
|
/*---
|
||||||
|
description: Error forwarding when IteratorStep returns an abrupt completion (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
|
||||||
|
SingleNameBinding : BindingIdentifier Initializeropt
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. If iteratorRecord.[[done]] is false, then
|
||||||
|
a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
|
||||||
|
b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
|
||||||
|
c. ReturnIfAbrupt(next).
|
||||||
|
---*/
|
||||||
|
var g = {};
|
||||||
|
g[Symbol.iterator] = function() {
|
||||||
|
return {
|
||||||
|
next: function() {
|
||||||
|
throw new Test262Error();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (let [x] of [g]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,77 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-elem-id-iter-val-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-let.template
|
||||||
|
/*---
|
||||||
|
description: Error forwarding when IteratorValue returns an abrupt completion (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
|
||||||
|
SingleNameBinding : BindingIdentifier Initializeropt
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. If iteratorRecord.[[done]] is false, then
|
||||||
|
a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
|
||||||
|
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).
|
||||||
|
---*/
|
||||||
|
var poisonedValue = Object.defineProperty({}, 'value', {
|
||||||
|
get: function() {
|
||||||
|
throw new Test262Error();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
var g = {};
|
||||||
|
g[Symbol.iterator] = function() {
|
||||||
|
return {
|
||||||
|
next: function() {
|
||||||
|
return poisonedValue;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (let [x] of [g]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,67 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-elem-obj-val-null.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-let.template
|
||||||
|
/*---
|
||||||
|
description: Nested object destructuring with a null value (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
|
||||||
|
BindingElement : BindingPattern Initializeropt
|
||||||
|
|
||||||
|
1. If iteratorRecord.[[done]] is false, then
|
||||||
|
[...]
|
||||||
|
e. Else
|
||||||
|
i. Let v be IteratorValue(next).
|
||||||
|
[...]
|
||||||
|
4. Return the result of performing BindingInitialization of BindingPattern
|
||||||
|
with v and environment as the arguments.
|
||||||
|
|
||||||
|
13.3.3.5 Runtime Semantics: BindingInitialization
|
||||||
|
|
||||||
|
BindingPattern : ObjectBindingPattern
|
||||||
|
|
||||||
|
1. Let valid be RequireObjectCoercible(value).
|
||||||
|
2. ReturnIfAbrupt(valid).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (let [{ x }] of [[null]]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,67 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-elem-obj-val-undef.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-let.template
|
||||||
|
/*---
|
||||||
|
description: Nested object destructuring with a value of `undefined` (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
|
||||||
|
BindingElement : BindingPattern Initializeropt
|
||||||
|
|
||||||
|
1. If iteratorRecord.[[done]] is false, then
|
||||||
|
[...]
|
||||||
|
e. Else
|
||||||
|
i. Let v be IteratorValue(next).
|
||||||
|
[...]
|
||||||
|
4. Return the result of performing BindingInitialization of BindingPattern
|
||||||
|
with v and environment as the arguments.
|
||||||
|
|
||||||
|
13.3.3.5 Runtime Semantics: BindingInitialization
|
||||||
|
|
||||||
|
BindingPattern : ObjectBindingPattern
|
||||||
|
|
||||||
|
1. Let valid be RequireObjectCoercible(value).
|
||||||
|
2. ReturnIfAbrupt(valid).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (let [{ x }] of [[]]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,74 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-elision-step-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-let.template
|
||||||
|
/*---
|
||||||
|
description: Elision advances iterator and forwards abrupt completions (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [generator, destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
|
||||||
|
ArrayBindingPattern : [ Elision ]
|
||||||
|
|
||||||
|
1. Return the result of performing
|
||||||
|
IteratorDestructuringAssignmentEvaluation of Elision with iteratorRecord
|
||||||
|
as the argument.
|
||||||
|
|
||||||
|
12.14.5.3 Runtime Semantics: IteratorDestructuringAssignmentEvaluation
|
||||||
|
|
||||||
|
Elision : ,
|
||||||
|
|
||||||
|
1. If iteratorRecord.[[done]] is false, then
|
||||||
|
a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
|
||||||
|
b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
|
||||||
|
c. ReturnIfAbrupt(next).
|
||||||
|
|
||||||
|
---*/
|
||||||
|
var following = 0;
|
||||||
|
var iter =function* () {
|
||||||
|
throw new Test262Error();
|
||||||
|
following += 1;
|
||||||
|
}();
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (let [,] of [iter]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
||||||
|
|
||||||
|
iter.next();
|
||||||
|
assert.sameValue(following, 0, 'Iterator was properly closed.');
|
@ -0,0 +1,60 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-rest-id-elision-next-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-let.template
|
||||||
|
/*---
|
||||||
|
description: Rest element following elision elements (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [generators, destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
ArrayBindingPattern : [ Elisionopt BindingRestElement ]
|
||||||
|
1. If Elision is present, then
|
||||||
|
a. Let status be the result of performing
|
||||||
|
IteratorDestructuringAssignmentEvaluation of Elision with
|
||||||
|
iteratorRecord as the argument.
|
||||||
|
b. ReturnIfAbrupt(status).
|
||||||
|
2. Return the result of performing IteratorBindingInitialization for
|
||||||
|
BindingRestElement with iteratorRecord and environment as arguments.
|
||||||
|
|
||||||
|
---*/
|
||||||
|
var iter = (function*() { throw new Test262Error(); })();
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (let [, ...x] of [iter]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,71 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-rest-id-iter-step-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-let.template
|
||||||
|
/*---
|
||||||
|
description: Error forwarding when IteratorStep returns an abrupt completion (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [generators, destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
BindingRestElement : ... BindingIdentifier
|
||||||
|
1. Let lhs be ResolveBinding(StringValue of BindingIdentifier,
|
||||||
|
environment).
|
||||||
|
2. ReturnIfAbrupt(lhs). 3. Let A be ArrayCreate(0). 4. Let n=0. 5. Repeat,
|
||||||
|
a. If iteratorRecord.[[done]] is false,
|
||||||
|
i. Let next be IteratorStep(iteratorRecord.[[iterator]]).
|
||||||
|
ii. If next is an abrupt completion, set iteratorRecord.[[done]] to
|
||||||
|
true.
|
||||||
|
iii. ReturnIfAbrupt(next).
|
||||||
|
|
||||||
|
---*/
|
||||||
|
var first = 0;
|
||||||
|
var second = 0;
|
||||||
|
var iter = function*() {
|
||||||
|
first += 1;
|
||||||
|
throw new Test262Error();
|
||||||
|
second += 1;
|
||||||
|
}();
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (let [...x] of [iter]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
||||||
|
|
||||||
|
iter.next();
|
||||||
|
assert.sameValue(first, 1);
|
||||||
|
assert.sameValue(second, 0, 'Iterator is closed following abrupt completion.');
|
@ -0,0 +1,73 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-rest-id-iter-val-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-let.template
|
||||||
|
/*---
|
||||||
|
description: Error forwarding when IteratorValue returns an abrupt completion (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [Symbol.iterator, destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
BindingRestElement : ... BindingIdentifier
|
||||||
|
1. Let lhs be ResolveBinding(StringValue of BindingIdentifier,
|
||||||
|
environment).
|
||||||
|
2. ReturnIfAbrupt(lhs). 3. Let A be ArrayCreate(0). 4. Let n=0. 5. Repeat,
|
||||||
|
[...]
|
||||||
|
c. Let nextValue be IteratorValue(next).
|
||||||
|
d. If nextValue is an abrupt completion, set iteratorRecord.[[done]] to
|
||||||
|
true.
|
||||||
|
e. ReturnIfAbrupt(nextValue).
|
||||||
|
|
||||||
|
---*/
|
||||||
|
var poisonedValue = Object.defineProperty({}, 'value', {
|
||||||
|
get: function() {
|
||||||
|
throw new Test262Error();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
var iter = {};
|
||||||
|
iter[Symbol.iterator] = function() {
|
||||||
|
return {
|
||||||
|
next: function() {
|
||||||
|
return poisonedValue;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (let [...x] of [iter]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,54 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-init-null.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-let.template
|
||||||
|
/*---
|
||||||
|
description: Value specifed for object binding pattern must be object coercible (null) (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
Runtime Semantics: BindingInitialization
|
||||||
|
|
||||||
|
ObjectBindingPattern : { }
|
||||||
|
|
||||||
|
1. Return NormalCompletion(empty).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (let {} of [null]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,54 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-init-undefined.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-let.template
|
||||||
|
/*---
|
||||||
|
description: Value specifed for object binding pattern must be object coercible (undefined) (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
Runtime Semantics: BindingInitialization
|
||||||
|
|
||||||
|
ObjectBindingPattern : { }
|
||||||
|
|
||||||
|
1. Return NormalCompletion(empty).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (let {} of [undefined]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,61 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-ptrn-id-get-value-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-let.template
|
||||||
|
/*---
|
||||||
|
description: Error thrown when accessing the corresponding property of the value object (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.7 Runtime Semantics: KeyedBindingInitialization
|
||||||
|
|
||||||
|
SingleNameBinding : BindingIdentifier Initializeropt
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let v be GetV(value, propertyName).
|
||||||
|
5. ReturnIfAbrupt(v).
|
||||||
|
---*/
|
||||||
|
var poisonedProperty = Object.defineProperty({}, 'poisoned', {
|
||||||
|
get: function() {
|
||||||
|
throw new Test262Error();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (let { poisoned } of [poisonedProperty]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,61 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-ptrn-id-init-throws.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-let.template
|
||||||
|
/*---
|
||||||
|
description: Error thrown when evaluating the initializer (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.7 Runtime Semantics: KeyedBindingInitialization
|
||||||
|
|
||||||
|
SingleNameBinding : BindingIdentifier Initializeropt
|
||||||
|
|
||||||
|
[...]
|
||||||
|
6. If Initializer is present and v is undefined, then
|
||||||
|
a. Let defaultValue be the result of evaluating Initializer.
|
||||||
|
b. Let v be GetValue(defaultValue).
|
||||||
|
c. ReturnIfAbrupt(v).
|
||||||
|
---*/
|
||||||
|
function thrower() {
|
||||||
|
throw new Test262Error();
|
||||||
|
}
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (let { x = thrower() } of [{}]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,65 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-ptrn-id-init-unresolvable.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-let.template
|
||||||
|
/*---
|
||||||
|
description: Destructuring initializer is an unresolvable reference (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.7 Runtime Semantics: KeyedBindingInitialization
|
||||||
|
|
||||||
|
SingleNameBinding : BindingIdentifier Initializeropt
|
||||||
|
|
||||||
|
[...]
|
||||||
|
6. If Initializer is present and v is undefined, then
|
||||||
|
a. Let defaultValue be the result of evaluating Initializer.
|
||||||
|
b. Let v be GetValue(defaultValue).
|
||||||
|
c. ReturnIfAbrupt(v).
|
||||||
|
|
||||||
|
6.2.3.1 GetValue (V)
|
||||||
|
|
||||||
|
1. ReturnIfAbrupt(V).
|
||||||
|
2. If Type(V) is not Reference, return V.
|
||||||
|
3. Let base be GetBase(V).
|
||||||
|
4. If IsUnresolvableReference(V), throw a ReferenceError exception.
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (let { x = unresolvableReference } of [{}]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, ReferenceError))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,62 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-ptrn-list-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-let.template
|
||||||
|
/*---
|
||||||
|
description: Binding property list evaluation is interrupted by an abrupt completion (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.5 Runtime Semantics: BindingInitialization
|
||||||
|
|
||||||
|
BindingPropertyList : BindingPropertyList , BindingProperty
|
||||||
|
|
||||||
|
1. Let status be the result of performing BindingInitialization for
|
||||||
|
BindingPropertyList using value and environment as arguments.
|
||||||
|
2. ReturnIfAbrupt(status).
|
||||||
|
---*/
|
||||||
|
var initCount = 0;
|
||||||
|
function thrower() {
|
||||||
|
throw new Test262Error();
|
||||||
|
}
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (let { a, b = thrower(), c = ++initCount } of [{}]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
||||||
|
|
||||||
|
assert.sameValue(initCount, 0);
|
@ -0,0 +1,56 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-ptrn-prop-ary-value-null.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-let.template
|
||||||
|
/*---
|
||||||
|
description: Object binding pattern with "nested" array binding pattern taking the `null` value (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.7 Runtime Semantics: KeyedBindingInitialization
|
||||||
|
|
||||||
|
[...]
|
||||||
|
3. If Initializer is present and v is undefined, then
|
||||||
|
[...]
|
||||||
|
4. Return the result of performing BindingInitialization for BindingPattern
|
||||||
|
passing v and environment as arguments.
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (let { w: [x, y, z] = [4, 5, 6] } of [{ w: null }]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,58 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-ptrn-prop-eval-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-let.template
|
||||||
|
/*---
|
||||||
|
description: Evaluation of property name returns an abrupt completion (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.5 Runtime Semantics: BindingInitialization
|
||||||
|
|
||||||
|
BindingProperty : PropertyName : BindingElement
|
||||||
|
|
||||||
|
1. Let P be the result of evaluating PropertyName
|
||||||
|
2. ReturnIfAbrupt(P).
|
||||||
|
---*/
|
||||||
|
function thrower() {
|
||||||
|
throw new Test262Error();
|
||||||
|
}
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (let { [thrower()]: x } of [{}]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,63 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-ptrn-prop-id-get-value-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-let.template
|
||||||
|
/*---
|
||||||
|
description: Error thrown when accessing the corresponding property of the value object (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.7 Runtime Semantics: KeyedBindingInitialization
|
||||||
|
|
||||||
|
BindingElement : BindingPattern Initializeropt
|
||||||
|
|
||||||
|
1. Let v be GetV(value, propertyName).
|
||||||
|
2. ReturnIfAbrupt(v).
|
||||||
|
---*/
|
||||||
|
var initEvalCount = 0;
|
||||||
|
var poisonedProperty = Object.defineProperty({}, 'poisoned', {
|
||||||
|
get: function() {
|
||||||
|
throw new Test262Error();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (let { poisoned: x = ++initEvalCount } of [poisonedProperty]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
||||||
|
|
||||||
|
assert.sameValue(initEvalCount, 0);
|
@ -0,0 +1,61 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-ptrn-prop-id-init-throws.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-let.template
|
||||||
|
/*---
|
||||||
|
description: Error thrown when evaluating the initializer (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.7 Runtime Semantics: KeyedBindingInitialization
|
||||||
|
|
||||||
|
BindingElement : BindingPattern Initializeropt
|
||||||
|
|
||||||
|
[...]
|
||||||
|
3. If Initializer is present and v is undefined, then
|
||||||
|
a. Let defaultValue be the result of evaluating Initializer.
|
||||||
|
b. Let v be GetValue(defaultValue).
|
||||||
|
c. ReturnIfAbrupt(v).
|
||||||
|
---*/
|
||||||
|
function thrower() {
|
||||||
|
throw new Test262Error();
|
||||||
|
}
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (let { x: y = thrower() } of [{}]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,65 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-ptrn-prop-id-init-unresolvable.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-let.template
|
||||||
|
/*---
|
||||||
|
description: Destructuring initializer is an unresolvable reference (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.7 Runtime Semantics: KeyedBindingInitialization
|
||||||
|
|
||||||
|
BindingElement : BindingPattern Initializeropt
|
||||||
|
|
||||||
|
[...]
|
||||||
|
3. If Initializer is present and v is undefined, then
|
||||||
|
a. Let defaultValue be the result of evaluating Initializer.
|
||||||
|
b. Let v be GetValue(defaultValue).
|
||||||
|
c. ReturnIfAbrupt(v).
|
||||||
|
|
||||||
|
6.2.3.1 GetValue (V)
|
||||||
|
|
||||||
|
1. ReturnIfAbrupt(V).
|
||||||
|
2. If Type(V) is not Reference, return V.
|
||||||
|
3. Let base be GetBase(V).
|
||||||
|
4. If IsUnresolvableReference(V), throw a ReferenceError exception.
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (let { x: y = unresolvableReference } of [{}]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, ReferenceError))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,56 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-ptrn-prop-obj-value-null.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-let.template
|
||||||
|
/*---
|
||||||
|
description: Object binding pattern with "nested" object binding pattern taking the `null` value (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.7 Runtime Semantics: KeyedBindingInitialization
|
||||||
|
|
||||||
|
[...]
|
||||||
|
3. If Initializer is present and v is undefined, then
|
||||||
|
[...]
|
||||||
|
4. Return the result of performing BindingInitialization for BindingPattern
|
||||||
|
passing v and environment as arguments.
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (let { w: { x, y, z } = { x: 4, y: 5, z: 6 } } of [{ w: null }]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,56 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-ptrn-prop-obj-value-undef.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-let.template
|
||||||
|
/*---
|
||||||
|
description: Object binding pattern with "nested" object binding pattern taking the `null` value (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.7 Runtime Semantics: KeyedBindingInitialization
|
||||||
|
|
||||||
|
[...]
|
||||||
|
3. If Initializer is present and v is undefined, then
|
||||||
|
[...]
|
||||||
|
4. Return the result of performing BindingInitialization for BindingPattern
|
||||||
|
passing v and environment as arguments.
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (let { w: { x, y, z } = undefined } of [{ }]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,59 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-init-iter-get-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-var.template
|
||||||
|
/*---
|
||||||
|
description: Abrupt completion returned by GetIterator (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [Symbol.iterator, destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( var ForBinding of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForBinding, Statement, keyResult,
|
||||||
|
varBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.5 Runtime Semantics: BindingInitialization
|
||||||
|
|
||||||
|
BindingPattern : ArrayBindingPattern
|
||||||
|
|
||||||
|
1. Let iterator be GetIterator(value).
|
||||||
|
2. ReturnIfAbrupt(iterator).
|
||||||
|
|
||||||
|
---*/
|
||||||
|
var iter = {};
|
||||||
|
iter[Symbol.iterator] = function() {
|
||||||
|
throw new Test262Error();
|
||||||
|
};
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (var [x] of [iter]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
@ -0,0 +1,66 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-elem-ary-val-null.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-var.template
|
||||||
|
/*---
|
||||||
|
description: Nested array destructuring with a null value (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( var ForBinding of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForBinding, Statement, keyResult,
|
||||||
|
varBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
|
||||||
|
BindingElement : BindingPattern Initializeropt
|
||||||
|
|
||||||
|
1. If iteratorRecord.[[done]] is false, then
|
||||||
|
[...]
|
||||||
|
e. Else
|
||||||
|
i. Let v be IteratorValue(next).
|
||||||
|
[...]
|
||||||
|
4. Return the result of performing BindingInitialization of BindingPattern
|
||||||
|
with v and environment as the arguments.
|
||||||
|
|
||||||
|
13.3.3.5 Runtime Semantics: BindingInitialization
|
||||||
|
|
||||||
|
BindingPattern : ArrayBindingPattern
|
||||||
|
|
||||||
|
1. Let iterator be GetIterator(value).
|
||||||
|
2. ReturnIfAbrupt(iterator).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (var [[x]] of [[null]]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
|
||||||
|
.then($DONE, $DONE);
|
@ -0,0 +1,57 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-elem-id-init-throws.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-var.template
|
||||||
|
/*---
|
||||||
|
description: Destructuring initializer returns an abrupt completion (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( var ForBinding of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForBinding, Statement, keyResult,
|
||||||
|
varBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
|
||||||
|
SingleNameBinding : BindingIdentifier Initializeropt
|
||||||
|
|
||||||
|
[...]
|
||||||
|
6. If Initializer is present and v is undefined, then
|
||||||
|
a. Let defaultValue be the result of evaluating Initializer.
|
||||||
|
b. Let v be GetValue(defaultValue).
|
||||||
|
c. ReturnIfAbrupt(v).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (var [x = (function() { throw new Test262Error(); })()] of [[undefined]]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
@ -0,0 +1,64 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-elem-id-init-unresolvable.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-var.template
|
||||||
|
/*---
|
||||||
|
description: Destructuring initializer is an unresolvable reference (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( var ForBinding of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForBinding, Statement, keyResult,
|
||||||
|
varBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
|
||||||
|
SingleNameBinding : BindingIdentifier Initializeropt
|
||||||
|
|
||||||
|
[...]
|
||||||
|
6. If Initializer is present and v is undefined, then
|
||||||
|
a. Let defaultValue be the result of evaluating Initializer.
|
||||||
|
b. Let v be GetValue(defaultValue).
|
||||||
|
c. ReturnIfAbrupt(v).
|
||||||
|
|
||||||
|
6.2.3.1 GetValue (V)
|
||||||
|
|
||||||
|
1. ReturnIfAbrupt(V).
|
||||||
|
2. If Type(V) is not Reference, return V.
|
||||||
|
3. Let base be GetBase(V).
|
||||||
|
4. If IsUnresolvableReference(V), throw a ReferenceError exception.
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (var [ x = unresolvableReference ] of [[]]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, ReferenceError))
|
||||||
|
.then($DONE, $DONE);
|
@ -0,0 +1,65 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-elem-id-iter-step-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-var.template
|
||||||
|
/*---
|
||||||
|
description: Error forwarding when IteratorStep returns an abrupt completion (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( var ForBinding of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForBinding, Statement, keyResult,
|
||||||
|
varBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
|
||||||
|
SingleNameBinding : BindingIdentifier Initializeropt
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. If iteratorRecord.[[done]] is false, then
|
||||||
|
a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
|
||||||
|
b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
|
||||||
|
c. ReturnIfAbrupt(next).
|
||||||
|
---*/
|
||||||
|
var g = {};
|
||||||
|
g[Symbol.iterator] = function() {
|
||||||
|
return {
|
||||||
|
next: function() {
|
||||||
|
throw new Test262Error();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (var [x] of [g]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
@ -0,0 +1,76 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-elem-id-iter-val-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-var.template
|
||||||
|
/*---
|
||||||
|
description: Error forwarding when IteratorValue returns an abrupt completion (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( var ForBinding of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForBinding, Statement, keyResult,
|
||||||
|
varBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
|
||||||
|
SingleNameBinding : BindingIdentifier Initializeropt
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. If iteratorRecord.[[done]] is false, then
|
||||||
|
a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
|
||||||
|
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).
|
||||||
|
---*/
|
||||||
|
var poisonedValue = Object.defineProperty({}, 'value', {
|
||||||
|
get: function() {
|
||||||
|
throw new Test262Error();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
var g = {};
|
||||||
|
g[Symbol.iterator] = function() {
|
||||||
|
return {
|
||||||
|
next: function() {
|
||||||
|
return poisonedValue;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (var [x] of [g]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
@ -0,0 +1,66 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-elem-obj-val-null.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-var.template
|
||||||
|
/*---
|
||||||
|
description: Nested object destructuring with a null value (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( var ForBinding of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForBinding, Statement, keyResult,
|
||||||
|
varBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
|
||||||
|
BindingElement : BindingPattern Initializeropt
|
||||||
|
|
||||||
|
1. If iteratorRecord.[[done]] is false, then
|
||||||
|
[...]
|
||||||
|
e. Else
|
||||||
|
i. Let v be IteratorValue(next).
|
||||||
|
[...]
|
||||||
|
4. Return the result of performing BindingInitialization of BindingPattern
|
||||||
|
with v and environment as the arguments.
|
||||||
|
|
||||||
|
13.3.3.5 Runtime Semantics: BindingInitialization
|
||||||
|
|
||||||
|
BindingPattern : ObjectBindingPattern
|
||||||
|
|
||||||
|
1. Let valid be RequireObjectCoercible(value).
|
||||||
|
2. ReturnIfAbrupt(valid).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (var [{ x }] of [[null]]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
|
||||||
|
.then($DONE, $DONE);
|
@ -0,0 +1,66 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-elem-obj-val-undef.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-var.template
|
||||||
|
/*---
|
||||||
|
description: Nested object destructuring with a value of `undefined` (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( var ForBinding of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForBinding, Statement, keyResult,
|
||||||
|
varBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
|
||||||
|
BindingElement : BindingPattern Initializeropt
|
||||||
|
|
||||||
|
1. If iteratorRecord.[[done]] is false, then
|
||||||
|
[...]
|
||||||
|
e. Else
|
||||||
|
i. Let v be IteratorValue(next).
|
||||||
|
[...]
|
||||||
|
4. Return the result of performing BindingInitialization of BindingPattern
|
||||||
|
with v and environment as the arguments.
|
||||||
|
|
||||||
|
13.3.3.5 Runtime Semantics: BindingInitialization
|
||||||
|
|
||||||
|
BindingPattern : ObjectBindingPattern
|
||||||
|
|
||||||
|
1. Let valid be RequireObjectCoercible(value).
|
||||||
|
2. ReturnIfAbrupt(valid).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (var [{ x }] of [[]]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
|
||||||
|
.then($DONE, $DONE);
|
@ -0,0 +1,73 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-elision-step-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-var.template
|
||||||
|
/*---
|
||||||
|
description: Elision advances iterator and forwards abrupt completions (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [generator, destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( var ForBinding of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForBinding, Statement, keyResult,
|
||||||
|
varBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
|
||||||
|
ArrayBindingPattern : [ Elision ]
|
||||||
|
|
||||||
|
1. Return the result of performing
|
||||||
|
IteratorDestructuringAssignmentEvaluation of Elision with iteratorRecord
|
||||||
|
as the argument.
|
||||||
|
|
||||||
|
12.14.5.3 Runtime Semantics: IteratorDestructuringAssignmentEvaluation
|
||||||
|
|
||||||
|
Elision : ,
|
||||||
|
|
||||||
|
1. If iteratorRecord.[[done]] is false, then
|
||||||
|
a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
|
||||||
|
b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
|
||||||
|
c. ReturnIfAbrupt(next).
|
||||||
|
|
||||||
|
---*/
|
||||||
|
var following = 0;
|
||||||
|
var iter =function* () {
|
||||||
|
throw new Test262Error();
|
||||||
|
following += 1;
|
||||||
|
}();
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (var [,] of [iter]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
||||||
|
iter.next();
|
||||||
|
assert.sameValue(following, 0, 'Iterator was properly closed.');
|
@ -0,0 +1,59 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-rest-id-elision-next-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-var.template
|
||||||
|
/*---
|
||||||
|
description: Rest element following elision elements (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [generators, destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( var ForBinding of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForBinding, Statement, keyResult,
|
||||||
|
varBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
ArrayBindingPattern : [ Elisionopt BindingRestElement ]
|
||||||
|
1. If Elision is present, then
|
||||||
|
a. Let status be the result of performing
|
||||||
|
IteratorDestructuringAssignmentEvaluation of Elision with
|
||||||
|
iteratorRecord as the argument.
|
||||||
|
b. ReturnIfAbrupt(status).
|
||||||
|
2. Return the result of performing IteratorBindingInitialization for
|
||||||
|
BindingRestElement with iteratorRecord and environment as arguments.
|
||||||
|
|
||||||
|
---*/
|
||||||
|
var iter = (function*() { throw new Test262Error(); })();
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (var [, ...x] of [iter]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
@ -0,0 +1,70 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-rest-id-iter-step-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-var.template
|
||||||
|
/*---
|
||||||
|
description: Error forwarding when IteratorStep returns an abrupt completion (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [generators, destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( var ForBinding of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForBinding, Statement, keyResult,
|
||||||
|
varBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
BindingRestElement : ... BindingIdentifier
|
||||||
|
1. Let lhs be ResolveBinding(StringValue of BindingIdentifier,
|
||||||
|
environment).
|
||||||
|
2. ReturnIfAbrupt(lhs). 3. Let A be ArrayCreate(0). 4. Let n=0. 5. Repeat,
|
||||||
|
a. If iteratorRecord.[[done]] is false,
|
||||||
|
i. Let next be IteratorStep(iteratorRecord.[[iterator]]).
|
||||||
|
ii. If next is an abrupt completion, set iteratorRecord.[[done]] to
|
||||||
|
true.
|
||||||
|
iii. ReturnIfAbrupt(next).
|
||||||
|
|
||||||
|
---*/
|
||||||
|
var first = 0;
|
||||||
|
var second = 0;
|
||||||
|
var iter = function*() {
|
||||||
|
first += 1;
|
||||||
|
throw new Test262Error();
|
||||||
|
second += 1;
|
||||||
|
}();
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (var [...x] of [iter]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
||||||
|
iter.next();
|
||||||
|
assert.sameValue(first, 1);
|
||||||
|
assert.sameValue(second, 0, 'Iterator is closed following abrupt completion.');
|
@ -0,0 +1,72 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-rest-id-iter-val-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-var.template
|
||||||
|
/*---
|
||||||
|
description: Error forwarding when IteratorValue returns an abrupt completion (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [Symbol.iterator, destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( var ForBinding of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForBinding, Statement, keyResult,
|
||||||
|
varBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
BindingRestElement : ... BindingIdentifier
|
||||||
|
1. Let lhs be ResolveBinding(StringValue of BindingIdentifier,
|
||||||
|
environment).
|
||||||
|
2. ReturnIfAbrupt(lhs). 3. Let A be ArrayCreate(0). 4. Let n=0. 5. Repeat,
|
||||||
|
[...]
|
||||||
|
c. Let nextValue be IteratorValue(next).
|
||||||
|
d. If nextValue is an abrupt completion, set iteratorRecord.[[done]] to
|
||||||
|
true.
|
||||||
|
e. ReturnIfAbrupt(nextValue).
|
||||||
|
|
||||||
|
---*/
|
||||||
|
var poisonedValue = Object.defineProperty({}, 'value', {
|
||||||
|
get: function() {
|
||||||
|
throw new Test262Error();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
var iter = {};
|
||||||
|
iter[Symbol.iterator] = function() {
|
||||||
|
return {
|
||||||
|
next: function() {
|
||||||
|
return poisonedValue;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (var [...x] of [iter]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
@ -0,0 +1,53 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-init-null.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-var.template
|
||||||
|
/*---
|
||||||
|
description: Value specifed for object binding pattern must be object coercible (null) (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( var ForBinding of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForBinding, Statement, keyResult,
|
||||||
|
varBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
Runtime Semantics: BindingInitialization
|
||||||
|
|
||||||
|
ObjectBindingPattern : { }
|
||||||
|
|
||||||
|
1. Return NormalCompletion(empty).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (var {} of [null]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
|
||||||
|
.then($DONE, $DONE);
|
@ -0,0 +1,53 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-init-undefined.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-var.template
|
||||||
|
/*---
|
||||||
|
description: Value specifed for object binding pattern must be object coercible (undefined) (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( var ForBinding of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForBinding, Statement, keyResult,
|
||||||
|
varBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
Runtime Semantics: BindingInitialization
|
||||||
|
|
||||||
|
ObjectBindingPattern : { }
|
||||||
|
|
||||||
|
1. Return NormalCompletion(empty).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (var {} of [undefined]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
|
||||||
|
.then($DONE, $DONE);
|
@ -0,0 +1,60 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-ptrn-id-get-value-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-var.template
|
||||||
|
/*---
|
||||||
|
description: Error thrown when accessing the corresponding property of the value object (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( var ForBinding of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForBinding, Statement, keyResult,
|
||||||
|
varBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.7 Runtime Semantics: KeyedBindingInitialization
|
||||||
|
|
||||||
|
SingleNameBinding : BindingIdentifier Initializeropt
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let v be GetV(value, propertyName).
|
||||||
|
5. ReturnIfAbrupt(v).
|
||||||
|
---*/
|
||||||
|
var poisonedProperty = Object.defineProperty({}, 'poisoned', {
|
||||||
|
get: function() {
|
||||||
|
throw new Test262Error();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (var { poisoned } of [poisonedProperty]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
@ -0,0 +1,60 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-ptrn-id-init-throws.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-var.template
|
||||||
|
/*---
|
||||||
|
description: Error thrown when evaluating the initializer (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( var ForBinding of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForBinding, Statement, keyResult,
|
||||||
|
varBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.7 Runtime Semantics: KeyedBindingInitialization
|
||||||
|
|
||||||
|
SingleNameBinding : BindingIdentifier Initializeropt
|
||||||
|
|
||||||
|
[...]
|
||||||
|
6. If Initializer is present and v is undefined, then
|
||||||
|
a. Let defaultValue be the result of evaluating Initializer.
|
||||||
|
b. Let v be GetValue(defaultValue).
|
||||||
|
c. ReturnIfAbrupt(v).
|
||||||
|
---*/
|
||||||
|
function thrower() {
|
||||||
|
throw new Test262Error();
|
||||||
|
}
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (var { x = thrower() } of [{}]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
@ -0,0 +1,64 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-ptrn-id-init-unresolvable.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-var.template
|
||||||
|
/*---
|
||||||
|
description: Destructuring initializer is an unresolvable reference (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( var ForBinding of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForBinding, Statement, keyResult,
|
||||||
|
varBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.7 Runtime Semantics: KeyedBindingInitialization
|
||||||
|
|
||||||
|
SingleNameBinding : BindingIdentifier Initializeropt
|
||||||
|
|
||||||
|
[...]
|
||||||
|
6. If Initializer is present and v is undefined, then
|
||||||
|
a. Let defaultValue be the result of evaluating Initializer.
|
||||||
|
b. Let v be GetValue(defaultValue).
|
||||||
|
c. ReturnIfAbrupt(v).
|
||||||
|
|
||||||
|
6.2.3.1 GetValue (V)
|
||||||
|
|
||||||
|
1. ReturnIfAbrupt(V).
|
||||||
|
2. If Type(V) is not Reference, return V.
|
||||||
|
3. Let base be GetBase(V).
|
||||||
|
4. If IsUnresolvableReference(V), throw a ReferenceError exception.
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (var { x = unresolvableReference } of [{}]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, ReferenceError))
|
||||||
|
.then($DONE, $DONE);
|
@ -0,0 +1,61 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-ptrn-list-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-var.template
|
||||||
|
/*---
|
||||||
|
description: Binding property list evaluation is interrupted by an abrupt completion (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( var ForBinding of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForBinding, Statement, keyResult,
|
||||||
|
varBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.5 Runtime Semantics: BindingInitialization
|
||||||
|
|
||||||
|
BindingPropertyList : BindingPropertyList , BindingProperty
|
||||||
|
|
||||||
|
1. Let status be the result of performing BindingInitialization for
|
||||||
|
BindingPropertyList using value and environment as arguments.
|
||||||
|
2. ReturnIfAbrupt(status).
|
||||||
|
---*/
|
||||||
|
var initCount = 0;
|
||||||
|
function thrower() {
|
||||||
|
throw new Test262Error();
|
||||||
|
}
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (var { a, b = thrower(), c = ++initCount } of [{}]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
||||||
|
assert.sameValue(initCount, 0);
|
@ -0,0 +1,55 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-ptrn-prop-ary-value-null.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-var.template
|
||||||
|
/*---
|
||||||
|
description: Object binding pattern with "nested" array binding pattern taking the `null` value (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( var ForBinding of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForBinding, Statement, keyResult,
|
||||||
|
varBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.7 Runtime Semantics: KeyedBindingInitialization
|
||||||
|
|
||||||
|
[...]
|
||||||
|
3. If Initializer is present and v is undefined, then
|
||||||
|
[...]
|
||||||
|
4. Return the result of performing BindingInitialization for BindingPattern
|
||||||
|
passing v and environment as arguments.
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (var { w: [x, y, z] = [4, 5, 6] } of [{ w: null }]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
|
||||||
|
.then($DONE, $DONE);
|
@ -0,0 +1,57 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-ptrn-prop-eval-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-var.template
|
||||||
|
/*---
|
||||||
|
description: Evaluation of property name returns an abrupt completion (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( var ForBinding of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForBinding, Statement, keyResult,
|
||||||
|
varBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.5 Runtime Semantics: BindingInitialization
|
||||||
|
|
||||||
|
BindingProperty : PropertyName : BindingElement
|
||||||
|
|
||||||
|
1. Let P be the result of evaluating PropertyName
|
||||||
|
2. ReturnIfAbrupt(P).
|
||||||
|
---*/
|
||||||
|
function thrower() {
|
||||||
|
throw new Test262Error();
|
||||||
|
}
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (var { [thrower()]: x } of [{}]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
@ -0,0 +1,62 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-ptrn-prop-id-get-value-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-var.template
|
||||||
|
/*---
|
||||||
|
description: Error thrown when accessing the corresponding property of the value object (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( var ForBinding of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForBinding, Statement, keyResult,
|
||||||
|
varBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.7 Runtime Semantics: KeyedBindingInitialization
|
||||||
|
|
||||||
|
BindingElement : BindingPattern Initializeropt
|
||||||
|
|
||||||
|
1. Let v be GetV(value, propertyName).
|
||||||
|
2. ReturnIfAbrupt(v).
|
||||||
|
---*/
|
||||||
|
var initEvalCount = 0;
|
||||||
|
var poisonedProperty = Object.defineProperty({}, 'poisoned', {
|
||||||
|
get: function() {
|
||||||
|
throw new Test262Error();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (var { poisoned: x = ++initEvalCount } of [poisonedProperty]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
||||||
|
assert.sameValue(initEvalCount, 0);
|
@ -0,0 +1,60 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-ptrn-prop-id-init-throws.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-var.template
|
||||||
|
/*---
|
||||||
|
description: Error thrown when evaluating the initializer (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( var ForBinding of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForBinding, Statement, keyResult,
|
||||||
|
varBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.7 Runtime Semantics: KeyedBindingInitialization
|
||||||
|
|
||||||
|
BindingElement : BindingPattern Initializeropt
|
||||||
|
|
||||||
|
[...]
|
||||||
|
3. If Initializer is present and v is undefined, then
|
||||||
|
a. Let defaultValue be the result of evaluating Initializer.
|
||||||
|
b. Let v be GetValue(defaultValue).
|
||||||
|
c. ReturnIfAbrupt(v).
|
||||||
|
---*/
|
||||||
|
function thrower() {
|
||||||
|
throw new Test262Error();
|
||||||
|
}
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (var { x: y = thrower() } of [{}]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
@ -0,0 +1,64 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-ptrn-prop-id-init-unresolvable.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-var.template
|
||||||
|
/*---
|
||||||
|
description: Destructuring initializer is an unresolvable reference (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( var ForBinding of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForBinding, Statement, keyResult,
|
||||||
|
varBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.7 Runtime Semantics: KeyedBindingInitialization
|
||||||
|
|
||||||
|
BindingElement : BindingPattern Initializeropt
|
||||||
|
|
||||||
|
[...]
|
||||||
|
3. If Initializer is present and v is undefined, then
|
||||||
|
a. Let defaultValue be the result of evaluating Initializer.
|
||||||
|
b. Let v be GetValue(defaultValue).
|
||||||
|
c. ReturnIfAbrupt(v).
|
||||||
|
|
||||||
|
6.2.3.1 GetValue (V)
|
||||||
|
|
||||||
|
1. ReturnIfAbrupt(V).
|
||||||
|
2. If Type(V) is not Reference, return V.
|
||||||
|
3. Let base be GetBase(V).
|
||||||
|
4. If IsUnresolvableReference(V), throw a ReferenceError exception.
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (var { x: y = unresolvableReference } of [{}]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, ReferenceError))
|
||||||
|
.then($DONE, $DONE);
|
@ -0,0 +1,55 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-ptrn-prop-obj-value-null.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-var.template
|
||||||
|
/*---
|
||||||
|
description: Object binding pattern with "nested" object binding pattern taking the `null` value (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( var ForBinding of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForBinding, Statement, keyResult,
|
||||||
|
varBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.7 Runtime Semantics: KeyedBindingInitialization
|
||||||
|
|
||||||
|
[...]
|
||||||
|
3. If Initializer is present and v is undefined, then
|
||||||
|
[...]
|
||||||
|
4. Return the result of performing BindingInitialization for BindingPattern
|
||||||
|
passing v and environment as arguments.
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (var { w: { x, y, z } = { x: 4, y: 5, z: 6 } } of [{ w: null }]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
|
||||||
|
.then($DONE, $DONE);
|
@ -0,0 +1,55 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-ptrn-prop-obj-value-undef.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-func-var.template
|
||||||
|
/*---
|
||||||
|
description: Object binding pattern with "nested" object binding pattern taking the `null` value (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( var ForBinding of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForBinding, Statement, keyResult,
|
||||||
|
varBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.7 Runtime Semantics: KeyedBindingInitialization
|
||||||
|
|
||||||
|
[...]
|
||||||
|
3. If Initializer is present and v is undefined, then
|
||||||
|
[...]
|
||||||
|
4. Return the result of performing BindingInitialization for BindingPattern
|
||||||
|
passing v and environment as arguments.
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function fn() {
|
||||||
|
for await (var { w: { x, y, z } = undefined } of [{ }]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
|
||||||
|
.then($DONE, $DONE);
|
@ -0,0 +1,60 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-init-iter-get-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-gen-const.template
|
||||||
|
/*---
|
||||||
|
description: Abrupt completion returned by GetIterator (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [Symbol.iterator, destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.5 Runtime Semantics: BindingInitialization
|
||||||
|
|
||||||
|
BindingPattern : ArrayBindingPattern
|
||||||
|
|
||||||
|
1. Let iterator be GetIterator(value).
|
||||||
|
2. ReturnIfAbrupt(iterator).
|
||||||
|
|
||||||
|
---*/
|
||||||
|
var iter = {};
|
||||||
|
iter[Symbol.iterator] = function() {
|
||||||
|
throw new Test262Error();
|
||||||
|
};
|
||||||
|
|
||||||
|
async function * gen() {
|
||||||
|
for await (const [x] of [iter]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gen().next()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,67 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-elem-ary-val-null.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-gen-const.template
|
||||||
|
/*---
|
||||||
|
description: Nested array destructuring with a null value (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
|
||||||
|
BindingElement : BindingPattern Initializeropt
|
||||||
|
|
||||||
|
1. If iteratorRecord.[[done]] is false, then
|
||||||
|
[...]
|
||||||
|
e. Else
|
||||||
|
i. Let v be IteratorValue(next).
|
||||||
|
[...]
|
||||||
|
4. Return the result of performing BindingInitialization of BindingPattern
|
||||||
|
with v and environment as the arguments.
|
||||||
|
|
||||||
|
13.3.3.5 Runtime Semantics: BindingInitialization
|
||||||
|
|
||||||
|
BindingPattern : ArrayBindingPattern
|
||||||
|
|
||||||
|
1. Let iterator be GetIterator(value).
|
||||||
|
2. ReturnIfAbrupt(iterator).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function * gen() {
|
||||||
|
for await (const [[x]] of [[null]]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gen().next()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,58 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-elem-id-init-throws.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-gen-const.template
|
||||||
|
/*---
|
||||||
|
description: Destructuring initializer returns an abrupt completion (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
|
||||||
|
SingleNameBinding : BindingIdentifier Initializeropt
|
||||||
|
|
||||||
|
[...]
|
||||||
|
6. If Initializer is present and v is undefined, then
|
||||||
|
a. Let defaultValue be the result of evaluating Initializer.
|
||||||
|
b. Let v be GetValue(defaultValue).
|
||||||
|
c. ReturnIfAbrupt(v).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function * gen() {
|
||||||
|
for await (const [x = (function() { throw new Test262Error(); })()] of [[undefined]]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gen().next()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,65 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-elem-id-init-unresolvable.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-gen-const.template
|
||||||
|
/*---
|
||||||
|
description: Destructuring initializer is an unresolvable reference (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
|
||||||
|
SingleNameBinding : BindingIdentifier Initializeropt
|
||||||
|
|
||||||
|
[...]
|
||||||
|
6. If Initializer is present and v is undefined, then
|
||||||
|
a. Let defaultValue be the result of evaluating Initializer.
|
||||||
|
b. Let v be GetValue(defaultValue).
|
||||||
|
c. ReturnIfAbrupt(v).
|
||||||
|
|
||||||
|
6.2.3.1 GetValue (V)
|
||||||
|
|
||||||
|
1. ReturnIfAbrupt(V).
|
||||||
|
2. If Type(V) is not Reference, return V.
|
||||||
|
3. Let base be GetBase(V).
|
||||||
|
4. If IsUnresolvableReference(V), throw a ReferenceError exception.
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function * gen() {
|
||||||
|
for await (const [ x = unresolvableReference ] of [[]]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gen().next()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, ReferenceError))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,66 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-elem-id-iter-step-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-gen-const.template
|
||||||
|
/*---
|
||||||
|
description: Error forwarding when IteratorStep returns an abrupt completion (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
|
||||||
|
SingleNameBinding : BindingIdentifier Initializeropt
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. If iteratorRecord.[[done]] is false, then
|
||||||
|
a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
|
||||||
|
b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
|
||||||
|
c. ReturnIfAbrupt(next).
|
||||||
|
---*/
|
||||||
|
var g = {};
|
||||||
|
g[Symbol.iterator] = function() {
|
||||||
|
return {
|
||||||
|
next: function() {
|
||||||
|
throw new Test262Error();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
async function * gen() {
|
||||||
|
for await (const [x] of [g]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gen().next()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,77 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-elem-id-iter-val-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-gen-const.template
|
||||||
|
/*---
|
||||||
|
description: Error forwarding when IteratorValue returns an abrupt completion (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
|
||||||
|
SingleNameBinding : BindingIdentifier Initializeropt
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. If iteratorRecord.[[done]] is false, then
|
||||||
|
a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
|
||||||
|
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).
|
||||||
|
---*/
|
||||||
|
var poisonedValue = Object.defineProperty({}, 'value', {
|
||||||
|
get: function() {
|
||||||
|
throw new Test262Error();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
var g = {};
|
||||||
|
g[Symbol.iterator] = function() {
|
||||||
|
return {
|
||||||
|
next: function() {
|
||||||
|
return poisonedValue;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
async function * gen() {
|
||||||
|
for await (const [x] of [g]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gen().next()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,67 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-elem-obj-val-null.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-gen-const.template
|
||||||
|
/*---
|
||||||
|
description: Nested object destructuring with a null value (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
|
||||||
|
BindingElement : BindingPattern Initializeropt
|
||||||
|
|
||||||
|
1. If iteratorRecord.[[done]] is false, then
|
||||||
|
[...]
|
||||||
|
e. Else
|
||||||
|
i. Let v be IteratorValue(next).
|
||||||
|
[...]
|
||||||
|
4. Return the result of performing BindingInitialization of BindingPattern
|
||||||
|
with v and environment as the arguments.
|
||||||
|
|
||||||
|
13.3.3.5 Runtime Semantics: BindingInitialization
|
||||||
|
|
||||||
|
BindingPattern : ObjectBindingPattern
|
||||||
|
|
||||||
|
1. Let valid be RequireObjectCoercible(value).
|
||||||
|
2. ReturnIfAbrupt(valid).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function * gen() {
|
||||||
|
for await (const [{ x }] of [[null]]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gen().next()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,67 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-elem-obj-val-undef.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-gen-const.template
|
||||||
|
/*---
|
||||||
|
description: Nested object destructuring with a value of `undefined` (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
|
||||||
|
BindingElement : BindingPattern Initializeropt
|
||||||
|
|
||||||
|
1. If iteratorRecord.[[done]] is false, then
|
||||||
|
[...]
|
||||||
|
e. Else
|
||||||
|
i. Let v be IteratorValue(next).
|
||||||
|
[...]
|
||||||
|
4. Return the result of performing BindingInitialization of BindingPattern
|
||||||
|
with v and environment as the arguments.
|
||||||
|
|
||||||
|
13.3.3.5 Runtime Semantics: BindingInitialization
|
||||||
|
|
||||||
|
BindingPattern : ObjectBindingPattern
|
||||||
|
|
||||||
|
1. Let valid be RequireObjectCoercible(value).
|
||||||
|
2. ReturnIfAbrupt(valid).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function * gen() {
|
||||||
|
for await (const [{ x }] of [[]]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gen().next()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,74 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-elision-step-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-gen-const.template
|
||||||
|
/*---
|
||||||
|
description: Elision advances iterator and forwards abrupt completions (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [generator, destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
|
||||||
|
ArrayBindingPattern : [ Elision ]
|
||||||
|
|
||||||
|
1. Return the result of performing
|
||||||
|
IteratorDestructuringAssignmentEvaluation of Elision with iteratorRecord
|
||||||
|
as the argument.
|
||||||
|
|
||||||
|
12.14.5.3 Runtime Semantics: IteratorDestructuringAssignmentEvaluation
|
||||||
|
|
||||||
|
Elision : ,
|
||||||
|
|
||||||
|
1. If iteratorRecord.[[done]] is false, then
|
||||||
|
a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
|
||||||
|
b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
|
||||||
|
c. ReturnIfAbrupt(next).
|
||||||
|
|
||||||
|
---*/
|
||||||
|
var following = 0;
|
||||||
|
var iter =function* () {
|
||||||
|
throw new Test262Error();
|
||||||
|
following += 1;
|
||||||
|
}();
|
||||||
|
|
||||||
|
async function * gen() {
|
||||||
|
for await (const [,] of [iter]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gen().next()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
||||||
|
|
||||||
|
iter.next();
|
||||||
|
assert.sameValue(following, 0, 'Iterator was properly closed.');
|
@ -0,0 +1,60 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-rest-id-elision-next-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-gen-const.template
|
||||||
|
/*---
|
||||||
|
description: Rest element following elision elements (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [generators, destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
ArrayBindingPattern : [ Elisionopt BindingRestElement ]
|
||||||
|
1. If Elision is present, then
|
||||||
|
a. Let status be the result of performing
|
||||||
|
IteratorDestructuringAssignmentEvaluation of Elision with
|
||||||
|
iteratorRecord as the argument.
|
||||||
|
b. ReturnIfAbrupt(status).
|
||||||
|
2. Return the result of performing IteratorBindingInitialization for
|
||||||
|
BindingRestElement with iteratorRecord and environment as arguments.
|
||||||
|
|
||||||
|
---*/
|
||||||
|
var iter = (function*() { throw new Test262Error(); })();
|
||||||
|
|
||||||
|
async function * gen() {
|
||||||
|
for await (const [, ...x] of [iter]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gen().next()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,71 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-rest-id-iter-step-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-gen-const.template
|
||||||
|
/*---
|
||||||
|
description: Error forwarding when IteratorStep returns an abrupt completion (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [generators, destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
BindingRestElement : ... BindingIdentifier
|
||||||
|
1. Let lhs be ResolveBinding(StringValue of BindingIdentifier,
|
||||||
|
environment).
|
||||||
|
2. ReturnIfAbrupt(lhs). 3. Let A be ArrayCreate(0). 4. Let n=0. 5. Repeat,
|
||||||
|
a. If iteratorRecord.[[done]] is false,
|
||||||
|
i. Let next be IteratorStep(iteratorRecord.[[iterator]]).
|
||||||
|
ii. If next is an abrupt completion, set iteratorRecord.[[done]] to
|
||||||
|
true.
|
||||||
|
iii. ReturnIfAbrupt(next).
|
||||||
|
|
||||||
|
---*/
|
||||||
|
var first = 0;
|
||||||
|
var second = 0;
|
||||||
|
var iter = function*() {
|
||||||
|
first += 1;
|
||||||
|
throw new Test262Error();
|
||||||
|
second += 1;
|
||||||
|
}();
|
||||||
|
|
||||||
|
async function * gen() {
|
||||||
|
for await (const [...x] of [iter]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gen().next()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
||||||
|
|
||||||
|
iter.next();
|
||||||
|
assert.sameValue(first, 1);
|
||||||
|
assert.sameValue(second, 0, 'Iterator is closed following abrupt completion.');
|
@ -0,0 +1,73 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/ary-ptrn-rest-id-iter-val-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-gen-const.template
|
||||||
|
/*---
|
||||||
|
description: Error forwarding when IteratorValue returns an abrupt completion (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [Symbol.iterator, destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.6 Runtime Semantics: IteratorBindingInitialization
|
||||||
|
BindingRestElement : ... BindingIdentifier
|
||||||
|
1. Let lhs be ResolveBinding(StringValue of BindingIdentifier,
|
||||||
|
environment).
|
||||||
|
2. ReturnIfAbrupt(lhs). 3. Let A be ArrayCreate(0). 4. Let n=0. 5. Repeat,
|
||||||
|
[...]
|
||||||
|
c. Let nextValue be IteratorValue(next).
|
||||||
|
d. If nextValue is an abrupt completion, set iteratorRecord.[[done]] to
|
||||||
|
true.
|
||||||
|
e. ReturnIfAbrupt(nextValue).
|
||||||
|
|
||||||
|
---*/
|
||||||
|
var poisonedValue = Object.defineProperty({}, 'value', {
|
||||||
|
get: function() {
|
||||||
|
throw new Test262Error();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
var iter = {};
|
||||||
|
iter[Symbol.iterator] = function() {
|
||||||
|
return {
|
||||||
|
next: function() {
|
||||||
|
return poisonedValue;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
async function * gen() {
|
||||||
|
for await (const [...x] of [iter]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gen().next()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,54 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-init-null.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-gen-const.template
|
||||||
|
/*---
|
||||||
|
description: Value specifed for object binding pattern must be object coercible (null) (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
Runtime Semantics: BindingInitialization
|
||||||
|
|
||||||
|
ObjectBindingPattern : { }
|
||||||
|
|
||||||
|
1. Return NormalCompletion(empty).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function * gen() {
|
||||||
|
for await (const {} of [null]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gen().next()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,54 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-init-undefined.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-gen-const.template
|
||||||
|
/*---
|
||||||
|
description: Value specifed for object binding pattern must be object coercible (undefined) (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
Runtime Semantics: BindingInitialization
|
||||||
|
|
||||||
|
ObjectBindingPattern : { }
|
||||||
|
|
||||||
|
1. Return NormalCompletion(empty).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function * gen() {
|
||||||
|
for await (const {} of [undefined]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gen().next()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,61 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-ptrn-id-get-value-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-gen-const.template
|
||||||
|
/*---
|
||||||
|
description: Error thrown when accessing the corresponding property of the value object (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.7 Runtime Semantics: KeyedBindingInitialization
|
||||||
|
|
||||||
|
SingleNameBinding : BindingIdentifier Initializeropt
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let v be GetV(value, propertyName).
|
||||||
|
5. ReturnIfAbrupt(v).
|
||||||
|
---*/
|
||||||
|
var poisonedProperty = Object.defineProperty({}, 'poisoned', {
|
||||||
|
get: function() {
|
||||||
|
throw new Test262Error();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
async function * gen() {
|
||||||
|
for await (const { poisoned } of [poisonedProperty]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gen().next()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,61 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-ptrn-id-init-throws.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-gen-const.template
|
||||||
|
/*---
|
||||||
|
description: Error thrown when evaluating the initializer (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.7 Runtime Semantics: KeyedBindingInitialization
|
||||||
|
|
||||||
|
SingleNameBinding : BindingIdentifier Initializeropt
|
||||||
|
|
||||||
|
[...]
|
||||||
|
6. If Initializer is present and v is undefined, then
|
||||||
|
a. Let defaultValue be the result of evaluating Initializer.
|
||||||
|
b. Let v be GetValue(defaultValue).
|
||||||
|
c. ReturnIfAbrupt(v).
|
||||||
|
---*/
|
||||||
|
function thrower() {
|
||||||
|
throw new Test262Error();
|
||||||
|
}
|
||||||
|
|
||||||
|
async function * gen() {
|
||||||
|
for await (const { x = thrower() } of [{}]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gen().next()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,65 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-ptrn-id-init-unresolvable.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-gen-const.template
|
||||||
|
/*---
|
||||||
|
description: Destructuring initializer is an unresolvable reference (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.7 Runtime Semantics: KeyedBindingInitialization
|
||||||
|
|
||||||
|
SingleNameBinding : BindingIdentifier Initializeropt
|
||||||
|
|
||||||
|
[...]
|
||||||
|
6. If Initializer is present and v is undefined, then
|
||||||
|
a. Let defaultValue be the result of evaluating Initializer.
|
||||||
|
b. Let v be GetValue(defaultValue).
|
||||||
|
c. ReturnIfAbrupt(v).
|
||||||
|
|
||||||
|
6.2.3.1 GetValue (V)
|
||||||
|
|
||||||
|
1. ReturnIfAbrupt(V).
|
||||||
|
2. If Type(V) is not Reference, return V.
|
||||||
|
3. Let base be GetBase(V).
|
||||||
|
4. If IsUnresolvableReference(V), throw a ReferenceError exception.
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function * gen() {
|
||||||
|
for await (const { x = unresolvableReference } of [{}]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gen().next()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, ReferenceError))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
@ -0,0 +1,62 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-ptrn-list-err.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-gen-const.template
|
||||||
|
/*---
|
||||||
|
description: Binding property list evaluation is interrupted by an abrupt completion (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.5 Runtime Semantics: BindingInitialization
|
||||||
|
|
||||||
|
BindingPropertyList : BindingPropertyList , BindingProperty
|
||||||
|
|
||||||
|
1. Let status be the result of performing BindingInitialization for
|
||||||
|
BindingPropertyList using value and environment as arguments.
|
||||||
|
2. ReturnIfAbrupt(status).
|
||||||
|
---*/
|
||||||
|
var initCount = 0;
|
||||||
|
function thrower() {
|
||||||
|
throw new Test262Error();
|
||||||
|
}
|
||||||
|
|
||||||
|
async function * gen() {
|
||||||
|
for await (const { a, b = thrower(), c = ++initCount } of [{}]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gen().next()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, Test262Error))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
||||||
|
|
||||||
|
assert.sameValue(initCount, 0);
|
@ -0,0 +1,56 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/dstr-binding/obj-ptrn-prop-ary-value-null.case
|
||||||
|
// - src/dstr-binding/error/for-await-of-async-gen-const.template
|
||||||
|
/*---
|
||||||
|
description: Object binding pattern with "nested" array binding pattern taking the `null` value (for-await-of statement)
|
||||||
|
esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
|
||||||
|
features: [destructuring-binding, async-iteration]
|
||||||
|
flags: [generated, async]
|
||||||
|
info: |
|
||||||
|
IterationStatement :
|
||||||
|
for await ( ForDeclaration of AssignmentExpression ) Statement
|
||||||
|
|
||||||
|
[...]
|
||||||
|
2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult,
|
||||||
|
lexicalBinding, labelSet, async).
|
||||||
|
|
||||||
|
13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
4. Let destructuring be IsDestructuring of lhs.
|
||||||
|
[...]
|
||||||
|
6. Repeat
|
||||||
|
[...]
|
||||||
|
j. If destructuring is false, then
|
||||||
|
[...]
|
||||||
|
k. Else
|
||||||
|
i. If lhsKind is assignment, then
|
||||||
|
[...]
|
||||||
|
ii. Else if lhsKind is varBinding, then
|
||||||
|
[...]
|
||||||
|
iii. Else,
|
||||||
|
1. Assert: lhsKind is lexicalBinding.
|
||||||
|
2. Assert: lhs is a ForDeclaration.
|
||||||
|
3. Let status be the result of performing BindingInitialization
|
||||||
|
for lhs passing nextValue and iterationEnv as arguments.
|
||||||
|
[...]
|
||||||
|
|
||||||
|
13.3.3.7 Runtime Semantics: KeyedBindingInitialization
|
||||||
|
|
||||||
|
[...]
|
||||||
|
3. If Initializer is present and v is undefined, then
|
||||||
|
[...]
|
||||||
|
4. Return the result of performing BindingInitialization for BindingPattern
|
||||||
|
passing v and environment as arguments.
|
||||||
|
---*/
|
||||||
|
|
||||||
|
async function * gen() {
|
||||||
|
for await (const { w: [x, y, z] = [4, 5, 6] } of [{ w: null }]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gen().next()
|
||||||
|
.then(_ => { throw new Test262Error("Expected async function to reject, but resolved."); }, ({ constructor }) => assert.sameValue(constructor, TypeError))
|
||||||
|
.then($DONE, $DONE);
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user