Name Description Size
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