diff options
Diffstat (limited to 'js/src/tests/test262/built-ins/AsyncFromSyncIteratorPrototype/return/absent-value-not-passed.js')
-rw-r--r-- | js/src/tests/test262/built-ins/AsyncFromSyncIteratorPrototype/return/absent-value-not-passed.js | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/js/src/tests/test262/built-ins/AsyncFromSyncIteratorPrototype/return/absent-value-not-passed.js b/js/src/tests/test262/built-ins/AsyncFromSyncIteratorPrototype/return/absent-value-not-passed.js new file mode 100644 index 0000000000..21686a8896 --- /dev/null +++ b/js/src/tests/test262/built-ins/AsyncFromSyncIteratorPrototype/return/absent-value-not-passed.js @@ -0,0 +1,43 @@ +// |reftest| async +// Copyright (C) 2020 Alexey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-%asyncfromsynciteratorprototype%.return +description: > + `return` method does not pass absent `value`. +info: | + %AsyncFromSyncIteratorPrototype%.return ( value ) + + [...] + 8. If value is present, then + [...] + 9. Else, + a. Let result be Call(return, syncIterator). + [...] +flags: [async] +features: [async-iteration] +includes: [asyncHelpers.js] +---*/ + +var returnArgumentsLength; +var syncIterator = { + [Symbol.iterator]() { + return this; + }, + next() { + return {done: false}; + }, + return() { + returnArgumentsLength = arguments.length; + return {done: true}; + }, +}; + +asyncTest(async function () { + for await (let _ of syncIterator) { + break; + } + + assert.sameValue(returnArgumentsLength, 0); +}); |