arguments-object-attributes.js |
---
es6id: 25.2
description: >
Attributes of the `arguments` object are valid yield expression operands.
features: [generators]
--- |
1263 |
browser.js |
|
0 |
captured-free-vars.js |
---
es6id: 25.2
description: >
Free variables captured within the GeneratorFunction closure are valid
yield expression operands.
features: [generators]
--- |
1042 |
formal-parameters-after-reassignment-non-strict.js |
---
es6id: 25.2
description: >
Formal parameters are valid yield expression operands.
flags: [noStrict]
features: [generators]
--- |
1293 |
formal-parameters-after-reassignment-strict-strict.js |
---
es6id: 25.2
description: >
Formal parameters are valid yield expression operands.
flags: [onlyStrict]
features: [generators]
--- |
1308 |
formal-parameters.js |
---
es6id: 25.2
description: >
Formal parameters are valid yield expression operands.
features: [generators]
--- |
1210 |
from-catch.js |
---
es6id: 25.2
description: >
The behavior of `yield` expressions should not be affected when they appear
within the `catch` block of `try` statements.
features: [generators]
--- |
767 |
from-try.js |
---
es6id: 25.2
description: >
The behavior of `yield` expressions should not be affected when they appear
within the `try` block of `try` statements.
features: [generators]
--- |
757 |
from-with.js |
---
es6id: 25.2
description: >
The operand to a `yield` expression should honor the semantics of the
`with` statement.
flags: [noStrict]
features: [generators]
--- |
1059 |
in-iteration-stmt.js |
---
esid: sec-generator-function-definitions
es6id: 14.4
description: >
YieldExpression operand may not include the `in` keyword in contexts where it
is disallowed
info: |
Syntax
yield [no LineTerminator here] AssignmentExpression[?In, +Yield]
negative:
phase: parse
type: SyntaxError
features: [generators]
--- |
565 |
in-rltn-expr.js |
---
esid: sec-generator-function-definitions
es6id: 14.4
description: >
YieldExpression contextually recognizes the `in` keyword as part of a
RelationalExpression
info: |
Syntax
yield [no LineTerminator here] AssignmentExpression[?In, +Yield]
features: [generators]
--- |
1459 |
invalid-left-hand-side.js |
---
esid: sec-generator-function-definitions
es6id: 14.4
description: A YieldExpression is not a valid LeftHandSideExpression
info: |
AssignmentExpression[In, Yield] :
ConditionalExpression[?In, ?Yield]
[+Yield]YieldExpression[?In]
ArrowFunction[?In, ?Yield]
LeftHandSideExpression[?Yield] = AssignmentExpression[?In, ?Yield]
LeftHandSideExpression[?Yield] AssignmentOperator AssignmentExpression[?In, ?Yield]
LeftHandSideExpression[Yield] :
NewExpression[?Yield]
CallExpression[?Yield]
features: [generators]
negative:
phase: parse
type: SyntaxError
--- |
816 |
iter-value-specified.js |
---
es6id: 25.2
description: >
When the `next` method of a generator-produced iterable is invoked without
an argument, the corresponding `yield` expression should be evaluated as
`undefined`.
features: [generators]
--- |
998 |
iter-value-unspecified.js |
---
es6id: 25.2
description: >
When the `next` method of a generator-produced iterable is invoked without
an argument, the corresponding `yield` expression should be evaluated as
`undefined`.
features: [generators]
--- |
747 |
rhs-iter.js |
---
esid: sec-generator-function-definitions-runtime-semantics-evaluation
es6id: 14.4.14
description: >
Iteration protocol is not initiated for non-delegating YieldExpression
info: |
YieldExpression:yieldAssignmentExpression
1. Let exprRef be the result of evaluating AssignmentExpression.
2. Let value be ? GetValue(exprRef).
3. Return ? GeneratorYield(CreateIterResultObject(value, false)).
features: [generators, Symbol.iterator]
--- |
1073 |
rhs-omitted.js |
---
description: >
`yield` is a valid expression within generator function bodies.
es6id: 14.4
features: [generators]
--- |
3113 |
rhs-primitive.js |
---
description: >
`yield` is a valid expression within generator function bodies.
es6id: 14.4
features: [generators]
--- |
3053 |
rhs-regexp.js |
---
esid: sec-generator-function-definitions
es6id: 14.4
description: >
YieldExpression accepts a regular expression literal as its right-hand side
info: |
The syntactic context immediately following yield requires use of the
InputElementRegExpOrTemplateTail lexical goal.
features: [generators]
--- |
1470 |
rhs-template-middle.js |
---
esid: sec-generator-function-definitions
es6id: 14.4
description: YieldExpression may be followed by a TemplateMiddle construct
info: |
The syntactic context immediately following yield requires use of the
InputElementRegExpOrTemplateTail lexical goal.
features: [generators]
--- |
1314 |
rhs-unresolvable.js |
---
esid: sec-generator-function-definitions-runtime-semantics-evaluation
es6id: 14.4.14
description: GetValue invoked on Reference value
info: |
YieldExpression : yield AssignmentExpression
1. Let exprRef be the result of evaluating AssignmentExpression.
2. Let value be ? GetValue(exprRef).
features: [generators]
--- |
820 |
rhs-yield.js |
---
es6id: 25.2
description: >
Yield expressions are valid yield expression operands.
features: [generators]
--- |
798 |
shell.js |
|
0 |
star-array.js |
---
es6id: 25.2
description: >
When an array is the operand of a `yield *` expression, the generator
should produce an iterator that visits each element in order.
features: [generators]
--- |
1030 |
star-in-iteration-stmt.js |
---
esid: sec-generator-function-definitions
es6id: 14.4
description: >
YieldExpression operand may not include the `in` keyword in contexts where it
is disallowed
info: |
Syntax
yield [no LineTerminator here] * AssignmentExpression[?In, +Yield]
negative:
phase: parse
type: SyntaxError
features: [generators]
--- |
569 |
star-in-rltn-expr.js |
---
esid: sec-generator-function-definitions
es6id: 14.4
description: >
YieldExpression contextually recognizes the `in` keyword as part of a
RelationalExpression
info: |
Syntax
yield [no LineTerminator here] AssignmentExpression[?In, +Yield]
features: [generators, Symbol.iterator]
--- |
1553 |
star-iterable.js |
---
es6id: 25.2
description: >
When an iterator is the operand of a `yield *` expression, the generator
should produce an iterator that visits each iterated item.
features: [generators, Symbol.iterator]
--- |
1179 |
star-return-is-null.js |
---
esid: sec-generator-function-definitions-runtime-semantics-evaluation
description: >
If iterator's "return" method is `null`,
received completion is forwarded to the runtime.
info: |
YieldExpression : yield * AssignmentExpression
[...]
7. Repeat,
[...]
c. Else,
i. Assert: received.[[Type]] is return.
ii. Let return be ? GetMethod(iterator, "return").
iii. If return is undefined, then
[...]
2. Return Completion(received).
GetMethod ( V, P )
[...]
2. Let func be ? GetV(V, P).
3. If func is either undefined or null, return undefined.
features: [generators, Symbol.iterator]
--- |
1263 |
star-rhs-iter-get-call-err.js |
---
esid: sec-generator-function-definitions-runtime-semantics-evaluation
es6id: 14.4.14
description: Abrupt completion returned when invoking the @@iterator method
info: |
YieldExpression : yield * AssignmentExpression
1. Let exprRef be the result of evaluating AssignmentExpression.
2. Let value be ? GetValue(exprRef).
3. Let iterator be ? GetIterator(value).
7.4.1 GetIterator
1. If method was not passed, then
a. Let method be ? GetMethod(obj, @@iterator).
2. Let iterator be ? Call(method, obj).
features: [generators, Symbol.iterator]
--- |
1229 |
star-rhs-iter-get-call-non-obj.js |
---
esid: sec-generator-function-definitions-runtime-semantics-evaluation
es6id: 14.4.14
description: TypeError thrown when @@iterator method returns a non-object value
info: |
YieldExpression : yield * AssignmentExpression
1. Let exprRef be the result of evaluating AssignmentExpression.
2. Let value be ? GetValue(exprRef).
3. Let iterator be ? GetIterator(value).
7.4.1 GetIterator
1. If method was not passed, then
a. Let method be ? GetMethod(obj, @@iterator).
2. Let iterator be ? Call(method, obj).
3. If Type(iterator) is not Object, throw a TypeError exception.
features: [generators, Symbol.iterator]
--- |
1196 |
star-rhs-iter-get-get-err.js |
---
esid: sec-generator-function-definitions-runtime-semantics-evaluation
es6id: 14.4.14
description: Abrupt completion returned when accessing the @@iterator property
info: |
YieldExpression : yield * AssignmentExpression
1. Let exprRef be the result of evaluating AssignmentExpression.
2. Let value be ? GetValue(exprRef).
3. Let iterator be ? GetIterator(value).
7.4.1 GetIterator
1. If method was not passed, then
a. Let method be ? GetMethod(obj, @@iterator).
features: [generators, Symbol.iterator]
--- |
1231 |
star-rhs-iter-nrml-next-call-err.js |
---
esid: sec-generator-function-definitions-runtime-semantics-evaluation
es6id: 14.4.14
description: Abrupt completion returned when invoking iterator `next` method
info: |
YieldExpression : yield * AssignmentExpression
1. Let exprRef be the result of evaluating AssignmentExpression.
2. Let value be ? GetValue(exprRef).
3. Let iterator be ? GetIterator(value).
4. Let received be NormalCompletion(undefined).
5. Repeat
a. If received.[[Type]] is normal, then
i. Let innerResult be ? IteratorNext(iterator, received.[[Value]]).
7.4.2 IteratorNext
1. If value was not passed, then
[...]
2. Else,
a. Let result be ? Invoke(iterator, "next", « value »).
features: [generators, Symbol.iterator]
--- |
1328 |
star-rhs-iter-nrml-next-call-non-obj.js |
---
esid: sec-generator-function-definitions-runtime-semantics-evaluation
es6id: 14.4.14
description: >
TypeError thrown when iterator `next` method returns a non-object value
info: |
YieldExpression : yield * AssignmentExpression
1. Let exprRef be the result of evaluating AssignmentExpression.
2. Let value be ? GetValue(exprRef).
3. Let iterator be ? GetIterator(value).
4. Let received be NormalCompletion(undefined).
5. Repeat
a. If received.[[Type]] is normal, then
i. Let innerResult be ? IteratorNext(iterator, received.[[Value]]).
7.4.2 IteratorNext
1. If value was not passed, then
[...]
2. Else,
a. Let result be ? Invoke(iterator, "next", « value »).
features: [generators, Symbol.iterator]
--- |
1361 |
star-rhs-iter-nrml-next-get-err.js |
---
esid: sec-generator-function-definitions-runtime-semantics-evaluation
es6id: 14.4.14
description: Abrupt completion returned when accessing iterator `next` method
info: |
YieldExpression : yield * AssignmentExpression
1. Let exprRef be the result of evaluating AssignmentExpression.
2. Let value be ? GetValue(exprRef).
3. Let iterator be ? GetIterator(value).
4. Let received be NormalCompletion(undefined).
5. Repeat
a. If received.[[Type]] is normal, then
i. Let innerResult be ? IteratorNext(iterator, received.[[Value]]).
7.4.2 IteratorNext
1. If value was not passed, then
[...]
2. Else,
a. Let result be ? Invoke(iterator, "next", « value »).
features: [generators, Symbol.iterator]
--- |
1388 |
star-rhs-iter-nrml-next-invoke.js |
---
esid: sec-generator-function-definitions-runtime-semantics-evaluation
es6id: 14.4.14
description: Invocation of iterator `next` method
info: |
YieldExpression : yield * AssignmentExpression
1. Let exprRef be the result of evaluating AssignmentExpression.
2. Let value be ? GetValue(exprRef).
3. Let iterator be ? GetIterator(value).
4. Let received be NormalCompletion(undefined).
5. Repeat
a. If received.[[Type]] is normal, then
i. Let innerResult be ? IteratorNext(iterator, received.[[Value]]).
7.4.2 IteratorNext
1. If value was not passed, then
[...]
2. Else,
a. Let result be ? Invoke(iterator, "next", « value »).
[...]
features: [generators, Symbol.iterator]
--- |
1384 |
star-rhs-iter-nrml-res-done-err.js |
---
esid: sec-generator-function-definitions-runtime-semantics-evaluation
es6id: 14.4.14
description: >
Abrupt completion returned when accessing `done` property of iteration result
info: |
YieldExpression : yield * AssignmentExpression
1. Let exprRef be the result of evaluating AssignmentExpression.
2. Let value be ? GetValue(exprRef).
3. Let iterator be ? GetIterator(value).
4. Let received be NormalCompletion(undefined).
5. Repeat
a. If received.[[Type]] is normal, then
i. Let innerResult be ? IteratorNext(iterator, received.[[Value]]).
ii. Let done be ? IteratorComplete(innerResult).
7.4.3 IteratorComplete
1. Assert: Type(iterResult) is Object.
2. Return ToBoolean(? Get(iterResult, "done")).
features: [generators, Symbol.iterator]
--- |
1406 |
star-rhs-iter-nrml-res-done-no-value.js |
---
esid: sec-generator-function-definitions-runtime-semantics-evaluation
es6id: 14.4.14
description: >
`value` property is not accessed when iteration is incomplete
info: |
YieldExpression : yield * AssignmentExpression
1. Let exprRef be the result of evaluating AssignmentExpression.
2. Let value be ? GetValue(exprRef).
3. Let iterator be ? GetIterator(value).
4. Let received be NormalCompletion(undefined).
5. Repeat
a. If received.[[Type]] is normal, then
i. Let innerResult be ? IteratorNext(iterator, received.[[Value]]).
ii. Let done be ? IteratorComplete(innerResult).
iii. If done is true, then
1. Return ? IteratorValue(innerResult).
features: [generators, Symbol.iterator]
--- |
1796 |
star-rhs-iter-nrml-res-value-err.js |
---
esid: sec-generator-function-definitions-runtime-semantics-evaluation
es6id: 14.4.14
description: >
Abrupt completion returned when accessing `value` property of iteration
result
info: |
YieldExpression : yield * AssignmentExpression
1. Let exprRef be the result of evaluating AssignmentExpression.
2. Let value be ? GetValue(exprRef).
3. Let iterator be ? GetIterator(value).
4. Let received be NormalCompletion(undefined).
5. Repeat
a. If received.[[Type]] is normal, then
i. Let innerResult be ? IteratorNext(iterator, received.[[Value]]).
ii. Let done be ? IteratorComplete(innerResult).
iii. If done is true, then
1. Return ? IteratorValue(innerResult).
7.4.4 IteratorValue
1. Assert: Type(iterResult) is Object.
2. Return ? Get(iterResult, "value").
features: [generators, Symbol.iterator]
--- |
1499 |
star-rhs-iter-nrml-res-value-final.js |
---
esid: sec-generator-function-definitions-runtime-semantics-evaluation
es6id: 14.4.14
description: Value received from invocation of generator's `next` method
info: |
YieldExpression : yield * AssignmentExpression
1. Let exprRef be the result of evaluating AssignmentExpression.
2. Let value be ? GetValue(exprRef).
3. Let iterator be ? GetIterator(value).
4. Let received be NormalCompletion(undefined).
5. Repeat
a. If received.[[Type]] is normal, then
i. Let innerResult be ? IteratorNext(iterator, received.[[Value]]).
ii. Let done be ? IteratorComplete(innerResult).
iii. If done is true, then
1. Return ? IteratorValue(innerResult).
7.4.4 IteratorValue
1. Assert: Type(iterResult) is Object.
2. Return ? Get(iterResult, "value").
features: [generators, Symbol.iterator]
--- |
1734 |
star-rhs-iter-rtrn-no-rtrn.js |
---
esid: sec-generator-function-definitions-runtime-semantics-evaluation
es6id: 14.4.14
description: >
"Return" completion returned when `return` method is not defined
info: |
YieldExpression : yield * AssignmentExpression
1. Let exprRef be the result of evaluating AssignmentExpression.
2. Let value be ? GetValue(exprRef).
3. Let iterator be ? GetIterator(value).
4. Let received be NormalCompletion(undefined).
5. Repeat
a. If received.[[Type]] is normal, then
[...]
b. Else if received.[[Type]] is throw, then
[...]
c. Else,
i. Assert: received.[[Type]] is return.
ii. Let return be ? GetMethod(iterator, "return").
iii. If return is undefined, return Completion(received).
features: [generators, Symbol.iterator]
--- |
1995 |
star-rhs-iter-rtrn-res-done-err.js |
---
esid: sec-generator-function-definitions-runtime-semantics-evaluation
es6id: 14.4.14
description: >
Abrupt completion returned when accessing `done` property of iteration result
info: |
YieldExpression : yield * AssignmentExpression
1. Let exprRef be the result of evaluating AssignmentExpression.
2. Let value be ? GetValue(exprRef).
3. Let iterator be ? GetIterator(value).
4. Let received be NormalCompletion(undefined).
5. Repeat
a. If received.[[Type]] is normal, then
[...]
b. Else if received.[[Type]] is throw, then
[...]
c. Else,
i. Assert: received.[[Type]] is return.
ii. Let return be ? GetMethod(iterator, "return").
iii. If return is undefined, return Completion(received).
iv. Let innerReturnResult be ? Call(return, iterator, «
received.[[Value]] »).
v. If Type(innerReturnResult) is not Object, throw a TypeError
exception.
vi. Let done be ? IteratorComplete(innerReturnResult).
7.4.3 IteratorComplete
1. Assert: Type(iterResult) is Object.
2. Return ToBoolean(? Get(iterResult, "done")).
features: [generators, Symbol.iterator]
--- |
1854 |
star-rhs-iter-rtrn-res-done-no-value.js |
---
esid: sec-generator-function-definitions-runtime-semantics-evaluation
es6id: 14.4.14
description: >
`value` property is not accessed when iteration is incomplete
info: |
YieldExpression : yield * AssignmentExpression
1. Let exprRef be the result of evaluating AssignmentExpression.
2. Let value be ? GetValue(exprRef).
3. Let iterator be ? GetIterator(value).
4. Let received be NormalCompletion(undefined).
5. Repeat
a. If received.[[Type]] is normal, then
[...]
b. Else if received.[[Type]] is throw, then
[...]
c. Else,
i. Assert: received.[[Type]] is return.
ii. Let return be ? GetMethod(iterator, "return").
iii. If return is undefined, return Completion(received).
iv. Let innerReturnResult be ? Call(return, iterator, «
received.[[Value]] »).
v. If Type(innerReturnResult) is not Object, throw a TypeError
exception.
vi. Let done be ? IteratorComplete(innerReturnResult).
vii. If done is true, then
1. Let value be ? IteratorValue(innerReturnResult).
2. Return Completion{[[Type]]: return, [[Value]]: value,
[[Target]]: empty}.
viii. Let received be GeneratorYield(innerReturnResult).
7.4.3 IteratorComplete
1. Assert: Type(iterResult) is Object.
2. Return ToBoolean(? Get(iterResult, "done")).
features: [generators, Symbol.iterator]
--- |
2861 |
star-rhs-iter-rtrn-res-value-err.js |
---
esid: sec-generator-function-definitions-runtime-semantics-evaluation
es6id: 14.4.14
description: >
Abrupt completion returned when accessing `value` property of iteration
result
info: |
YieldExpression : yield * AssignmentExpression
1. Let exprRef be the result of evaluating AssignmentExpression.
2. Let value be ? GetValue(exprRef).
3. Let iterator be ? GetIterator(value).
4. Let received be NormalCompletion(undefined).
5. Repeat
a. If received.[[Type]] is normal, then
[...]
b. Else if received.[[Type]] is throw, then
[...]
c. Else,
i. Assert: received.[[Type]] is return.
ii. Let return be ? GetMethod(iterator, "return").
iii. If return is undefined, return Completion(received).
iv. Let innerReturnResult be ? Call(return, iterator, «
received.[[Value]] »).
v. If Type(innerReturnResult) is not Object, throw a TypeError
exception.
vi. Let done be ? IteratorComplete(innerReturnResult).
vii. If done is true, then
1. Let value be ? IteratorValue(innerReturnResult).
7.4.4 IteratorValue
1. Assert: Type(iterResult) is Object.
2. Return ? Get(iterResult, "value").
features: [generators, Symbol.iterator]
--- |
1959 |
star-rhs-iter-rtrn-res-value-final.js |
---
esid: sec-generator-function-definitions-runtime-semantics-evaluation
es6id: 14.4.14
description: Value received from invocation of generator's `return` method
info: |
YieldExpression : yield * AssignmentExpression
1. Let exprRef be the result of evaluating AssignmentExpression.
2. Let value be ? GetValue(exprRef).
3. Let iterator be ? GetIterator(value).
4. Let received be NormalCompletion(undefined).
5. Repeat
a. If received.[[Type]] is normal, then
[...]
b. Else if received.[[Type]] is throw, then
[...]
c. Else,
i. Assert: received.[[Type]] is return.
ii. Let return be ? GetMethod(iterator, "return").
iii. If return is undefined, return Completion(received).
iv. Let innerReturnResult be ? Call(return, iterator, «
received.[[Value]] »).
v. If Type(innerReturnResult) is not Object, throw a TypeError
exception.
vi. Let done be ? IteratorComplete(innerReturnResult).
vii. If done is true, then
1. Let value be ? IteratorValue(innerReturnResult).
2. Return Completion{[[Type]]: return, [[Value]]: value,
[[Target]]: empty}.
viii. Let received be GeneratorYield(innerReturnResult).
features: [generators, Symbol.iterator]
--- |
2310 |
star-rhs-iter-rtrn-rtrn-call-err.js |
---
esid: sec-generator-function-definitions-runtime-semantics-evaluation
es6id: 14.4.14
description: Abrupt completion returned when invoking iterator `return` method
info: |
YieldExpression : yield * AssignmentExpression
1. Let exprRef be the result of evaluating AssignmentExpression.
2. Let value be ? GetValue(exprRef).
3. Let iterator be ? GetIterator(value).
4. Let received be NormalCompletion(undefined).
5. Repeat
a. If received.[[Type]] is normal, then
[...]
b. Else if received.[[Type]] is throw, then
[...]
c. Else,
i. Assert: received.[[Type]] is return.
ii. Let return be ? GetMethod(iterator, "return").
iii. If return is undefined, return Completion(received).
iv. Let innerReturnResult be ? Call(return, iterator, «
received.[[Value]] »).
features: [generators, Symbol.iterator]
--- |
1553 |
star-rhs-iter-rtrn-rtrn-call-non-obj.js |
---
esid: sec-generator-function-definitions-runtime-semantics-evaluation
es6id: 14.4.14
description: >
TypeError thrown when iterator `return` method returns a non-object value
info: |
YieldExpression : yield * AssignmentExpression
1. Let exprRef be the result of evaluating AssignmentExpression.
2. Let value be ? GetValue(exprRef).
3. Let iterator be ? GetIterator(value).
4. Let received be NormalCompletion(undefined).
5. Repeat
a. If received.[[Type]] is normal, then
[...]
b. Else if received.[[Type]] is throw, then
[...]
c. Else,
i. Assert: received.[[Type]] is return.
ii. Let return be ? GetMethod(iterator, "return").
iii. If return is undefined, return Completion(received).
iv. Let innerReturnResult be ? Call(return, iterator, «
received.[[Value]] »).
v. If Type(innerReturnResult) is not Object, throw a TypeError
exception.
features: [generators, Symbol.iterator]
--- |
1680 |
star-rhs-iter-rtrn-rtrn-get-err.js |
---
esid: sec-generator-function-definitions-runtime-semantics-evaluation
es6id: 14.4.14
description: Abrupt completion returned when accessing iterator `return` method
info: |
YieldExpression : yield * AssignmentExpression
1. Let exprRef be the result of evaluating AssignmentExpression.
2. Let value be ? GetValue(exprRef).
3. Let iterator be ? GetIterator(value).
4. Let received be NormalCompletion(undefined).
5. Repeat
a. If received.[[Type]] is normal, then
[...]
b. Else if received.[[Type]] is throw, then
[...]
c. Else,
i. Assert: received.[[Type]] is return.
ii. Let return be ? GetMethod(iterator, "return").
features: [generators, Symbol.iterator]
--- |
1734 |
star-rhs-iter-rtrn-rtrn-invoke.js |
---
esid: sec-generator-function-definitions-runtime-semantics-evaluation
es6id: 14.4.14
description: Invocation of iterator `return` method
info: |
YieldExpression : yield * AssignmentExpression
1. Let exprRef be the result of evaluating AssignmentExpression.
2. Let value be ? GetValue(exprRef).
3. Let iterator be ? GetIterator(value).
4. Let received be NormalCompletion(undefined).
5. Repeat
a. If received.[[Type]] is normal, then
[...]
b. Else if received.[[Type]] is throw, then
[...]
c. Else,
i. Assert: received.[[Type]] is return.
ii. Let return be ? GetMethod(iterator, "return").
iii. If return is undefined, return Completion(received).
iv. Let innerReturnResult be ? Call(return, iterator, «
received.[[Value]] »).
[...]
features: [generators, Symbol.iterator]
--- |
1605 |
star-rhs-iter-thrw-res-done-err.js |
---
esid: sec-generator-function-definitions-runtime-semantics-evaluation
es6id: 14.4.14
description: >
Abrupt completion returned when accessing `done` property of iteration result
info: |
YieldExpression : yield * AssignmentExpression
1. Let exprRef be the result of evaluating AssignmentExpression.
2. Let value be ? GetValue(exprRef).
3. Let iterator be ? GetIterator(value).
4. Let received be NormalCompletion(undefined).
5. Repeat
a. If received.[[Type]] is normal, then
[...]
b. Else if received.[[Type]] is throw, then
i. Let throw be ? GetMethod(iterator, "throw").
ii. If throw is not undefined, then
1. Let innerResult be ? Call(throw, iterator, « received.[[Value]]
»).
2. NOTE: Exceptions from the inner iterator throw method are
propagated. Normal completions from an inner throw method are
processed similarly to an inner next.
3. If Type(innerResult) is not Object, throw a TypeError exception.
4. Let done be ? IteratorComplete(innerResult).
7.4.3 IteratorComplete
1. Assert: Type(iterResult) is Object.
2. Return ToBoolean(? Get(iterResult, "done")).
features: [generators, Symbol.iterator]
--- |
1937 |
star-rhs-iter-thrw-res-done-no-value.js |
---
esid: sec-generator-function-definitions-runtime-semantics-evaluation
description: >
`value` property is not accessed when iteration is complete
info: |
YieldExpression : yield * AssignmentExpression
1. Let exprRef be the result of evaluating AssignmentExpression.
2. Let value be ? GetValue(exprRef).
3. Let iterator be ? GetIterator(value).
4. Let received be NormalCompletion(undefined).
5. Repeat
a. If received.[[Type]] is normal, then
[...]
b. Else if received.[[Type]] is throw, then
i. Let throw be ? GetMethod(iterator, "throw").
ii. If throw is not undefined, then
1. Let innerResult be ? Call(throw, iterator, « received.[[Value]]
»).
2. NOTE: Exceptions from the inner iterator throw method are
propagated. Normal completions from an inner throw method are
processed similarly to an inner next.
3. If Type(innerResult) is not Object, throw a TypeError exception.
4. Let done be ? IteratorComplete(innerResult).
5. If done is true, then
a. Return ? IteratorValue(innerResult).
7.4.3 IteratorComplete
1. Assert: Type(iterResult) is Object.
2. Return ToBoolean(? Get(iterResult, "done")).
features: [generators, Symbol.iterator]
--- |
2437 |
star-rhs-iter-thrw-res-value-err.js |
---
esid: sec-generator-function-definitions-runtime-semantics-evaluation
es6id: 14.4.14
description: >
Abrupt completion returned when accessing `value` property of iteration
result
info: |
YieldExpression : yield * AssignmentExpression
1. Let exprRef be the result of evaluating AssignmentExpression.
2. Let value be ? GetValue(exprRef).
3. Let iterator be ? GetIterator(value).
4. Let received be NormalCompletion(undefined).
5. Repeat
a. If received.[[Type]] is normal, then
[...]
b. Else if received.[[Type]] is throw, then
i. Let throw be ? GetMethod(iterator, "throw").
ii. If throw is not undefined, then
1. Let innerResult be ? Call(throw, iterator, « received.[[Value]]
»).
2. NOTE: Exceptions from the inner iterator throw method are
propagated. Normal completions from an inner throw method are
processed similarly to an inner next.
3. If Type(innerResult) is not Object, throw a TypeError exception.
4. Let done be ? IteratorComplete(innerResult).
5. If done is true, then
a. Return ? IteratorValue(innerResult).
7.4.4 IteratorValue
1. Assert: Type(iterResult) is Object.
2. Return ? Get(iterResult, "value").
features: [generators, Symbol.iterator]
--- |
2034 |
star-rhs-iter-thrw-res-value-final.js |
---
esid: sec-generator-function-definitions-runtime-semantics-evaluation
description: Value received from invocation of generator's `throw` method
info: |
YieldExpression : yield * AssignmentExpression
1. Let exprRef be the result of evaluating AssignmentExpression.
2. Let value be ? GetValue(exprRef).
3. Let iterator be ? GetIterator(value).
4. Let received be NormalCompletion(undefined).
5. Repeat
a. If received.[[Type]] is normal, then
[...]
b. Else if received.[[Type]] is throw, then
i. Let throw be ? GetMethod(iterator, "throw").
ii. If throw is not undefined, then
1. Let innerResult be ? Call(throw, iterator, « received.[[Value]]
»).
2. NOTE: Exceptions from the inner iterator throw method are
propagated. Normal completions from an inner throw method are
processed similarly to an inner next.
3. If Type(innerResult) is not Object, throw a TypeError exception.
4. Let done be ? IteratorComplete(innerResult).
5. If done is true, then
[...]
6. Let received be GeneratorYield(innerResult).
features: [generators, Symbol.iterator]
--- |
1840 |
star-rhs-iter-thrw-thrw-call-err.js |
---
esid: sec-generator-function-definitions-runtime-semantics-evaluation
es6id: 14.4.14
description: Abrupt completion returned when invoking iterator `throw` method
info: |
YieldExpression : yield * AssignmentExpression
1. Let exprRef be the result of evaluating AssignmentExpression.
2. Let value be ? GetValue(exprRef).
3. Let iterator be ? GetIterator(value).
4. Let received be NormalCompletion(undefined).
5. Repeat
a. If received.[[Type]] is normal, then
[...]
b. Else if received.[[Type]] is throw, then
i. Let throw be ? GetMethod(iterator, "throw").
ii. If throw is not undefined, then
1. Let innerResult be ? Call(throw, iterator, « received.[[Value]]
»).
features: [generators, Symbol.iterator]
--- |
1448 |
star-rhs-iter-thrw-thrw-call-non-obj.js |
---
esid: sec-generator-function-definitions-runtime-semantics-evaluation
es6id: 14.4.14
description: >
TypeError thrown when iterator `throw` method returns a non-object value
info: |
YieldExpression : yield * AssignmentExpression
1. Let exprRef be the result of evaluating AssignmentExpression.
2. Let value be ? GetValue(exprRef).
3. Let iterator be ? GetIterator(value).
4. Let received be NormalCompletion(undefined).
5. Repeat
a. If received.[[Type]] is normal, then
[...]
b. Else if received.[[Type]] is throw, then
i. Let throw be ? GetMethod(iterator, "throw").
ii. If throw is not undefined, then
1. Let innerResult be ? Call(throw, iterator, « received.[[Value]]
»).
2. NOTE: Exceptions from the inner iterator throw method are
propagated. Normal completions from an inner throw method are
processed similarly to an inner next.
3. If Type(innerResult) is not Object, throw a TypeError exception.
features: [generators, Symbol.iterator]
--- |
1765 |
star-rhs-iter-thrw-thrw-get-err.js |
---
esid: sec-generator-function-definitions-runtime-semantics-evaluation
es6id: 14.4.14
description: Abrupt completion returned when accessing iterator `throw` method
info: |
YieldExpression : yield * AssignmentExpression
1. Let exprRef be the result of evaluating AssignmentExpression.
2. Let value be ? GetValue(exprRef).
3. Let iterator be ? GetIterator(value).
4. Let received be NormalCompletion(undefined).
5. Repeat
a. If received.[[Type]] is normal, then
[...]
b. Else if received.[[Type]] is throw, then
i. Let throw be ? GetMethod(iterator, "throw").
features: [generators, Symbol.iterator]
--- |
1454 |
star-rhs-iter-thrw-thrw-invoke.js |
---
esid: sec-generator-function-definitions-runtime-semantics-evaluation
es6id: 14.4.14
description: Invocation of iterator `throw` method
info: |
YieldExpression : yield * AssignmentExpression
1. Let exprRef be the result of evaluating AssignmentExpression.
2. Let value be ? GetValue(exprRef).
3. Let iterator be ? GetIterator(value).
4. Let received be NormalCompletion(undefined).
5. Repeat
a. If received.[[Type]] is normal, then
[...]
b. Else if received.[[Type]] is throw, then
i. Let throw be ? GetMethod(iterator, "throw").
ii. If throw is not undefined, then
1. Let innerResult be ? Call(throw, iterator, « received.[[Value]]
»).
[...]
features: [generators, Symbol.iterator]
--- |
1504 |
star-rhs-iter-thrw-violation-no-rtrn.js |
---
esid: sec-generator-function-definitions-runtime-semantics-evaluation
es6id: 14.4.14
description: >
Abrupt completion returned after protocol violation (and a `return` method
is not defined)
info: |
YieldExpression : yield * AssignmentExpression
1. Let exprRef be the result of evaluating AssignmentExpression.
2. Let value be ? GetValue(exprRef).
3. Let iterator be ? GetIterator(value).
4. Let received be NormalCompletion(undefined).
5. Repeat
a. If received.[[Type]] is normal, then
[...]
b. Else if received.[[Type]] is throw, then
i. Let throw be ? GetMethod(iterator, "throw").
ii. If throw is not undefined, then
[...]
iii. Else,
1. NOTE: If iterator does not have a throw method, this throw is
going to terminate the yield* loop. But first we need to give
iterator a chance to clean up.
2. Perform ? IteratorClose(iterator, Completion{[[Type]]: normal,
[[Value]]: empty, [[Target]]: empty}).
3. NOTE: The next step throws a TypeError to indicate that there
was a yield* protocol violation: iterator does not have a throw
method.
4. Throw a TypeError exception.
7.4.6 IteratorClose
1. Assert: Type(iterator) is Object.
2. Assert: completion is a Completion Record.
3. Let return be ? GetMethod(iterator, "return").
4. If return is undefined, return Completion(completion).
features: [generators, Symbol.iterator]
--- |
2451 |
star-rhs-iter-thrw-violation-rtrn-call-err.js |
---
esid: sec-generator-function-definitions-runtime-semantics-evaluation
es6id: 14.4.14
description: >
Abrupt completion returned when invoking iterator `return` method following
protocol violation
info: |
YieldExpression : yield * AssignmentExpression
1. Let exprRef be the result of evaluating AssignmentExpression.
2. Let value be ? GetValue(exprRef).
3. Let iterator be ? GetIterator(value).
4. Let received be NormalCompletion(undefined).
5. Repeat
a. If received.[[Type]] is normal, then
[...]
b. Else if received.[[Type]] is throw, then
i. Let throw be ? GetMethod(iterator, "throw").
ii. If throw is not undefined, then
[...]
iii. Else,
1. NOTE: If iterator does not have a throw method, this throw is
going to terminate the yield* loop. But first we need to give
iterator a chance to clean up.
2. Perform ? IteratorClose(iterator, Completion{[[Type]]: normal,
[[Value]]: empty, [[Target]]: empty}).
7.4.6 IteratorClose
1. Assert: Type(iterator) is Object.
2. Assert: completion is a Completion Record.
3. Let return be ? GetMethod(iterator, "return").
4. If return is undefined, return Completion(completion).
5. Let innerResult be Call(return, iterator, « »).
6. If completion.[[Type]] is throw, return Completion(completion).
7. If innerResult.[[Type]] is throw, return Completion(innerResult).
8. If Type(innerResult.[[Value]]) is not Object, throw a TypeError exception.
features: [generators, Symbol.iterator]
--- |
2375 |
star-rhs-iter-thrw-violation-rtrn-call-non-obj.js |
---
esid: sec-generator-function-definitions-runtime-semantics-evaluation
es6id: 14.4.14
description: >
Non-object value returned by iterator `return` method following protocol
violation
info: |
YieldExpression : yield * AssignmentExpression
1. Let exprRef be the result of evaluating AssignmentExpression.
2. Let value be ? GetValue(exprRef).
3. Let iterator be ? GetIterator(value).
4. Let received be NormalCompletion(undefined).
5. Repeat
a. If received.[[Type]] is normal, then
[...]
b. Else if received.[[Type]] is throw, then
i. Let throw be ? GetMethod(iterator, "throw").
ii. If throw is not undefined, then
[...]
iii. Else,
1. NOTE: If iterator does not have a throw method, this throw is
going to terminate the yield* loop. But first we need to give
iterator a chance to clean up.
2. Perform ? IteratorClose(iterator, Completion{[[Type]]: normal,
[[Value]]: empty, [[Target]]: empty}).
7.4.6 IteratorClose
1. Assert: Type(iterator) is Object.
2. Assert: completion is a Completion Record.
3. Let return be ? GetMethod(iterator, "return").
4. If return is undefined, return Completion(completion).
5. Let innerResult be Call(return, iterator, « »).
6. If completion.[[Type]] is throw, return Completion(completion).
7. If innerResult.[[Type]] is throw, return Completion(innerResult).
8. If Type(innerResult.[[Value]]) is not Object, throw a TypeError exception.
features: [generators, Symbol.iterator]
--- |
2170 |
star-rhs-iter-thrw-violation-rtrn-get-err.js |
---
esid: sec-generator-function-definitions-runtime-semantics-evaluation
es6id: 14.4.14
description: >
Abrupt completion returned when accessing iterator `return` property after
protocol violation
info: |
YieldExpression : yield * AssignmentExpression
1. Let exprRef be the result of evaluating AssignmentExpression.
2. Let value be ? GetValue(exprRef).
3. Let iterator be ? GetIterator(value).
4. Let received be NormalCompletion(undefined).
5. Repeat
a. If received.[[Type]] is normal, then
[...]
b. Else if received.[[Type]] is throw, then
i. Let throw be ? GetMethod(iterator, "throw").
ii. If throw is not undefined, then
[...]
iii. Else,
1. NOTE: If iterator does not have a throw method, this throw is
going to terminate the yield* loop. But first we need to give
iterator a chance to clean up.
2. Perform ? IteratorClose(iterator, Completion{[[Type]]: normal,
[[Value]]: empty, [[Target]]: empty}).
7.4.6 IteratorClose
1. Assert: Type(iterator) is Object.
2. Assert: completion is a Completion Record.
3. Let return be ? GetMethod(iterator, "return").
features: [generators, Symbol.iterator]
--- |
2045 |
star-rhs-iter-thrw-violation-rtrn-invoke.js |
---
esid: sec-generator-function-definitions-runtime-semantics-evaluation
es6id: 14.4.14
description: >
Abrupt completion returned after protocol violation (and a `return` method
is defined)
info: |
YieldExpression : yield * AssignmentExpression
1. Let exprRef be the result of evaluating AssignmentExpression.
2. Let value be ? GetValue(exprRef).
3. Let iterator be ? GetIterator(value).
4. Let received be NormalCompletion(undefined).
5. Repeat
a. If received.[[Type]] is normal, then
[...]
b. Else if received.[[Type]] is throw, then
i. Let throw be ? GetMethod(iterator, "throw").
ii. If throw is not undefined, then
[...]
iii. Else,
1. NOTE: If iterator does not have a throw method, this throw is
going to terminate the yield* loop. But first we need to give
iterator a chance to clean up.
2. Perform ? IteratorClose(iterator, Completion{[[Type]]: normal,
[[Value]]: empty, [[Target]]: empty}).
3. NOTE: The next step throws a TypeError to indicate that there
was a yield* protocol violation: iterator does not have a throw
method.
4. Throw a TypeError exception.
7.4.6 IteratorClose
1. Assert: Type(iterator) is Object.
2. Assert: completion is a Completion Record.
3. Let return be ? GetMethod(iterator, "return").
4. If return is undefined, return Completion(completion).
5. Let innerResult be Call(return, iterator, « »).
6. If completion.[[Type]] is throw, return Completion(completion).
7. If innerResult.[[Type]] is throw, return Completion(innerResult).
8. If Type(innerResult.[[Value]]) is not Object, throw a TypeError exception.
9. Return Completion(completion).
features: [generators, Symbol.iterator]
--- |
2924 |
star-rhs-unresolvable.js |
---
esid: sec-generator-function-definitions-runtime-semantics-evaluation
es6id: 14.4.14
description: GetValue invoked on Reference value
info: |
YieldExpression : yield * AssignmentExpression
1. Let exprRef be the result of evaluating AssignmentExpression.
2. Let value be ? GetValue(exprRef).
features: [generators]
--- |
824 |
star-string.js |
---
es6id: 25.2
description: >
When a string is the operand of a `yield *` expression, the generator
should produce an iterator that visits each character in order.
features: [generators]
--- |
1034 |
star-throw-is-null.js |
---
esid: sec-generator-function-definitions-runtime-semantics-evaluation
description: >
If iterator's "throw" method is `null`,
IteratorClose is called before rising TypeError.
info: |
YieldExpression : yield * AssignmentExpression
[...]
7. Repeat,
[...]
b. Else if received.[[Type]] is throw, then
i. Let throw be ? GetMethod(iterator, "throw").
ii. If throw is not undefined, then
[...]
iii. Else,
[...]
4. Else, perform ? IteratorClose(iteratorRecord, closeCompletion).
[...]
6. Throw a TypeError exception.
GetMethod ( V, P )
[...]
2. Let func be ? GetV(V, P).
3. If func is either undefined or null, return undefined.
IteratorClose ( iteratorRecord, completion )
[...]
4. Let innerResult be GetMethod(iterator, "return").
5. If innerResult.[[Type]] is normal, then
a. Let return be innerResult.[[Value]].
b. If return is undefined, return Completion(completion).
features: [generators, Symbol.iterator]
--- |
1682 |
then-return.js |
---
es6id: 25.2
description: >
When a generator body contains a yield statement followed by a return
statement, it should produce an iterator that visits the yieled value and
completes on the returned value.
features: [generators]
--- |
774 |
within-for.js |
---
es6id: 25.2
description: >
`yield` expressions should suspend `for` loop iteration.
features: [generators]
--- |
988 |