mirror of
https://github.com/tc39/test262.git
synced 2025-04-08 19:35:28 +02:00
for-await-of: dstr-binding, error, async func & async gen templates
Signed-off-by: Rick Waldron <waldron.rick@gmail.com>
This commit is contained in:
parent
c1e2572143
commit
c3c8d6f099
@ -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