arguments-with-arguments-fn.js |
---
esid: sec-functiondeclarationinstantiation
es6id: 9.2.12
description: >
Arguments object is created even when the body contains a lexically-scoped
binding named "arguments"
info: |
[...]
19. Else if "arguments" is an element of parameterNames, then
a. Let argumentsObjectNeeded be false.
20. Else if hasParameterExpressions is false, then
a. If "arguments" is an element of functionNames or if "arguments" is an
element of lexicalNames, then
i. Let argumentsObjectNeeded be false.
[...]
flags: [noStrict]
features: [generators]
--- |
907 |
arguments-with-arguments-lex.js |
---
esid: sec-functiondeclarationinstantiation
es6id: 9.2.12
description: >
Arguments object is created even when the body contains a function named
"arguments"
info: |
[...]
19. Else if "arguments" is an element of parameterNames, then
a. Let argumentsObjectNeeded be false.
20. Else if hasParameterExpressions is false, then
a. If "arguments" is an element of functionNames or if "arguments" is an
element of lexicalNames, then
i. Let argumentsObjectNeeded be false.
[...]
flags: [noStrict]
features: [generators]
--- |
882 |
array-destructuring-param-strict-body.js |
|
5308 |
browser.js |
|
0 |
cptn-decl.js |
---
esid: sec-statement-semantics-runtime-semantics-evaluation
description: Generator declaration completion value is empty.
info: |
GeneratorDeclaration[Yield, Await, Default]:
function * BindingIdentifier[?Yield, ?Await] ( FormalParameters[+Yield, ~Await] ) { GeneratorBody }
HoistableDeclaration : GeneratorDeclaration
1. Return NormalCompletion(empty).
features: [generators]
--- |
664 |
declaration.js |
---
info: |
Generator can be declared with GeneratorDeclaration syntax
es6id: 14.4
author: Sam Mikes
description: can declare generator functions
features: [generators]
--- |
427 |
default-proto.js |
---
esid: sec-generator-function-definitions-runtime-semantics-evaluatebody
es6id: 14.4.11
description: Intrinsic default prototype of GeneratorFunctions
info: |
1. Let G be ? OrdinaryCreateFromConstructor(functionObject,
"%GeneratorPrototype%", « [[GeneratorState]], [[GeneratorContext]] »).
[...]
9.1.13 OrdinaryCreateFromConstructor
[...]
2. Let proto be ? GetPrototypeFromConstructor(constructor,
intrinsicDefaultProto).
3. Return ObjectCreate(proto, internalSlotsList).
9.1.14 GetPrototypeFromConstructor
[...]
3. Let proto be ? Get(constructor, "prototype").
4. If Type(proto) is not Object, then
a. Let realm be ? GetFunctionRealm(constructor).
b. Let proto be realm's intrinsic object named intrinsicDefaultProto.
[...]
features: [generators]
--- |
1163 |
dflt-params-abrupt.js |
---
description: Abrupt completion returned by evaluation of initializer (generator function declaration)
esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionobject
features: [default-parameters, generators]
flags: [generated]
info: |
GeneratorDeclaration : function * ( FormalParameters ) { GeneratorBody }
[...]
2. Let F be GeneratorFunctionCreate(Normal, FormalParameters,
GeneratorBody, scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
14.1.19 Runtime Semantics: IteratorBindingInitialization
FormalsList : FormalsList , FormalParameter
1. Let status be the result of performing IteratorBindingInitialization for
FormalsList using iteratorRecord and environment as the arguments.
2. ReturnIfAbrupt(status).
3. Return the result of performing IteratorBindingInitialization for
FormalParameter using iteratorRecord and environment as the arguments.
--- |
2046 |
dflt-params-arg-val-not-undefined.js |
---
description: Use of initializer when argument value is not `undefined` (generator function declaration)
esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionobject
features: [default-parameters, generators]
flags: [generated]
info: |
GeneratorDeclaration : function * ( FormalParameters ) { GeneratorBody }
[...]
2. Let F be GeneratorFunctionCreate(Normal, FormalParameters,
GeneratorBody, scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
14.1.19 Runtime Semantics: IteratorBindingInitialization
FormalsList : FormalsList , FormalParameter
[...]
23. Let iteratorRecord be Record {[[Iterator]]:
CreateListIterator(argumentsList), [[Done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
a. Perform ? IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
--- |
2899 |
dflt-params-arg-val-undefined.js |
---
description: Use of initializer when argument value is `undefined` (generator function declaration)
esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionobject
features: [default-parameters, generators]
flags: [generated]
info: |
GeneratorDeclaration : function * ( FormalParameters ) { GeneratorBody }
[...]
2. Let F be GeneratorFunctionCreate(Normal, FormalParameters,
GeneratorBody, scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
14.1.19 Runtime Semantics: IteratorBindingInitialization
FormalsList : FormalsList , FormalParameter
[...]
23. Let iteratorRecord be Record {[[Iterator]]:
CreateListIterator(argumentsList), [[Done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
a. Perform ? IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
--- |
2168 |
dflt-params-duplicates.js |
---
description: It is a Syntax Error if BoundNames of FormalParameters contains any duplicate elements. (generator function declaration)
esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionobject
features: [default-parameters, generators]
flags: [generated]
negative:
phase: parse
type: SyntaxError
info: |
GeneratorDeclaration : function * ( FormalParameters ) { GeneratorBody }
[...]
2. Let F be GeneratorFunctionCreate(Normal, FormalParameters,
GeneratorBody, scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
14.1.2 Static Semantics: Early Errors
StrictFormalParameters : FormalParameters
- It is a Syntax Error if BoundNames of FormalParameters contains any
duplicate elements.
FormalParameters : FormalParameterList
- It is a Syntax Error if IsSimpleParameterList of FormalParameterList is
false and BoundNames of FormalParameterList contains any duplicate
elements.
--- |
1895 |
dflt-params-ref-later.js |
---
description: Referencing a parameter that occurs later in the ParameterList (generator function declaration)
esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionobject
features: [default-parameters, generators]
flags: [generated]
info: |
GeneratorDeclaration : function * ( FormalParameters ) { GeneratorBody }
[...]
2. Let F be GeneratorFunctionCreate(Normal, FormalParameters,
GeneratorBody, scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
14.1.19 Runtime Semantics: IteratorBindingInitialization
FormalsList : FormalsList , FormalParameter
1. Let status be the result of performing IteratorBindingInitialization for
FormalsList using iteratorRecord and environment as the arguments.
2. ReturnIfAbrupt(status).
3. Return the result of performing IteratorBindingInitialization for
FormalParameter using iteratorRecord and environment as the arguments.
--- |
2029 |
dflt-params-ref-prior.js |
---
description: Referencing a parameter that occurs earlier in the ParameterList (generator function declaration)
esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionobject
features: [default-parameters, generators]
flags: [generated]
info: |
GeneratorDeclaration : function * ( FormalParameters ) { GeneratorBody }
[...]
2. Let F be GeneratorFunctionCreate(Normal, FormalParameters,
GeneratorBody, scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
14.1.19 Runtime Semantics: IteratorBindingInitialization
FormalsList : FormalsList , FormalParameter
1. Let status be the result of performing IteratorBindingInitialization for
FormalsList using iteratorRecord and environment as the arguments.
2. ReturnIfAbrupt(status).
3. Return the result of performing IteratorBindingInitialization for
FormalParameter using iteratorRecord and environment as the arguments.
--- |
2201 |
dflt-params-ref-self.js |
---
description: Referencing a parameter from within its own initializer (generator function declaration)
esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionobject
features: [default-parameters, generators]
flags: [generated]
info: |
GeneratorDeclaration : function * ( FormalParameters ) { GeneratorBody }
[...]
2. Let F be GeneratorFunctionCreate(Normal, FormalParameters,
GeneratorBody, scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
14.1.19 Runtime Semantics: IteratorBindingInitialization
FormalsList : FormalsList , FormalParameter
1. Let status be the result of performing IteratorBindingInitialization for
FormalsList using iteratorRecord and environment as the arguments.
2. ReturnIfAbrupt(status).
3. Return the result of performing IteratorBindingInitialization for
FormalParameter using iteratorRecord and environment as the arguments.
--- |
2018 |
dflt-params-rest.js |
---
description: RestParameter does not support an initializer (generator function declaration)
esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionobject
features: [default-parameters, generators]
flags: [generated]
negative:
phase: parse
type: SyntaxError
info: |
GeneratorDeclaration : function * ( FormalParameters ) { GeneratorBody }
[...]
2. Let F be GeneratorFunctionCreate(Normal, FormalParameters,
GeneratorBody, scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
14.1 Function Definitions
Syntax
FunctionRestParameter[Yield] :
BindingRestElement[?Yield]
13.3.3 Destructuring Binding Patterns
Syntax
BindingRestElement[Yield] :
...BindingIdentifier[?Yield]
...BindingPattern[?Yield]
--- |
1714 |
dflt-params-trailing-comma.js |
---
description: A trailing comma should not increase the respective length, using default parameters (generator function declaration)
esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionobject
features: [generators]
flags: [generated]
info: |
GeneratorDeclaration : function * ( FormalParameters ) { GeneratorBody }
[...]
2. Let F be GeneratorFunctionCreate(Normal, FormalParameters,
GeneratorBody, scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Trailing comma in the parameters list
14.1 Function Definitions
FormalParameters[Yield, Await] : FormalParameterList[?Yield, ?Await] ,
--- |
1869 |
dstr |
|
|
eval-var-scope-syntax-err.js |
---
description: sloppy direct eval in params introduces var (generator function declaration in sloppy code)
esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionobject
features: [default-parameters, generators]
flags: [generated, noStrict]
info: |
GeneratorDeclaration : function * ( FormalParameters ) { GeneratorBody }
[...]
2. Let F be GeneratorFunctionCreate(Normal, FormalParameters,
GeneratorBody, scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
FormalParameter : BindingElement
1. Return the result of performing IteratorBindingInitialization for BindingElement with arguments iteratorRecord and environment.
--- |
1833 |
forbidden-ext |
|
|
generator-created-after-decl-inst.js |
---
esid: sec-generator-function-definitions-runtime-semantics-evaluatebody
description: >
The generator object is created after FunctionDeclarationInstantiation.
info: |
14.4.10 Runtime Semantics: EvaluateBody
1. Perform ? FunctionDeclarationInstantiation(functionObject, argumentsList).
2. Let G be ? OrdinaryCreateFromConstructor(functionObject, "%GeneratorPrototype%",
« [[GeneratorState]], [[GeneratorContext]] »).
3. Perform GeneratorStart(G, FunctionBody).
...
features: [generators]
--- |
838 |
has-instance.js |
---
description: >
A Generator object is an instance of a generator function.
es6id: 25.3
features: [generators]
--- |
375 |
invoke-as-constructor.js |
---
description: >
Generator statements cannot be used as constructors.
es6id: 14.4
features: [generators]
--- |
358 |
length-dflt.js |
---
es6id: 14.1.6
description: >
Default parameters' effect on function length
info: |
Function length is counted by the non initialized parameters in the left.
9.2.4 FunctionInitialize (F, kind, ParameterList, Body, Scope)
[...]
2. Let len be the ExpectedArgumentCount of ParameterList.
3. Perform ! DefinePropertyOrThrow(F, "length", PropertyDescriptor{[[Value]]:
len, [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: true}).
[...]
FormalsList : FormalParameter
1. If HasInitializer of FormalParameter is true return 0
2. Return 1.
FormalsList : FormalsList , FormalParameter
1. Let count be the ExpectedArgumentCount of FormalsList.
2. If HasInitializer of FormalsList is true or HasInitializer of
FormalParameter is true, return count.
3. Return count+1.
features: [generators, default-parameters]
includes: [propertyHelper.js]
--- |
1619 |
length-property-descriptor.js |
---
description: >
Generator functions should define a `length` property.
includes: [propertyHelper.js]
es6id: 25.2.4
features: [generators]
--- |
441 |
name.js |
---
description: Assignment of function `name` attribute
es6id: 14.4.12
info: |
GeneratorDeclaration :
function * BindingIdentifier ( FormalParameters ) { GeneratorBody }
[...]
6. Perform SetFunctionName(F, name).
includes: [propertyHelper.js]
features: [generators]
--- |
584 |
no-yield.js |
---
description: >
Generators declared with GeneratorDeclaration syntax do not require a
`yield` expression.
es6id: 14.4
features: [generators]
--- |
444 |
object-destructuring-param-strict-body.js |
|
5311 |
param-dflt-yield.js |
---
esid: sec-generator-function-definitions
es6id: 14.4
description: >
YieldExpression cannot be used within the FormalParameters of a generator
function
info: |
GeneratorDeclaration[Yield, Default] :
function * BindingIdentifier[?Yield] ( FormalParameters[Yield] ) { GeneratorBody }
YieldExpression cannot be used within the FormalParameters of a generator
function because any expressions that are part of FormalParameters are
evaluated before the resulting generator object is in a resumable state.
features: [generators, default-parameters]
negative:
phase: parse
type: SyntaxError
--- |
831 |
params-dflt-args-unmapped.js |
---
description: Referencing the arguments object from a default parameter (generator function declaration)
esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionobject
es6id: 14.4.12
features: [generators, default-parameters]
info: |
GeneratorDeclaration : function * ( FormalParameters ) { GeneratorBody }
[...]
2. Let F be GeneratorFunctionCreate(Normal, FormalParameters,
GeneratorBody, scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
14.1.19 Runtime Semantics: IteratorBindingInitialization
FormalsList : FormalsList , FormalParameter
1. Let status be the result of performing IteratorBindingInitialization for
FormalsList using iteratorRecord and environment as the arguments.
2. ReturnIfAbrupt(status).
3. Return the result of performing IteratorBindingInitialization for
FormalParameter using iteratorRecord and environment as the arguments.
--- |
2550 |
params-dflt-ref-arguments.js |
---
description: Referencing the arguments object from a default parameter (generator function declaration)
esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionobject
es6id: 14.4.12
features: [generators, default-parameters]
info: |
GeneratorDeclaration : function * ( FormalParameters ) { GeneratorBody }
[...]
2. Let F be GeneratorFunctionCreate(Normal, FormalParameters,
GeneratorBody, scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
14.1.19 Runtime Semantics: IteratorBindingInitialization
FormalsList : FormalsList , FormalParameter
1. Let status be the result of performing IteratorBindingInitialization for
FormalsList using iteratorRecord and environment as the arguments.
2. ReturnIfAbrupt(status).
3. Return the result of performing IteratorBindingInitialization for
FormalParameter using iteratorRecord and environment as the arguments.
--- |
2153 |
params-trailing-comma-multiple.js |
---
description: A trailing comma should not increase the respective length, using multiple parameters (generator function declaration)
esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionobject
features: [generators]
flags: [generated]
info: |
GeneratorDeclaration : function * ( FormalParameters ) { GeneratorBody }
[...]
2. Let F be GeneratorFunctionCreate(Normal, FormalParameters,
GeneratorBody, scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Trailing comma in the parameters list
14.1 Function Definitions
FormalParameters[Yield, Await] : FormalParameterList[?Yield, ?Await] ,
--- |
1862 |
params-trailing-comma-single.js |
---
description: A trailing comma should not increase the respective length, using a single parameter (generator function declaration)
esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionobject
features: [generators]
flags: [generated]
info: |
GeneratorDeclaration : function * ( FormalParameters ) { GeneratorBody }
[...]
2. Let F be GeneratorFunctionCreate(Normal, FormalParameters,
GeneratorBody, scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Trailing comma in the parameters list
14.1 Function Definitions
FormalParameters[Yield, Await] : FormalParameterList[?Yield, ?Await] ,
--- |
1826 |
prototype-own-properties.js |
---
es6id: 25.2.4.2
description: >
The `prototype` property of GeneratorFunction instances are created as
plain objects with no "own" properties.
features: [generators]
--- |
467 |
prototype-property-descriptor.js |
---
description: >
Generator objects should define a `prototype` property.
includes: [propertyHelper.js]
es6id: 25.2.4
features: [generators]
--- |
433 |
prototype-relation-to-function.js |
---
description: >
The value of the [[Prototype]] internal slot of the GeneratorFunction
prototype object is the FunctionPrototype intrinsic object.
es6id: 25.2.2.2
features: [generators]
--- |
499 |
prototype-typeof.js |
---
es6id: 25.2.4.2
description: >
Whenever a GeneratorFunction instance is created another ordinary object is
also created and is the initial value of the generator function’s prototype
property.
features: [generators]
--- |
468 |
prototype-uniqueness.js |
---
description: >
GeneratorFunction instances are created with a unique prototype object.
es6id: 25.2.1
features: [generators]
--- |
378 |
prototype-value.js |
---
description: >
Generator instances directly inherit properties from the object that is the
value of the prototype property of the Generator function that created the
instance.
es6id: 25.3
features: [generators]
--- |
526 |
rest-param-strict-body.js |
|
5317 |
rest-params-trailing-comma-early-error.js |
---
description: It's a syntax error if a FunctionRestParameter is followed by a trailing comma (generator function declaration)
esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionobject
features: [generators]
flags: [generated]
negative:
phase: parse
type: SyntaxError
info: |
GeneratorDeclaration : function * ( FormalParameters ) { GeneratorBody }
[...]
2. Let F be GeneratorFunctionCreate(Normal, FormalParameters,
GeneratorBody, scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Trailing comma in the parameters list
14.1 Function Definitions
FormalParameters[Yield, Await] :
[empty]
FunctionRestParameter[?Yield, ?Await]
FormalParameterList[?Yield, ?Await]
FormalParameterList[?Yield, ?Await] ,
FormalParameterList[?Yield, ?Await] , FunctionRestParameter[?Yield, ?Await]
--- |
1823 |
restricted-properties.js |
---
description: >
Functions created using GeneratorFunction syntactic form do not have own
properties "caller" or "arguments", but inherit them from
%FunctionPrototype%.
features: [generators]
--- |
868 |
return.js |
---
description: >
return is a valid statement within generator function bodies.
es6id: 14.4
features: [generators]
--- |
546 |
scope-body-lex-distinct.js |
---
esid: sec-functiondeclarationinstantiation
description: >
Creation of new lexical environment (distinct from the variable
environment) for the function body outside of strict mode
info: |
[...]
29. If strict is false, then
a. Let lexEnv be NewDeclarativeEnvironment(varEnv).
b. NOTE: Non-strict functions use a separate lexical Environment Record
for top-level lexical declarations so that a direct eval can
determine whether any var scoped declarations introduced by the eval
code conflict with pre-existing top-level lexically scoped
declarations. This is not needed for strict functions because a
strict direct eval always places all declarations into a new
Environment Record.
[...]
18.2.1.3 Runtime Semantics: EvalDeclarationInstantiation
[...]
5. If strict is false, then
[...]
b. Let thisLex be lexEnv.
c. Assert: The following loop will terminate.
d. Repeat while thisLex is not the same as varEnv,
i. Let thisEnvRec be thisLex's EnvironmentRecord.
ii. If thisEnvRec is not an object Environment Record, then
1. NOTE: The environment of with statements cannot contain any
lexical declaration so it doesn't need to be checked for
var/let hoisting conflicts.
2. For each name in varNames, do
a. If thisEnvRec.HasBinding(name) is true, then
i. Throw a SyntaxError exception.
ii. NOTE: Annex B.3.5 defines alternate semantics for the
above step.
b. NOTE: A direct eval will not hoist var declaration over a
like-named lexical declaration.
iii. Let thisLex be thisLex's outer environment reference.
flags: [noStrict]
features: [generators, let]
--- |
2197 |
scope-param-elem-var-close.js |
---
esid: sec-functiondeclarationinstantiation
description: >
sloppy direct evals in params introduce vars
info: |
[...]
20. Else,
a. NOTE: A separate Environment Record is needed to ensure that bindings created by direct eval calls in the formal parameter list are outside the environment where parameters are declared.
b. Let calleeEnv be the LexicalEnvironment of calleeContext.
c. Let env be NewDeclarativeEnvironment(calleeEnv).
d. Let envRec be env's EnvironmentRecord.
[...]
flags: [noStrict]
features: [generators]
--- |
1089 |
scope-param-elem-var-open.js |
---
esid: sec-functiondeclarationinstantiation
description: >
sloppy direct evals in params introduce vars
info: |
[...]
20. Else,
a. NOTE: A separate Environment Record is needed to ensure that bindings created by direct eval calls in the formal parameter list are outside the environment where parameters are declared.
b. Let calleeEnv be the LexicalEnvironment of calleeContext.
c. Let env be NewDeclarativeEnvironment(calleeEnv).
d. Let envRec be env's EnvironmentRecord.
[...]
flags: [noStrict]
features: [generators]
--- |
997 |
scope-param-rest-elem-var-close.js |
---
esid: sec-functiondeclarationinstantiation
description: >
sloppy direct evals in params introduce vars
info: |
[...]
20. Else,
a. NOTE: A separate Environment Record is needed to ensure that bindings created by direct eval calls in the formal parameter list are outside the environment where parameters are declared.
b. Let calleeEnv be the LexicalEnvironment of calleeContext.
c. Let env be NewDeclarativeEnvironment(calleeEnv).
d. Let envRec be env's EnvironmentRecord.
[...]
flags: [noStrict]
features: [generators]
--- |
1017 |
scope-param-rest-elem-var-open.js |
---
esid: sec-functiondeclarationinstantiation
description: >
sloppy direct evals in params introduce vars
info: |
[...]
20. Else,
a. NOTE: A separate Environment Record is needed to ensure that bindings created by direct eval calls in the formal parameter list are outside the environment where parameters are declared.
b. Let calleeEnv be the LexicalEnvironment of calleeContext.
c. Let env be NewDeclarativeEnvironment(calleeEnv).
d. Let envRec be env's EnvironmentRecord.
[...]
flags: [noStrict]
features: [generators]
--- |
1002 |
scope-paramsbody-var-close.js |
---
esid: sec-functiondeclarationinstantiation
description: >
Disposal of variable environment for the function body
info: |
[...]
26. If hasParameterExpressions is false, then
[...]
27. Else,
a. NOTE A separate Environment Record is needed to ensure that closures
created by expressions in the formal parameter list do not have
visibility of declarations in the function body.
b. Let varEnv be NewDeclarativeEnvironment(env).
c. Let varEnvRec be varEnv's EnvironmentRecord.
d. Set the VariableEnvironment of calleeContext to varEnv.
e. Let instantiatedVarNames be a new empty List.
[...]
features: [generators]
--- |
1162 |
scope-paramsbody-var-open.js |
---
esid: sec-functiondeclarationinstantiation
description: >
Creation of new variable environment for the function body (as distinct from
that for the function's parameters)
info: |
[...]
26. If hasParameterExpressions is false, then
[...]
27. Else,
a. NOTE A separate Environment Record is needed to ensure that closures
created by expressions in the formal parameter list do not have
visibility of declarations in the function body.
b. Let varEnv be NewDeclarativeEnvironment(env).
c. Let varEnvRec be varEnv's EnvironmentRecord.
d. Set the VariableEnvironment of calleeContext to varEnv.
e. Let instantiatedVarNames be a new empty List.
[...]
features: [generators]
--- |
1203 |
shell.js |
|
0 |
unscopables-with-in-nested-fn.js |
---
description: Symbol.unscopables behavior across scope boundaries (generator function declaration)
esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionobject
features: [globalThis, Symbol.unscopables, generators]
flags: [generated, noStrict]
info: |
GeneratorDeclaration : function * ( FormalParameters ) { GeneratorBody }
[...]
2. Let F be GeneratorFunctionCreate(Normal, FormalParameters,
GeneratorBody, scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
...
Let envRec be lex's EnvironmentRecord.
Let exists be ? envRec.HasBinding(name).
HasBinding
...
If the withEnvironment flag of envRec is false, return true.
Let unscopables be ? Get(bindings, @@unscopables).
If Type(unscopables) is Object, then
Let blocked be ToBoolean(? Get(unscopables, N)).
If blocked is true, return false.
(The `with` Statement) Runtime Semantics: Evaluation
...
Set the withEnvironment flag of newEnv’s EnvironmentRecord to true.
...
--- |
2839 |
unscopables-with.js |
---
description: Symbol.unscopables behavior across scope boundaries (generator function declaration)
esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionobject
features: [globalThis, Symbol.unscopables, generators]
flags: [generated, noStrict]
info: |
GeneratorDeclaration : function * ( FormalParameters ) { GeneratorBody }
[...]
2. Let F be GeneratorFunctionCreate(Normal, FormalParameters,
GeneratorBody, scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
...
Let envRec be lex's EnvironmentRecord.
Let exists be ? envRec.HasBinding(name).
HasBinding
...
If the withEnvironment flag of envRec is false, return true.
Let unscopables be ? Get(bindings, @@unscopables).
If Type(unscopables) is Object, then
Let blocked be ToBoolean(? Get(unscopables, N)).
If blocked is true, return false.
(The `with` Statement) Runtime Semantics: Evaluation
...
Set the withEnvironment flag of newEnv’s EnvironmentRecord to true.
...
--- |
2664 |
use-strict-with-non-simple-param.js |
---
esid: sec-generator-function-definitions-static-semantics-early-errors
description: >
A SyntaxError is thrown if a generator contains a non-simple parameter list and a UseStrict directive.
info: |
Static Semantics: Early Errors
It is a Syntax Error if ContainsUseStrict of GeneratorBody is true and IsSimpleParameterList of FormalParameters is false.
negative:
phase: parse
type: SyntaxError
features: [generators]
--- |
659 |
yield-as-binding-identifier-escaped.js |
---
description: yield is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Generator Function declaration)
esid: prod-GeneratorDeclaration
features: [generators]
flags: [generated]
negative:
phase: parse
type: SyntaxError
info: |
14.4 Generator Function Definitions
GeneratorDeclaration :
function * BindingIdentifier ( FormalParameters ) { GeneratorBody }
BindingIdentifier : Identifier
It is a Syntax Error if this production has a [Yield] parameter and
StringValue of Identifier is "yield".
--- |
851 |
yield-as-binding-identifier.js |
---
description: yield is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Generator Function declaration)
esid: prod-GeneratorDeclaration
features: [generators]
flags: [generated]
negative:
phase: parse
type: SyntaxError
info: |
14.4 Generator Function Definitions
GeneratorDeclaration :
function * BindingIdentifier ( FormalParameters ) { GeneratorBody }
BindingIdentifier : Identifier
It is a Syntax Error if this production has a [Yield] parameter and
StringValue of Identifier is "yield".
--- |
838 |
yield-as-function-expression-binding-identifier.js |
---
description: >
`yield` may be used as the binding identifier of a function expression
within generator bodies.
es6id: 14.1
flags: [noStrict]
features: [generators]
--- |
503 |
yield-as-generator-declaration-binding-identifier.js |
---
description: >
`yield` is a valid BindingIdentifier for GeneratorDeclarations outside of
strict mode.
es6id: 12.1.1
flags: [noStrict]
features: [generators]
--- |
872 |
yield-as-identifier-in-nested-function.js |
---
description: >
`yield` is not a reserved keyword within normal function bodies declared
within generator function bodies.
es6id: 12.1.1
flags: [noStrict]
features: [generators]
--- |
527 |
yield-as-identifier-reference-escaped.js |
---
description: yield is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Generator Function declaration)
esid: prod-GeneratorDeclaration
features: [generators]
flags: [generated]
negative:
phase: parse
type: SyntaxError
info: |
14.4 Generator Function Definitions
GeneratorDeclaration :
function * BindingIdentifier ( FormalParameters ) { GeneratorBody }
IdentifierReference : Identifier
It is a Syntax Error if this production has a [Yield] parameter and
StringValue of Identifier is "yield".
--- |
859 |
yield-as-identifier-reference.js |
---
description: yield is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Generator Function declaration)
esid: prod-GeneratorDeclaration
features: [generators]
flags: [generated]
negative:
phase: parse
type: SyntaxError
info: |
14.4 Generator Function Definitions
GeneratorDeclaration :
function * BindingIdentifier ( FormalParameters ) { GeneratorBody }
IdentifierReference : Identifier
It is a Syntax Error if this production has a [Yield] parameter and
StringValue of Identifier is "yield".
--- |
846 |
yield-as-label-identifier-escaped.js |
---
description: yield is a reserved keyword within generator function bodies and may not be used as a label identifier. (Generator Function declaration)
esid: prod-GeneratorDeclaration
features: [generators]
flags: [generated]
negative:
phase: parse
type: SyntaxError
info: |
14.4 Generator Function Definitions
GeneratorDeclaration :
function * BindingIdentifier ( FormalParameters ) { GeneratorBody }
LabelIdentifier : Identifier
It is a Syntax Error if this production has a [Yield] parameter and
StringValue of Identifier is "yield".
--- |
843 |
yield-as-label-identifier.js |
---
description: yield is a reserved keyword within generator function bodies and may not be used as a label identifier. (Generator Function declaration)
esid: prod-GeneratorDeclaration
features: [generators]
flags: [generated]
negative:
phase: parse
type: SyntaxError
info: |
14.4 Generator Function Definitions
GeneratorDeclaration :
function * BindingIdentifier ( FormalParameters ) { GeneratorBody }
LabelIdentifier : Identifier
It is a Syntax Error if this production has a [Yield] parameter and
StringValue of Identifier is "yield".
--- |
830 |
yield-as-literal-property-name.js |
---
description: >
`yield` may be used as a literal property name in an object literal
within generator function bodies.
es6id: 12.1.1
features: [generators]
--- |
502 |
yield-as-logical-or-expression.js |
---
description: >
`yield` expressions are not LogicalOrExpressions.
es6id: 12.1.1
negative:
phase: parse
type: SyntaxError
features: [generators]
--- |
396 |
yield-as-parameter.js |
---
description: >
`yield` is a reserved keyword within generator function bodies and may
not be used as the binding identifier of a parameter.
es6id: 12.1.1
negative:
phase: parse
type: SyntaxError
features: [generators]
--- |
454 |
yield-as-property-name.js |
---
description: >
`yield` may be used as a literal property name in an object literal
within generator function bodies.
es6id: 12.1.1
features: [generators]
--- |
487 |
yield-as-statement.js |
---
description: >
`yield` is a valid statement within generator function bodies.
es6id: 14.4
features: [generators]
--- |
1227 |
yield-as-yield-operand.js |
---
description: >
`yield` expressions may be used as the right-hand-side of other `yield`
expressions.
es6id: 14.4
features: [generators]
--- |
843 |
yield-identifier-non-strict.js |
---
description: Use of yield as a valid identifier in a function body inside a generator body in non strict mode (Generator function declaration - valid for non-strict only cases)
esid: prod-GeneratorDeclaration
features: [generators]
flags: [generated, noStrict]
info: |
14.4 Generator Function Definitions
GeneratorDeclaration[Yield, Await, Default]:
function * BindingIdentifier[?Yield, ?Await] ( FormalParameters[+Yield, ~Await] ) { GeneratorBody }
--- |
1067 |
yield-identifier-spread-non-strict.js |
---
description: Mixed use of object spread and yield as a valid identifier in a function body inside a generator body in non strict mode (Generator function declaration - valid for non-strict only cases)
esid: prod-GeneratorDeclaration
features: [Symbol, object-spread, generators]
flags: [generated, noStrict]
info: |
14.4 Generator Function Definitions
GeneratorDeclaration[Yield, Await, Default]:
function * BindingIdentifier[?Yield, ?Await] ( FormalParameters[+Yield, ~Await] ) { GeneratorBody }
Spread Properties
PropertyDefinition[Yield]:
(...)
...AssignmentExpression[In, ?Yield]
--- |
1671 |
yield-identifier-spread-strict-strict.js |
---
description: It's an early error if the AssignmentExpression is a function body with yield as an identifier in strict mode. (Generator Function declaration)
esid: prod-GeneratorDeclaration
features: [object-spread, generators]
flags: [generated, onlyStrict]
negative:
phase: parse
type: SyntaxError
info: |
14.4 Generator Function Definitions
GeneratorDeclaration :
function * BindingIdentifier ( FormalParameters ) { GeneratorBody }
Spread Properties
PropertyDefinition[Yield]:
(...)
...AssignmentExpression[In, ?Yield]
--- |
1036 |
yield-identifier-strict-strict.js |
---
description: It's an early error if the generator body has another function body with yield as an identifier in strict mode. (Generator Function declaration)
esid: prod-GeneratorDeclaration
features: [generators]
flags: [generated, onlyStrict]
negative:
phase: parse
type: SyntaxError
info: |
14.4 Generator Function Definitions
GeneratorDeclaration :
function * BindingIdentifier ( FormalParameters ) { GeneratorBody }
--- |
868 |
yield-newline.js |
---
description: >
Newlines terminate `yield` expressions.
es6id: 14.4
features: [generators]
--- |
642 |
yield-spread-arr-multiple.js |
---
description: Use yield value in a array spread position (Generator Function declaration)
esid: prod-GeneratorDeclaration
features: [generators]
flags: [generated]
includes: [compareArray.js]
info: |
14.4 Generator Function Definitions
GeneratorDeclaration :
function * BindingIdentifier ( FormalParameters ) { GeneratorBody }
Array Initializer
SpreadElement[Yield, Await]:
...AssignmentExpression[+In, ?Yield, ?Await]
--- |
986 |
yield-spread-arr-single.js |
---
description: Use yield value in a array spread position (Generator Function declaration)
esid: prod-GeneratorDeclaration
features: [generators]
flags: [generated]
info: |
14.4 Generator Function Definitions
GeneratorDeclaration :
function * BindingIdentifier ( FormalParameters ) { GeneratorBody }
Array Initializer
SpreadElement[Yield, Await]:
...AssignmentExpression[+In, ?Yield, ?Await]
--- |
1142 |
yield-spread-obj.js |
---
description: Use yield value in a object spread position (Generator Function declaration)
esid: prod-GeneratorDeclaration
features: [object-spread, generators]
flags: [generated]
info: |
14.4 Generator Function Definitions
GeneratorDeclaration :
function * BindingIdentifier ( FormalParameters ) { GeneratorBody }
Spread Properties
PropertyDefinition[Yield]:
(...)
...AssignmentExpression[In, ?Yield]
--- |
1067 |
yield-star-after-newline.js |
---
description: >
A newline may not precede the `*` token in a `yield` expression.
es6id: 14.4
negative:
phase: parse
type: SyntaxError
features: [generators]
--- |
398 |
yield-star-before-newline.js |
---
description: >
The right-hand side of a `yield *` expression may appear on a new line.
es6id: 14.4
features: [generators]
--- |
468 |
yield-weak-binding.js |
---
description: >
`yield` expressions bind weakly
es6id: 14.4
negative:
phase: parse
type: SyntaxError
features: [generators]
--- |
370 |