mirror of https://github.com/tc39/test262.git
67 lines
1.6 KiB
Plaintext
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);
|