test262/src/async-generators/yield-star-next-then-non-ca...

67 lines
1.6 KiB
Plaintext

// Copyright 2017 Tooru Fujisawa. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
template: default
desc: FulfillPromise if next().then is not-callable (number)
info: |
YieldExpression: yield * AssignmentExpression
...
6. Repeat
a. If received.[[Type]] is normal, then
ii. Let innerResult be ? Invoke(iterator, "next",
« received.[[Value]] »).
iii. If generatorKind is async, then set innerResult to
? Await(innerResult).
iv. If Type(innerResult) is not Object, throw a TypeError exception.
...
Await
...
2. Let promiseCapability be ! NewPromiseCapability(%Promise%).
3. Perform ! Call(promiseCapability.[[Resolve]], undefined, « promise »).
...
Promise Resolve Functions
...
7. If Type(resolution) is not Object, then
a. Return FulfillPromise(promise, resolution).
8. Let then be Get(resolution, "then").
...
11. If IsCallable(thenAction) is false, then
a. Return FulfillPromise(promise, resolution).
...
features: [Symbol.asyncIterator]
flags: [async]
---*/
//- setup
var obj = {
get [Symbol.iterator]() {
throw new Test262Error('it should not get Symbol.iterator');
},
[Symbol.asyncIterator]() {
return {
next() {
return {
then: 39,
value: 42,
done: false
}
}
};
}
};
//- body
yield* obj;
throw new Test262Error('completion closes iter');
//- assertions
iter.next().then(({ value, done }) => {
assert.sameValue(value, 42);
assert.sameValue(done, false);
}).then($DONE, $DONE);