| async-await-as-binding-identifier-escaped.js | 
          ---
description: await is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Async method)
esid: prod-AsyncMethod
features: [async-functions]
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    Async Function Definitions
    AsyncMethod :
      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
    BindingIdentifier : Identifier
    It is a Syntax Error if this production has a [Await] parameter and
    StringValue of Identifier is "await".
--- | 
          872 | 
        
        
          | async-await-as-binding-identifier.js | 
          ---
description: await is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Async method)
esid: prod-AsyncMethod
features: [async-functions]
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    Async Function Definitions
    AsyncMethod :
      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
    BindingIdentifier : Identifier
    It is a Syntax Error if this production has a [Await] parameter and
    StringValue of Identifier is "await".
--- | 
          859 | 
        
        
          | async-await-as-identifier-reference-escaped.js | 
          ---
description: await is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Async method)
esid: prod-AsyncMethod
features: [async-functions]
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    Async Function Definitions
    AsyncMethod :
      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
    IdentifierReference : Identifier
    It is a Syntax Error if this production has a [Await] parameter and
    StringValue of Identifier is "await".
--- | 
          880 | 
        
        
          | async-await-as-identifier-reference.js | 
          ---
description: await is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Async method)
esid: prod-AsyncMethod
features: [async-functions]
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    Async Function Definitions
    AsyncMethod :
      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
    IdentifierReference : Identifier
    It is a Syntax Error if this production has a [Await] parameter and
    StringValue of Identifier is "await".
--- | 
          867 | 
        
        
          | async-await-as-label-identifier-escaped.js | 
          ---
description: await is a reserved keyword within generator function bodies and may not be used as a label identifier. (Async method)
esid: prod-AsyncMethod
features: [async-functions]
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    Async Function Definitions
    AsyncMethod :
      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
    LabelIdentifier : Identifier
    It is a Syntax Error if this production has a [Await] parameter and
    StringValue of Identifier is "await".
--- | 
          864 | 
        
        
          | async-await-as-label-identifier.js | 
          ---
description: await is a reserved keyword within generator function bodies and may not be used as a label identifier. (Async method)
esid: prod-AsyncMethod
features: [async-functions]
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    Async Function Definitions
    AsyncMethod :
      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
    LabelIdentifier : Identifier
    It is a Syntax Error if this production has a [Await] parameter and
    StringValue of Identifier is "await".
--- | 
          851 | 
        
        
          | async-gen-await-as-binding-identifier-escaped.js | 
          ---
description: await is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [async-iteration]
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    BindingIdentifier : Identifier
    It is a Syntax Error if this production has a [Await] parameter and
    StringValue of Identifier is "await".
--- | 
          915 | 
        
        
          | async-gen-await-as-binding-identifier.js | 
          ---
description: await is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [async-iteration]
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    BindingIdentifier : Identifier
    It is a Syntax Error if this production has a [Await] parameter and
    StringValue of Identifier is "await".
--- | 
          902 | 
        
        
          | async-gen-await-as-identifier-reference-escaped.js | 
          ---
description: await is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [async-iteration]
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    IdentifierReference : Identifier
    It is a Syntax Error if this production has a [Await] parameter and
    StringValue of Identifier is "await".
--- | 
          923 | 
        
        
          | async-gen-await-as-identifier-reference.js | 
          ---
description: await is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [async-iteration]
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    IdentifierReference : Identifier
    It is a Syntax Error if this production has a [Await] parameter and
    StringValue of Identifier is "await".
--- | 
          910 | 
        
        
          | async-gen-await-as-label-identifier-escaped.js | 
          ---
description: await is a reserved keyword within generator function bodies and may not be used as a label identifier. (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [async-iteration]
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    LabelIdentifier : Identifier
    It is a Syntax Error if this production has a [Await] parameter and
    StringValue of Identifier is "await".
--- | 
          907 | 
        
        
          | async-gen-await-as-label-identifier.js | 
          ---
description: await is a reserved keyword within generator function bodies and may not be used as a label identifier. (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [async-iteration]
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    LabelIdentifier : Identifier
    It is a Syntax Error if this production has a [Await] parameter and
    StringValue of Identifier is "await".
--- | 
          894 | 
        
        
          | async-gen-meth-array-destructuring-param-strict-body.js | 
          ---
description: ArrayBindingPattern and Use Strict Directive are not allowed to coexist for the same function. (async generator method)
esid: sec-asyncgenerator-definitions-propertydefinitionevaluation
features: [rest-parameters, async-iteration]
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    AsyncGeneratorMethod :
        async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
            { AsyncGeneratorBody }
    1. Let propKey be the result of evaluating PropertyName.
    2. ReturnIfAbrupt(propKey).
    3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
       Otherwise let strict be false.
    4. Let scope be the running execution context's LexicalEnvironment.
    5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
       AsyncGeneratorBody, scope, strict).
    [...]
    13.3.3.4 Static Semantics: IsSimpleParameterList
    BindingElement : BindingPattern
    1. Return false.
    14.1.2 Static Semantics: Early Errors
    FunctionDeclaration : function BindingIdentifier ( FormalParameters ) { FunctionBody }
    FunctionDeclaration : function ( FormalParameters ) { FunctionBody }
    FunctionExpression : function BindingIdentifier ( FormalParameters ) { FunctionBody }
    - It is a Syntax Error if ContainsUseStrict of FunctionBody is true and
      IsSimpleParameterList of FormalParameters is false.
    14.2.1 Static Semantics: Early Errors
    ArrowFunction : ArrowParameters => ConciseBody
    - It is a Syntax Error if ContainsUseStrict of ConciseBody is true and
      IsSimpleParameterList of ArrowParameters is false.
    14.3.1 Static Semantics: Early Errors
    MethodDefinition : PropertyName ( UniqueFormalParameters ) { FunctionBody }
    - It is a Syntax Error if ContainsUseStrict of FunctionBody is true and
      IsSimpleParameterList of UniqueFormalParameters is false.
    MethodDefinition : set PropertyName ( PropertySetParameterList ) { FunctionBody }
    - It is a Syntax Error if ContainsUseStrict of FunctionBody is true and
      IsSimpleParameterList of PropertySetParameterList is false.
    14.4.1 Static Semantics: Early Errors
    GeneratorMethod : * PropertyName ( UniqueFormalParameters ) { GeneratorBody }
    - It is a Syntax Error if ContainsUseStrict of GeneratorBody is true and
      IsSimpleParameterList of UniqueFormalParameters is false.
    GeneratorDeclaration : function * BindingIdentifier ( FormalParameters ) { GeneratorBody }
    GeneratorDeclaration : function * ( FormalParameters ) { GeneratorBody }
    GeneratorExpression : function * BindingIdentifier ( FormalParameters ) { GeneratorBody }
    - It is a Syntax Error if ContainsUseStrict of GeneratorBody is true and
      IsSimpleParameterList of UniqueFormalParameters is false.
    14.5.1 Static Semantics: Early Errors
    AsyncGeneratorMethod : async * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    - It is a Syntax Error if ContainsUseStrict of AsyncGeneratorBody is true and
      IsSimpleParameterList of UniqueFormalParameters is false.
    AsyncGeneratorDeclaration : async function * BindingIdentifier ( FormalParameters ) { AsyncGeneratorBody }
    AsyncGeneratorDeclaration : async function * ( FormalParameters ) { AsyncGeneratorBody }
    AsyncGeneratorExpression : async function * BindingIdentifier ( FormalParameters ) { AsyncGeneratorBody }
    - It is a Syntax Error if ContainsUseStrict of AsyncGeneratorBody is true and
      IsSimpleParameterList of FormalParameters is false.
    14.7.1 Static Semantics: Early Errors
    AsyncMethod : async PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
    - It is a Syntax Error if ContainsUseStrict of AsyncFunctionBody is true and
      IsSimpleParameterList of UniqueFormalParameters is false.
    AsyncFunctionDeclaration : async function BindingIdentifier ( FormalParameters ) { AsyncFunctionBody }
    AsyncFunctionDeclaration : async function ( FormalParameters ) { AsyncFunctionBody }
    AsyncFunctionExpression : async function ( FormalParameters ) { AsyncFunctionBody }
    AsyncFunctionExpression : async function BindingIdentifier ( FormalParameters ) { AsyncFunctionBody }
    - It is a Syntax Error if ContainsUseStrict of AsyncFunctionBody is true and
      IsSimpleParameterList of FormalParameters is false.
    14.8.1 Static Semantics: Early Errors
    AsyncArrowFunction : CoverCallExpressionAndAsyncArrowHead => AsyncConciseBody
    - It is a Syntax Error if ContainsUseStrict of AsyncConciseBody is true and
      IsSimpleParameterList of CoverCallExpressionAndAsyncArrowHead is false.
--- | 
          4996 | 
        
        
          | async-gen-meth-dflt-params-abrupt.js | 
          ---
description: Abrupt completion returned by evaluation of initializer (async generator method)
esid: sec-asyncgenerator-definitions-propertydefinitionevaluation
features: [default-parameters, async-iteration]
flags: [generated]
info: |
    AsyncGeneratorMethod :
        async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
            { AsyncGeneratorBody }
    1. Let propKey be the result of evaluating PropertyName.
    2. ReturnIfAbrupt(propKey).
    3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
       Otherwise let strict be false.
    4. Let scope be the running execution context's LexicalEnvironment.
    5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
       AsyncGeneratorBody, scope, strict).
    [...]
    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.
--- | 
          1749 | 
        
        
          | async-gen-meth-dflt-params-arg-val-not-undefined.js | 
          ---
description: Use of initializer when argument value is not `undefined` (async generator method)
esid: sec-asyncgenerator-definitions-propertydefinitionevaluation
features: [default-parameters, async-iteration]
flags: [generated, async]
info: |
    AsyncGeneratorMethod :
        async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
            { AsyncGeneratorBody }
    1. Let propKey be the result of evaluating PropertyName.
    2. ReturnIfAbrupt(propKey).
    3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
       Otherwise let strict be false.
    4. Let scope be the running execution context's LexicalEnvironment.
    5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
       AsyncGeneratorBody, scope, strict).
    [...]
    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.
    [...]
--- | 
          2667 | 
        
        
          | async-gen-meth-dflt-params-arg-val-undefined.js | 
          ---
description: Use of initializer when argument value is `undefined` (async generator method)
esid: sec-asyncgenerator-definitions-propertydefinitionevaluation
features: [default-parameters, async-iteration]
flags: [generated, async]
info: |
    AsyncGeneratorMethod :
        async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
            { AsyncGeneratorBody }
    1. Let propKey be the result of evaluating PropertyName.
    2. ReturnIfAbrupt(propKey).
    3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
       Otherwise let strict be false.
    4. Let scope be the running execution context's LexicalEnvironment.
    5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
       AsyncGeneratorBody, scope, strict).
    [...]
    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.
    [...]
--- | 
          1930 | 
        
        
          | async-gen-meth-dflt-params-duplicates.js | 
          ---
description: It is a Syntax Error if BoundNames of FormalParameters contains any duplicate elements. (async generator method)
esid: sec-asyncgenerator-definitions-propertydefinitionevaluation
features: [default-parameters, async-iteration]
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    AsyncGeneratorMethod :
        async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
            { AsyncGeneratorBody }
    1. Let propKey be the result of evaluating PropertyName.
    2. ReturnIfAbrupt(propKey).
    3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
       Otherwise let strict be false.
    4. Let scope be the running execution context's LexicalEnvironment.
    5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
       AsyncGeneratorBody, scope, strict).
    [...]
    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.
--- | 
          1583 | 
        
        
          | async-gen-meth-dflt-params-ref-later.js | 
          ---
description: Referencing a parameter that occurs later in the ParameterList (async generator method)
esid: sec-asyncgenerator-definitions-propertydefinitionevaluation
features: [default-parameters, async-iteration]
flags: [generated]
info: |
    AsyncGeneratorMethod :
        async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
            { AsyncGeneratorBody }
    1. Let propKey be the result of evaluating PropertyName.
    2. ReturnIfAbrupt(propKey).
    3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
       Otherwise let strict be false.
    4. Let scope be the running execution context's LexicalEnvironment.
    5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
       AsyncGeneratorBody, scope, strict).
    [...]
    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.
--- | 
          1732 | 
        
        
          | async-gen-meth-dflt-params-ref-prior.js | 
          ---
description: Referencing a parameter that occurs earlier in the ParameterList (async generator method)
esid: sec-asyncgenerator-definitions-propertydefinitionevaluation
features: [default-parameters, async-iteration]
flags: [generated, async]
info: |
    AsyncGeneratorMethod :
        async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
            { AsyncGeneratorBody }
    1. Let propKey be the result of evaluating PropertyName.
    2. ReturnIfAbrupt(propKey).
    3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
       Otherwise let strict be false.
    4. Let scope be the running execution context's LexicalEnvironment.
    5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
       AsyncGeneratorBody, scope, strict).
    [...]
    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.
--- | 
          1963 | 
        
        
          | async-gen-meth-dflt-params-ref-self.js | 
          ---
description: Referencing a parameter from within its own initializer (async generator method)
esid: sec-asyncgenerator-definitions-propertydefinitionevaluation
features: [default-parameters, async-iteration]
flags: [generated]
info: |
    AsyncGeneratorMethod :
        async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
            { AsyncGeneratorBody }
    1. Let propKey be the result of evaluating PropertyName.
    2. ReturnIfAbrupt(propKey).
    3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
       Otherwise let strict be false.
    4. Let scope be the running execution context's LexicalEnvironment.
    5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
       AsyncGeneratorBody, scope, strict).
    [...]
    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.
--- | 
          1721 | 
        
        
          | async-gen-meth-dflt-params-rest.js | 
          ---
description: RestParameter does not support an initializer (async generator method)
esid: sec-asyncgenerator-definitions-propertydefinitionevaluation
features: [default-parameters, async-iteration]
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    AsyncGeneratorMethod :
        async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
            { AsyncGeneratorBody }
    1. Let propKey be the result of evaluating PropertyName.
    2. ReturnIfAbrupt(propKey).
    3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
       Otherwise let strict be false.
    4. Let scope be the running execution context's LexicalEnvironment.
    5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
       AsyncGeneratorBody, scope, strict).
    [...]
    14.1 Function Definitions
    Syntax
    FunctionRestParameter[Yield] :
      BindingRestElement[?Yield]
    13.3.3 Destructuring Binding Patterns
    Syntax
    BindingRestElement[Yield] :
      ...BindingIdentifier[?Yield]
      ...BindingPattern[?Yield]
--- | 
          1402 | 
        
        
          | async-gen-meth-dflt-params-trailing-comma.js | 
          ---
description: A trailing comma should not increase the respective length, using default parameters (async generator method)
esid: sec-asyncgenerator-definitions-propertydefinitionevaluation
features: [async-iteration]
flags: [generated, async]
info: |
    AsyncGeneratorMethod :
        async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
            { AsyncGeneratorBody }
    1. Let propKey be the result of evaluating PropertyName.
    2. ReturnIfAbrupt(propKey).
    3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
       Otherwise let strict be false.
    4. Let scope be the running execution context's LexicalEnvironment.
    5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
       AsyncGeneratorBody, scope, strict).
    [...]
    Trailing comma in the parameters list
    14.1 Function Definitions
    FormalParameters[Yield, Await] : FormalParameterList[?Yield, ?Await] ,
--- | 
          1629 | 
        
        
          | async-gen-meth-escaped-async.js | 
          ---
esid: sec-grammar-notation
description: >
  The `async` contextual keyword must not contain Unicode escape sequences.
info: |
  Terminal symbols are shown
  in fixed width font, both in the productions of the grammars and throughout this
  specification whenever the text directly refers to such a terminal symbol. These
  are to appear in a script exactly as written. All terminal symbol code points
  specified in this way are to be understood as the appropriate Unicode code points
  from the Basic Latin range, as opposed to any similar-looking code points from
  other Unicode ranges.
negative:
  phase: parse
  type: SyntaxError
features: [async-iteration]
--- | 
          886 | 
        
        
          | async-gen-meth-eval-var-scope-syntax-err.js | 
          ---
description: sloppy direct eval in params introduces var (async generator method in sloppy code)
esid: sec-asyncgenerator-definitions-propertydefinitionevaluation
features: [default-parameters, async-iteration]
flags: [generated, noStrict]
info: |
    AsyncGeneratorMethod :
        async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
            { AsyncGeneratorBody }
    1. Let propKey be the result of evaluating PropertyName.
    2. ReturnIfAbrupt(propKey).
    3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
       Otherwise let strict be false.
    4. Let scope be the running execution context's LexicalEnvironment.
    5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
       AsyncGeneratorBody, scope, strict).
    [...]
    
    Runtime Semantics: IteratorBindingInitialization
    FormalParameter : BindingElement
    1. Return the result of performing IteratorBindingInitialization for BindingElement with arguments iteratorRecord and environment.
--- | 
          1536 | 
        
        
          | async-gen-meth-object-destructuring-param-strict-body.js | 
          ---
description: ObjectBindingPattern and Use Strict Directive are not allowed to coexist for the same function. (async generator method)
esid: sec-asyncgenerator-definitions-propertydefinitionevaluation
features: [rest-parameters, async-iteration]
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    AsyncGeneratorMethod :
        async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
            { AsyncGeneratorBody }
    1. Let propKey be the result of evaluating PropertyName.
    2. ReturnIfAbrupt(propKey).
    3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
       Otherwise let strict be false.
    4. Let scope be the running execution context's LexicalEnvironment.
    5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
       AsyncGeneratorBody, scope, strict).
    [...]
    13.3.3.4 Static Semantics: IsSimpleParameterList
    BindingElement : BindingPattern
    1. Return false.
    14.1.2 Static Semantics: Early Errors
    FunctionDeclaration : function BindingIdentifier ( FormalParameters ) { FunctionBody }
    FunctionDeclaration : function ( FormalParameters ) { FunctionBody }
    FunctionExpression : function BindingIdentifier ( FormalParameters ) { FunctionBody }
    - It is a Syntax Error if ContainsUseStrict of FunctionBody is true and
      IsSimpleParameterList of FormalParameters is false.
    14.2.1 Static Semantics: Early Errors
    ArrowFunction : ArrowParameters => ConciseBody
    - It is a Syntax Error if ContainsUseStrict of ConciseBody is true and
      IsSimpleParameterList of ArrowParameters is false.
    14.3.1 Static Semantics: Early Errors
    MethodDefinition : PropertyName ( UniqueFormalParameters ) { FunctionBody }
    - It is a Syntax Error if ContainsUseStrict of FunctionBody is true and
      IsSimpleParameterList of UniqueFormalParameters is false.
    MethodDefinition : set PropertyName ( PropertySetParameterList ) { FunctionBody }
    - It is a Syntax Error if ContainsUseStrict of FunctionBody is true and
      IsSimpleParameterList of PropertySetParameterList is false.
    14.4.1 Static Semantics: Early Errors
    GeneratorMethod : * PropertyName ( UniqueFormalParameters ) { GeneratorBody }
    - It is a Syntax Error if ContainsUseStrict of GeneratorBody is true and
      IsSimpleParameterList of UniqueFormalParameters is false.
    GeneratorDeclaration : function * BindingIdentifier ( FormalParameters ) { GeneratorBody }
    GeneratorDeclaration : function * ( FormalParameters ) { GeneratorBody }
    GeneratorExpression : function * BindingIdentifier ( FormalParameters ) { GeneratorBody }
    - It is a Syntax Error if ContainsUseStrict of GeneratorBody is true and
      IsSimpleParameterList of UniqueFormalParameters is false.
    14.5.1 Static Semantics: Early Errors
    AsyncGeneratorMethod : async * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    - It is a Syntax Error if ContainsUseStrict of AsyncGeneratorBody is true and
      IsSimpleParameterList of UniqueFormalParameters is false.
    AsyncGeneratorDeclaration : async function * BindingIdentifier ( FormalParameters ) { AsyncGeneratorBody }
    AsyncGeneratorDeclaration : async function * ( FormalParameters ) { AsyncGeneratorBody }
    AsyncGeneratorExpression : async function * BindingIdentifier ( FormalParameters ) { AsyncGeneratorBody }
    - It is a Syntax Error if ContainsUseStrict of AsyncGeneratorBody is true and
      IsSimpleParameterList of FormalParameters is false.
    14.7.1 Static Semantics: Early Errors
    AsyncMethod : async PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
    - It is a Syntax Error if ContainsUseStrict of AsyncFunctionBody is true and
      IsSimpleParameterList of UniqueFormalParameters is false.
    AsyncFunctionDeclaration : async function BindingIdentifier ( FormalParameters ) { AsyncFunctionBody }
    AsyncFunctionDeclaration : async function ( FormalParameters ) { AsyncFunctionBody }
    AsyncFunctionExpression : async function ( FormalParameters ) { AsyncFunctionBody }
    AsyncFunctionExpression : async function BindingIdentifier ( FormalParameters ) { AsyncFunctionBody }
    - It is a Syntax Error if ContainsUseStrict of AsyncFunctionBody is true and
      IsSimpleParameterList of FormalParameters is false.
    14.8.1 Static Semantics: Early Errors
    AsyncArrowFunction : CoverCallExpressionAndAsyncArrowHead => AsyncConciseBody
    - It is a Syntax Error if ContainsUseStrict of AsyncConciseBody is true and
      IsSimpleParameterList of CoverCallExpressionAndAsyncArrowHead is false.
--- | 
          4999 | 
        
        
          | async-gen-meth-params-trailing-comma-multiple.js | 
          ---
description: A trailing comma should not increase the respective length, using multiple parameters (async generator method)
esid: sec-asyncgenerator-definitions-propertydefinitionevaluation
features: [async-iteration]
flags: [generated, async]
info: |
    AsyncGeneratorMethod :
        async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
            { AsyncGeneratorBody }
    1. Let propKey be the result of evaluating PropertyName.
    2. ReturnIfAbrupt(propKey).
    3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
       Otherwise let strict be false.
    4. Let scope be the running execution context's LexicalEnvironment.
    5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
       AsyncGeneratorBody, scope, strict).
    [...]
    Trailing comma in the parameters list
    14.1 Function Definitions
    FormalParameters[Yield, Await] : FormalParameterList[?Yield, ?Await] ,
--- | 
          1622 | 
        
        
          | async-gen-meth-params-trailing-comma-single.js | 
          ---
description: A trailing comma should not increase the respective length, using a single parameter (async generator method)
esid: sec-asyncgenerator-definitions-propertydefinitionevaluation
features: [async-iteration]
flags: [generated, async]
info: |
    AsyncGeneratorMethod :
        async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
            { AsyncGeneratorBody }
    1. Let propKey be the result of evaluating PropertyName.
    2. ReturnIfAbrupt(propKey).
    3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
       Otherwise let strict be false.
    4. Let scope be the running execution context's LexicalEnvironment.
    5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
       AsyncGeneratorBody, scope, strict).
    [...]
    Trailing comma in the parameters list
    14.1 Function Definitions
    FormalParameters[Yield, Await] : FormalParameterList[?Yield, ?Await] ,
--- | 
          1584 | 
        
        
          | async-gen-meth-rest-param-strict-body.js | 
          ---
description: RestParameter and Use Strict Directive are not allowed to coexist for the same function. (async generator method)
esid: sec-asyncgenerator-definitions-propertydefinitionevaluation
features: [rest-parameters, async-iteration]
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    AsyncGeneratorMethod :
        async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
            { AsyncGeneratorBody }
    1. Let propKey be the result of evaluating PropertyName.
    2. ReturnIfAbrupt(propKey).
    3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
       Otherwise let strict be false.
    4. Let scope be the running execution context's LexicalEnvironment.
    5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
       AsyncGeneratorBody, scope, strict).
    [...]
    14.1.13 Static Semantics: IsSimpleParameterList
    FormalParameters : FormalParameterList , FunctionRestParameter
    1. Return false.
    14.1.2 Static Semantics: Early Errors
    FunctionDeclaration : function BindingIdentifier ( FormalParameters ) { FunctionBody }
    FunctionDeclaration : function ( FormalParameters ) { FunctionBody }
    FunctionExpression : function BindingIdentifier ( FormalParameters ) { FunctionBody }
    - It is a Syntax Error if ContainsUseStrict of FunctionBody is true and
      IsSimpleParameterList of FormalParameters is false.
    14.2.1 Static Semantics: Early Errors
    ArrowFunction : ArrowParameters => ConciseBody
    - It is a Syntax Error if ContainsUseStrict of ConciseBody is true and
      IsSimpleParameterList of ArrowParameters is false.
    14.3.1 Static Semantics: Early Errors
    MethodDefinition : PropertyName ( UniqueFormalParameters ) { FunctionBody }
    - It is a Syntax Error if ContainsUseStrict of FunctionBody is true and
      IsSimpleParameterList of UniqueFormalParameters is false.
    MethodDefinition : set PropertyName ( PropertySetParameterList ) { FunctionBody }
    - It is a Syntax Error if ContainsUseStrict of FunctionBody is true and
      IsSimpleParameterList of PropertySetParameterList is false.
    14.4.1 Static Semantics: Early Errors
    GeneratorMethod : * PropertyName ( UniqueFormalParameters ) { GeneratorBody }
    - It is a Syntax Error if ContainsUseStrict of GeneratorBody is true and
      IsSimpleParameterList of UniqueFormalParameters is false.
    GeneratorDeclaration : function * BindingIdentifier ( FormalParameters ) { GeneratorBody }
    GeneratorDeclaration : function * ( FormalParameters ) { GeneratorBody }
    GeneratorExpression : function * BindingIdentifier ( FormalParameters ) { GeneratorBody }
    - It is a Syntax Error if ContainsUseStrict of GeneratorBody is true and
      IsSimpleParameterList of UniqueFormalParameters is false.
    14.5.1 Static Semantics: Early Errors
    AsyncGeneratorMethod : async * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    - It is a Syntax Error if ContainsUseStrict of AsyncGeneratorBody is true and
      IsSimpleParameterList of UniqueFormalParameters is false.
    AsyncGeneratorDeclaration : async function * BindingIdentifier ( FormalParameters ) { AsyncGeneratorBody }
    AsyncGeneratorDeclaration : async function * ( FormalParameters ) { AsyncGeneratorBody }
    AsyncGeneratorExpression : async function * BindingIdentifier ( FormalParameters ) { AsyncGeneratorBody }
    - It is a Syntax Error if ContainsUseStrict of AsyncGeneratorBody is true and
      IsSimpleParameterList of FormalParameters is false.
    14.7.1 Static Semantics: Early Errors
    AsyncMethod : async PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
    - It is a Syntax Error if ContainsUseStrict of AsyncFunctionBody is true and
      IsSimpleParameterList of UniqueFormalParameters is false.
    AsyncFunctionDeclaration : async function BindingIdentifier ( FormalParameters ) { AsyncFunctionBody }
    AsyncFunctionDeclaration : async function ( FormalParameters ) { AsyncFunctionBody }
    AsyncFunctionExpression : async function ( FormalParameters ) { AsyncFunctionBody }
    AsyncFunctionExpression : async function BindingIdentifier ( FormalParameters ) { AsyncFunctionBody }
    - It is a Syntax Error if ContainsUseStrict of AsyncFunctionBody is true and
      IsSimpleParameterList of FormalParameters is false.
    14.8.1 Static Semantics: Early Errors
    AsyncArrowFunction : CoverCallExpressionAndAsyncArrowHead => AsyncConciseBody
    - It is a Syntax Error if ContainsUseStrict of AsyncConciseBody is true and
      IsSimpleParameterList of CoverCallExpressionAndAsyncArrowHead is false.
--- | 
          5005 | 
        
        
          | async-gen-meth-rest-params-trailing-comma-early-error.js | 
          ---
description: It's a syntax error if a FunctionRestParameter is followed by a trailing comma (async generator method)
esid: sec-asyncgenerator-definitions-propertydefinitionevaluation
features: [async-iteration]
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    AsyncGeneratorMethod :
        async [no LineTerminator here] * PropertyName ( UniqueFormalParameters )
            { AsyncGeneratorBody }
    1. Let propKey be the result of evaluating PropertyName.
    2. ReturnIfAbrupt(propKey).
    3. If the function code for this AsyncGeneratorMethod is strict mode code, let strict be true.
       Otherwise let strict be false.
    4. Let scope be the running execution context's LexicalEnvironment.
    5. Let closure be ! AsyncGeneratorFunctionCreate(Method, UniqueFormalParameters,
       AsyncGeneratorBody, scope, strict).
    [...]
    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]
--- | 
          1511 | 
        
        
          | async-gen-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. (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [async-iteration]
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    BindingIdentifier : Identifier
    It is a Syntax Error if this production has a [Yield] parameter and
    StringValue of Identifier is "yield".
--- | 
          915 | 
        
        
          | async-gen-yield-as-binding-identifier.js | 
          ---
description: yield is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [async-iteration]
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    BindingIdentifier : Identifier
    It is a Syntax Error if this production has a [Yield] parameter and
    StringValue of Identifier is "yield".
--- | 
          902 | 
        
        
          | async-gen-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. (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [async-iteration]
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    IdentifierReference : Identifier
    It is a Syntax Error if this production has a [Yield] parameter and
    StringValue of Identifier is "yield".
--- | 
          923 | 
        
        
          | async-gen-yield-as-identifier-reference.js | 
          ---
description: yield is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [async-iteration]
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    IdentifierReference : Identifier
    It is a Syntax Error if this production has a [Yield] parameter and
    StringValue of Identifier is "yield".
--- | 
          910 | 
        
        
          | async-gen-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. (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [async-iteration]
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    LabelIdentifier : Identifier
    It is a Syntax Error if this production has a [Yield] parameter and
    StringValue of Identifier is "yield".
--- | 
          907 | 
        
        
          | async-gen-yield-as-label-identifier.js | 
          ---
description: yield is a reserved keyword within generator function bodies and may not be used as a label identifier. (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [async-iteration]
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    LabelIdentifier : Identifier
    It is a Syntax Error if this production has a [Yield] parameter and
    StringValue of Identifier is "yield".
--- | 
          894 | 
        
        
          | async-gen-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 method - valid for non-strict only cases)
esid: prod-AsyncGeneratorMethod
features: [async-iteration]
flags: [generated, noStrict, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
--- | 
          1172 | 
        
        
          | async-gen-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 method - valid for non-strict only cases)
esid: prod-AsyncGeneratorMethod
features: [object-spread, Symbol, async-iteration]
flags: [generated, noStrict, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    Spread Properties
    PropertyDefinition[Yield]:
      (...)
      ...AssignmentExpression[In, ?Yield]
--- | 
          1747 | 
        
        
          | async-gen-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. (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [object-spread, async-iteration]
flags: [generated, onlyStrict]
negative:
  phase: parse
  type: SyntaxError
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    Spread Properties
    PropertyDefinition[Yield]:
      (...)
      ...AssignmentExpression[In, ?Yield]
--- | 
          1119 | 
        
        
          | async-gen-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. (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [async-iteration]
flags: [generated, onlyStrict]
negative:
  phase: parse
  type: SyntaxError
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
--- | 
          947 | 
        
        
          | async-gen-yield-promise-reject-next-catch.js | 
          ---
description: yield Promise.reject(value) is treated as throw value (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
--- | 
          1256 | 
        
        
          | async-gen-yield-promise-reject-next-for-await-of-async-iterator.js | 
          ---
description: yield * [Promise.reject(value)] is treated as throw value (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
--- | 
          1383 | 
        
        
          | async-gen-yield-promise-reject-next-for-await-of-sync-iterator.js | 
          ---
description: yield Promise.reject(value) in for-await-of is treated as throw value (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
--- | 
          1368 | 
        
        
          | async-gen-yield-promise-reject-next-yield-star-async-iterator.js | 
          ---
description: yield * (async iterator) is treated as throw value (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
--- | 
          1340 | 
        
        
          | async-gen-yield-promise-reject-next-yield-star-sync-iterator.js | 
          ---
description: yield * (async iterator) is treated as throw value (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
--- | 
          1304 | 
        
        
          | async-gen-yield-promise-reject-next.js | 
          ---
description: yield Promise.reject(value) is treated as throw value (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
--- | 
          1257 | 
        
        
          | async-gen-yield-spread-arr-multiple.js | 
          ---
description: Use yield value in a array spread position (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [async-iteration]
flags: [generated, async]
includes: [compareArray.js]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    Array Initializer
    SpreadElement[Yield, Await]:
      ...AssignmentExpression[+In, ?Yield, ?Await]
--- | 
          1169 | 
        
        
          | async-gen-yield-spread-arr-single.js | 
          ---
description: Use yield value in a array spread position (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    Array Initializer
    SpreadElement[Yield, Await]:
      ...AssignmentExpression[+In, ?Yield, ?Await]
--- | 
          1261 | 
        
        
          | async-gen-yield-spread-obj.js | 
          ---
description: Use yield value in a object spread position (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [object-spread, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    Spread Properties
    PropertyDefinition[Yield]:
      (...)
      ...AssignmentExpression[In, ?Yield]
--- | 
          1196 | 
        
        
          | async-gen-yield-star-async-next.js | 
          ---
description: Execution order for yield* with async iterator and next() (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, async-iteration, Symbol.asyncIterator]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    
--- | 
          7200 | 
        
        
          | async-gen-yield-star-async-return.js | 
          ---
description: execution order for yield* with async iterator and return() (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [async-iteration, Symbol.asyncIterator]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    ...
    6. Repeat
      ...
      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 generatorKind is async, then set innerReturnResult to ? Await(innerReturnResult).
        ...
        vii. Let done be ? IteratorComplete(innerReturnResult).
        viii. If done is true, then
             1. Let value be ? IteratorValue(innerReturnResult).
             2. If generatorKind is async, then set value to ? Await(value).
             3. Return Completion{[[Type]]: return, [[Value]]: value, [[Target]]: empty}.
        ix. If generatorKind is async, then let received be AsyncGeneratorYield(? IteratorValue(innerResult)).
        ...
    AsyncGeneratorYield ( value )
    ...
    8. Return ! AsyncGeneratorResolve(generator, value, false).
    ...
--- | 
          7909 | 
        
        
          | async-gen-yield-star-async-throw.js | 
          ---
description: execution order for yield* with async iterator and throw() (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [async-iteration, Symbol.asyncIterator]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    ...
    6. Repeat
      ...
      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. If generatorKind is async, then set innerResult to ? Await(innerResult).
          ...
          5. Let done be ? IteratorComplete(innerResult).
          6. If done is true, then
            a. Let resultValue be Return ? IteratorValue(innerResult).
            b. If generatorKind is async, then set resultValue to ? Await(resultValue).
            c. Return resultValue.
          7. If generatorKind is async, then let received be AsyncGeneratorYield(? IteratorValue(innerResult)).
      ...
    AsyncGeneratorYield ( value )
    ...
    8. Return ! AsyncGeneratorResolve(generator, value, false).
    ...
--- | 
          7941 | 
        
        
          | async-gen-yield-star-expr-abrupt.js | 
          ---
description: Abrupt completion while getting yield* operand (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    1. Let exprRef be the result of evaluating AssignmentExpression.
    2. Let value be ? GetValue(exprRef).
    ...
--- | 
          1367 | 
        
        
          | async-gen-yield-star-getiter-async-get-abrupt.js | 
          ---
description: Abrupt completion while getting [Symbol.asyncIterator] (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, Symbol.asyncIterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    1. Let exprRef be the result of evaluating AssignmentExpression.
    2. Let value be ? GetValue(exprRef).
    3. Let generatorKind be ! GetGeneratorKind().
    4. Let iterator be ? GetIterator(value, generatorKind).
    ...
    GetIterator ( obj [ , hint ] )
    ...
    3. If hint is async,
      a. Set method to ? GetMethod(obj, @@asyncIterator).
    ...
    GetMethod ( V, P )
    ...
    2. Let func be ? GetV(V, P).
    ...
--- | 
          1874 | 
        
        
          | async-gen-yield-star-getiter-async-not-callable-boolean-throw.js | 
          ---
description: Throws a TypeError on a non-callable [Symbol.asyncIterator] (boolean) (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, Symbol.asyncIterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    1. Let exprRef be the result of evaluating AssignmentExpression.
    2. Let value be ? GetValue(exprRef).
    3. Let generatorKind be ! GetGeneratorKind().
    4. Let iterator be ? GetIterator(value, generatorKind).
    ...
    GetIterator ( obj [ , hint ] )
    ...
    3. If hint is async,
      a. Set method to ? GetMethod(obj, @@asyncIterator).
    ...
    GetMethod ( V, P )
    ...
    2. Let func be ? GetV(V, P).
    3. If func is either undefined or null, return undefined.
    4. If IsCallable(func) is false, throw a TypeError exception.
    ...
--- | 
          2004 | 
        
        
          | async-gen-yield-star-getiter-async-not-callable-number-throw.js | 
          ---
description: Throws a TypeError on a non-callable [Symbol.asyncIterator] (number) (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, Symbol.asyncIterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    1. Let exprRef be the result of evaluating AssignmentExpression.
    2. Let value be ? GetValue(exprRef).
    3. Let generatorKind be ! GetGeneratorKind().
    4. Let iterator be ? GetIterator(value, generatorKind).
    ...
    GetIterator ( obj [ , hint ] )
    ...
    3. If hint is async,
      a. Set method to ? GetMethod(obj, @@asyncIterator).
    ...
    GetMethod ( V, P )
    ...
    2. Let func be ? GetV(V, P).
    3. If func is either undefined or null, return undefined.
    4. If IsCallable(func) is false, throw a TypeError exception.
    ...
--- | 
          1998 | 
        
        
          | async-gen-yield-star-getiter-async-not-callable-object-throw.js | 
          ---
description: Throws a TypeError on a non-callable [Symbol.asyncIterator] (object) (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, Symbol.asyncIterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    1. Let exprRef be the result of evaluating AssignmentExpression.
    2. Let value be ? GetValue(exprRef).
    3. Let generatorKind be ! GetGeneratorKind().
    4. Let iterator be ? GetIterator(value, generatorKind).
    ...
    GetIterator ( obj [ , hint ] )
    ...
    3. If hint is async,
      a. Set method to ? GetMethod(obj, @@asyncIterator).
    ...
    GetMethod ( V, P )
    ...
    2. Let func be ? GetV(V, P).
    3. If func is either undefined or null, return undefined.
    4. If IsCallable(func) is false, throw a TypeError exception.
    ...
--- | 
          1999 | 
        
        
          | async-gen-yield-star-getiter-async-not-callable-string-throw.js | 
          ---
description: Throws a TypeError on a non-callable [Symbol.asyncIterator] (string) (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, Symbol.asyncIterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    1. Let exprRef be the result of evaluating AssignmentExpression.
    2. Let value be ? GetValue(exprRef).
    3. Let generatorKind be ! GetGeneratorKind().
    4. Let iterator be ? GetIterator(value, generatorKind).
    ...
    GetIterator ( obj [ , hint ] )
    ...
    3. If hint is async,
      a. Set method to ? GetMethod(obj, @@asyncIterator).
    ...
    GetMethod ( V, P )
    ...
    2. Let func be ? GetV(V, P).
    3. If func is either undefined or null, return undefined.
    4. If IsCallable(func) is false, throw a TypeError exception.
    ...
--- | 
          1999 | 
        
        
          | async-gen-yield-star-getiter-async-not-callable-symbol-throw.js | 
          ---
description: Throws a TypeError on a non-callable [Symbol.asyncIterator] (symbol) (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, Symbol.asyncIterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    1. Let exprRef be the result of evaluating AssignmentExpression.
    2. Let value be ? GetValue(exprRef).
    3. Let generatorKind be ! GetGeneratorKind().
    4. Let iterator be ? GetIterator(value, generatorKind).
    ...
    GetIterator ( obj [ , hint ] )
    ...
    3. If hint is async,
      a. Set method to ? GetMethod(obj, @@asyncIterator).
    ...
    GetMethod ( V, P )
    ...
    2. Let func be ? GetV(V, P).
    3. If func is either undefined or null, return undefined.
    4. If IsCallable(func) is false, throw a TypeError exception.
    ...
--- | 
          2017 | 
        
        
          | async-gen-yield-star-getiter-async-null-sync-get-abrupt.js | 
          ---
description: Abrupt completion while getting @@iterator after null @@asyncIterator (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, Symbol.asyncIterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    1. Let exprRef be the result of evaluating AssignmentExpression.
    2. Let value be ? GetValue(exprRef).
    3. Let generatorKind be ! GetGeneratorKind().
    4. Let iterator be ? GetIterator(value, generatorKind).
    ...
    GetIterator ( obj [ , hint ] )
    ...
    3. If hint is async,
      a. Set method to ? GetMethod(obj, @@asyncIterator).
      b. If method is undefined,
        i. Let syncMethod be ? GetMethod(obj, @@iterator).
    ...
    GetMethod ( V, P )
    ...
    2. Let func be ? GetV(V, P).
    ...
--- | 
          2004 | 
        
        
          | async-gen-yield-star-getiter-async-returns-abrupt.js | 
          ---
description: Abrupt completion while calling [Symbol.asyncIterator] (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, Symbol.asyncIterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    1. Let exprRef be the result of evaluating AssignmentExpression.
    2. Let value be ? GetValue(exprRef).
    3. Let generatorKind be ! GetGeneratorKind().
    4. Let iterator be ? GetIterator(value, generatorKind).
    ...
    GetIterator ( obj [ , hint ] )
    ...
    3. If hint is async,
      a. Set method to ? GetMethod(obj, @@asyncIterator).
    ...
    6. Let iterator be ? Call(method, obj).
    ...
--- | 
          1852 | 
        
        
          | async-gen-yield-star-getiter-async-returns-boolean-throw.js | 
          ---
description: Non object returned by [Symbol.asyncIterator]() - boolean (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, Symbol.asyncIterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    1. Let exprRef be the result of evaluating AssignmentExpression.
    2. Let value be ? GetValue(exprRef).
    3. Let generatorKind be ! GetGeneratorKind().
    4. Let iterator be ? GetIterator(value, generatorKind).
    ...
    GetIterator ( obj [ , hint ] )
    ...
    3. If hint is async,
      a. Set method to ? GetMethod(obj, @@asyncIterator).
    ...
    6. Let iterator be ? Call(method, obj).
    7. If Type(iterator) is not Object, throw a TypeError exception.
    ...
--- | 
          1924 | 
        
        
          | async-gen-yield-star-getiter-async-returns-null-throw.js | 
          ---
description: Non object returned by [Symbol.asyncIterator]() - null (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, Symbol.asyncIterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    1. Let exprRef be the result of evaluating AssignmentExpression.
    2. Let value be ? GetValue(exprRef).
    3. Let generatorKind be ! GetGeneratorKind().
    4. Let iterator be ? GetIterator(value, generatorKind).
    ...
    GetIterator ( obj [ , hint ] )
    ...
    3. If hint is async,
      a. Set method to ? GetMethod(obj, @@asyncIterator).
    ...
    6. Let iterator be ? Call(method, obj).
    7. If Type(iterator) is not Object, throw a TypeError exception.
    ...
--- | 
          1918 | 
        
        
          | async-gen-yield-star-getiter-async-returns-number-throw.js | 
          ---
description: Non object returned by [Symbol.asyncIterator]() - number (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, Symbol.asyncIterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    1. Let exprRef be the result of evaluating AssignmentExpression.
    2. Let value be ? GetValue(exprRef).
    3. Let generatorKind be ! GetGeneratorKind().
    4. Let iterator be ? GetIterator(value, generatorKind).
    ...
    GetIterator ( obj [ , hint ] )
    ...
    3. If hint is async,
      a. Set method to ? GetMethod(obj, @@asyncIterator).
    ...
    6. Let iterator be ? Call(method, obj).
    7. If Type(iterator) is not Object, throw a TypeError exception.
    ...
--- | 
          1920 | 
        
        
          | async-gen-yield-star-getiter-async-returns-string-throw.js | 
          ---
description: Non object returned by [Symbol.asyncIterator]() - string (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, Symbol.asyncIterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    1. Let exprRef be the result of evaluating AssignmentExpression.
    2. Let value be ? GetValue(exprRef).
    3. Let generatorKind be ! GetGeneratorKind().
    4. Let iterator be ? GetIterator(value, generatorKind).
    ...
    GetIterator ( obj [ , hint ] )
    ...
    3. If hint is async,
      a. Set method to ? GetMethod(obj, @@asyncIterator).
    ...
    6. Let iterator be ? Call(method, obj).
    7. If Type(iterator) is not Object, throw a TypeError exception.
    ...
--- | 
          1922 | 
        
        
          | async-gen-yield-star-getiter-async-returns-symbol-throw.js | 
          ---
description: Non object returned by [Symbol.asyncIterator]() - symbol (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, Symbol.asyncIterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    1. Let exprRef be the result of evaluating AssignmentExpression.
    2. Let value be ? GetValue(exprRef).
    3. Let generatorKind be ! GetGeneratorKind().
    4. Let iterator be ? GetIterator(value, generatorKind).
    ...
    GetIterator ( obj [ , hint ] )
    ...
    3. If hint is async,
      a. Set method to ? GetMethod(obj, @@asyncIterator).
    ...
    6. Let iterator be ? Call(method, obj).
    7. If Type(iterator) is not Object, throw a TypeError exception.
    ...
--- | 
          1938 | 
        
        
          | async-gen-yield-star-getiter-async-returns-undefined-throw.js | 
          ---
description: Non object returned by [Symbol.asyncIterator]() - undefined (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, Symbol.asyncIterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    1. Let exprRef be the result of evaluating AssignmentExpression.
    2. Let value be ? GetValue(exprRef).
    3. Let generatorKind be ! GetGeneratorKind().
    4. Let iterator be ? GetIterator(value, generatorKind).
    ...
    GetIterator ( obj [ , hint ] )
    ...
    3. If hint is async,
      a. Set method to ? GetMethod(obj, @@asyncIterator).
    ...
    6. Let iterator be ? Call(method, obj).
    7. If Type(iterator) is not Object, throw a TypeError exception.
    ...
--- | 
          1933 | 
        
        
          | async-gen-yield-star-getiter-async-undefined-sync-get-abrupt.js | 
          ---
description: Abrupt completion while getting @@iterator after undefined @@asyncIterator (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, Symbol.asyncIterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    1. Let exprRef be the result of evaluating AssignmentExpression.
    2. Let value be ? GetValue(exprRef).
    3. Let generatorKind be ! GetGeneratorKind().
    4. Let iterator be ? GetIterator(value, generatorKind).
    ...
    GetIterator ( obj [ , hint ] )
    ...
    3. If hint is async,
      a. Set method to ? GetMethod(obj, @@asyncIterator).
      b. If method is undefined,
        i. Let syncMethod be ? GetMethod(obj, @@iterator).
    ...
    GetMethod ( V, P )
    ...
    2. Let func be ? GetV(V, P).
    ...
--- | 
          2019 | 
        
        
          | async-gen-yield-star-getiter-sync-get-abrupt.js | 
          ---
description: Abrupt completion while getting [Symbol.iterator] (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, Symbol.asyncIterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    1. Let exprRef be the result of evaluating AssignmentExpression.
    2. Let value be ? GetValue(exprRef).
    3. Let generatorKind be ! GetGeneratorKind().
    4. Let iterator be ? GetIterator(value, generatorKind).
    ...
    GetIterator ( obj [ , hint ] )
    ...
    3. If hint is async,
      a. Set method to ? GetMethod(obj, @@asyncIterator).
      b. If method is undefined,
        i. Let syncMethod be ? GetMethod(obj, @@iterator).
    ...
    GetMethod ( V, P )
    ...
    2. Let func be ? GetV(V, P).
    ...
--- | 
          1857 | 
        
        
          | async-gen-yield-star-getiter-sync-not-callable-boolean-throw.js | 
          ---
description: Throws a TypeError on a non-callable [Symbol.iterator] (boolean) (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    1. Let exprRef be the result of evaluating AssignmentExpression.
    2. Let value be ? GetValue(exprRef).
    3. Let generatorKind be ! GetGeneratorKind().
    4. Let iterator be ? GetIterator(value, generatorKind).
    ...
    GetIterator ( obj [ , hint ] )
    ...
    3. If hint is async,
      a. Set method to ? GetMethod(obj, @@asyncIterator).
      b. If method is undefined,
        i. Let syncMethod be ? GetMethod(obj, @@iterator).
    ...
    GetMethod ( V, P )
    ...
    2. Let func be ? GetV(V, P).
    ...
    4. If IsCallable(func) is false, throw a TypeError exception.
    ...
--- | 
          1911 | 
        
        
          | async-gen-yield-star-getiter-sync-not-callable-number-throw.js | 
          ---
description: Throws a TypeError on a non-callable [Symbol.iterator] (number) (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    1. Let exprRef be the result of evaluating AssignmentExpression.
    2. Let value be ? GetValue(exprRef).
    3. Let generatorKind be ! GetGeneratorKind().
    4. Let iterator be ? GetIterator(value, generatorKind).
    ...
    GetIterator ( obj [ , hint ] )
    ...
    3. If hint is async,
      a. Set method to ? GetMethod(obj, @@asyncIterator).
      b. If method is undefined,
        i. Let syncMethod be ? GetMethod(obj, @@iterator).
    ...
    GetMethod ( V, P )
    ...
    2. Let func be ? GetV(V, P).
    ...
    4. If IsCallable(func) is false, throw a TypeError exception.
    ...
--- | 
          1905 | 
        
        
          | async-gen-yield-star-getiter-sync-not-callable-object-throw.js | 
          ---
description: Throws a TypeError on a non-callable [Symbol.iterator] (object) (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    1. Let exprRef be the result of evaluating AssignmentExpression.
    2. Let value be ? GetValue(exprRef).
    3. Let generatorKind be ! GetGeneratorKind().
    4. Let iterator be ? GetIterator(value, generatorKind).
    ...
    GetIterator ( obj [ , hint ] )
    ...
    3. If hint is async,
      a. Set method to ? GetMethod(obj, @@asyncIterator).
      b. If method is undefined,
        i. Let syncMethod be ? GetMethod(obj, @@iterator).
    ...
    GetMethod ( V, P )
    ...
    2. Let func be ? GetV(V, P).
    ...
    4. If IsCallable(func) is false, throw a TypeError exception.
    ...
--- | 
          1906 | 
        
        
          | async-gen-yield-star-getiter-sync-not-callable-string-throw.js | 
          ---
description: Throws a TypeError on a non-callable [Symbol.iterator] (string) (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    1. Let exprRef be the result of evaluating AssignmentExpression.
    2. Let value be ? GetValue(exprRef).
    3. Let generatorKind be ! GetGeneratorKind().
    4. Let iterator be ? GetIterator(value, generatorKind).
    ...
    GetIterator ( obj [ , hint ] )
    ...
    3. If hint is async,
      a. Set method to ? GetMethod(obj, @@asyncIterator).
      b. If method is undefined,
        i. Let syncMethod be ? GetMethod(obj, @@iterator).
    ...
    GetMethod ( V, P )
    ...
    2. Let func be ? GetV(V, P).
    ...
    4. If IsCallable(func) is false, throw a TypeError exception.
    ...
--- | 
          1906 | 
        
        
          | async-gen-yield-star-getiter-sync-not-callable-symbol-throw.js | 
          ---
description: Throws a TypeError on a non-callable [Symbol.iterator] (symbol) (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, Symbol.asyncIterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    1. Let exprRef be the result of evaluating AssignmentExpression.
    2. Let value be ? GetValue(exprRef).
    3. Let generatorKind be ! GetGeneratorKind().
    4. Let iterator be ? GetIterator(value, generatorKind).
    ...
    GetIterator ( obj [ , hint ] )
    ...
    3. If hint is async,
      a. Set method to ? GetMethod(obj, @@asyncIterator).
      b. If method is undefined,
        i. Let syncMethod be ? GetMethod(obj, @@iterator).
    ...
    GetMethod ( V, P )
    ...
    2. Let func be ? GetV(V, P).
    ...
    4. If IsCallable(func) is false, throw a TypeError exception.
    ...
--- | 
          1941 | 
        
        
          | async-gen-yield-star-getiter-sync-returns-abrupt.js | 
          ---
description: Abrupt completion while calling [Symbol.iterator] (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, Symbol.asyncIterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    1. Let exprRef be the result of evaluating AssignmentExpression.
    2. Let value be ? GetValue(exprRef).
    3. Let generatorKind be ! GetGeneratorKind().
    4. Let iterator be ? GetIterator(value, generatorKind).
    ...
    GetIterator ( obj [ , hint ] )
    ...
    3. If hint is async,
      a. Set method to ? GetMethod(obj, @@asyncIterator).
        i. Let syncMethod be ? GetMethod(obj, @@iterator).
        ii. Let syncIterator be ? Call(syncMethod, obj).
    ...
--- | 
          1807 | 
        
        
          | async-gen-yield-star-getiter-sync-returns-boolean-throw.js | 
          ---
description: Non object returned by [Symbol.iterator]() - boolean (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    1. Let exprRef be the result of evaluating AssignmentExpression.
    2. Let value be ? GetValue(exprRef).
    3. Let generatorKind be ! GetGeneratorKind().
    4. Let iterator be ? GetIterator(value, generatorKind).
    ...
    GetIterator ( obj [ , hint ] )
    ...
    3. If hint is async,
      a. Set method to ? GetMethod(obj, @@asyncIterator).
        i. Let syncMethod be ? GetMethod(obj, @@iterator).
        ii. Let syncIterator be ? Call(syncMethod, obj).
        iii. Return ? CreateAsyncFromSyncIterator(syncIterator).
    ...
    CreateAsyncFromSyncIterator(syncIterator)
    1. If Type(syncIterator) is not Object, throw a TypeError exception.
    ...
--- | 
          1982 | 
        
        
          | async-gen-yield-star-getiter-sync-returns-null-throw.js | 
          ---
description: Non object returned by [Symbol.iterator]() - null (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    1. Let exprRef be the result of evaluating AssignmentExpression.
    2. Let value be ? GetValue(exprRef).
    3. Let generatorKind be ! GetGeneratorKind().
    4. Let iterator be ? GetIterator(value, generatorKind).
    ...
    GetIterator ( obj [ , hint ] )
    ...
    3. If hint is async,
      a. Set method to ? GetMethod(obj, @@asyncIterator).
        i. Let syncMethod be ? GetMethod(obj, @@iterator).
        ii. Let syncIterator be ? Call(syncMethod, obj).
        iii. Return ? CreateAsyncFromSyncIterator(syncIterator).
    ...
    CreateAsyncFromSyncIterator(syncIterator)
    1. If Type(syncIterator) is not Object, throw a TypeError exception.
    ...
--- | 
          1976 | 
        
        
          | async-gen-yield-star-getiter-sync-returns-number-throw.js | 
          ---
description: Non object returned by [Symbol.iterator]() - number (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    1. Let exprRef be the result of evaluating AssignmentExpression.
    2. Let value be ? GetValue(exprRef).
    3. Let generatorKind be ! GetGeneratorKind().
    4. Let iterator be ? GetIterator(value, generatorKind).
    ...
    GetIterator ( obj [ , hint ] )
    ...
    3. If hint is async,
      a. Set method to ? GetMethod(obj, @@asyncIterator).
        i. Let syncMethod be ? GetMethod(obj, @@iterator).
        ii. Let syncIterator be ? Call(syncMethod, obj).
        iii. Return ? CreateAsyncFromSyncIterator(syncIterator).
    ...
    CreateAsyncFromSyncIterator(syncIterator)
    1. If Type(syncIterator) is not Object, throw a TypeError exception.
    ...
--- | 
          1977 | 
        
        
          | async-gen-yield-star-getiter-sync-returns-string-throw.js | 
          ---
description: Non object returned by [Symbol.iterator]() - string (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    1. Let exprRef be the result of evaluating AssignmentExpression.
    2. Let value be ? GetValue(exprRef).
    3. Let generatorKind be ! GetGeneratorKind().
    4. Let iterator be ? GetIterator(value, generatorKind).
    ...
    GetIterator ( obj [ , hint ] )
    ...
    3. If hint is async,
      a. Set method to ? GetMethod(obj, @@asyncIterator).
        i. Let syncMethod be ? GetMethod(obj, @@iterator).
        ii. Let syncIterator be ? Call(syncMethod, obj).
        iii. Return ? CreateAsyncFromSyncIterator(syncIterator).
    ...
    CreateAsyncFromSyncIterator(syncIterator)
    1. If Type(syncIterator) is not Object, throw a TypeError exception.
    ...
--- | 
          1978 | 
        
        
          | async-gen-yield-star-getiter-sync-returns-symbol-throw.js | 
          ---
description: Non object returned by [Symbol.iterator]() - symbol (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    1. Let exprRef be the result of evaluating AssignmentExpression.
    2. Let value be ? GetValue(exprRef).
    3. Let generatorKind be ! GetGeneratorKind().
    4. Let iterator be ? GetIterator(value, generatorKind).
    ...
    GetIterator ( obj [ , hint ] )
    ...
    3. If hint is async,
      a. Set method to ? GetMethod(obj, @@asyncIterator).
        i. Let syncMethod be ? GetMethod(obj, @@iterator).
        ii. Let syncIterator be ? Call(syncMethod, obj).
        iii. Return ? CreateAsyncFromSyncIterator(syncIterator).
    ...
    CreateAsyncFromSyncIterator(syncIterator)
    1. If Type(syncIterator) is not Object, throw a TypeError exception.
    ...
--- | 
          1991 | 
        
        
          | async-gen-yield-star-getiter-sync-returns-undefined-throw.js | 
          ---
description: Non object returned by [Symbol.iterator]() - undefined (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    1. Let exprRef be the result of evaluating AssignmentExpression.
    2. Let value be ? GetValue(exprRef).
    3. Let generatorKind be ! GetGeneratorKind().
    4. Let iterator be ? GetIterator(value, generatorKind).
    ...
    GetIterator ( obj [ , hint ] )
    ...
    3. If hint is async,
      a. Set method to ? GetMethod(obj, @@asyncIterator).
        i. Let syncMethod be ? GetMethod(obj, @@iterator).
        ii. Let syncIterator be ? Call(syncMethod, obj).
        iii. Return ? CreateAsyncFromSyncIterator(syncIterator).
    ...
    CreateAsyncFromSyncIterator(syncIterator)
    1. If Type(syncIterator) is not Object, throw a TypeError exception.
    ...
--- | 
          1991 | 
        
        
          | async-gen-yield-star-next-call-done-get-abrupt.js | 
          ---
description: Abrupt completion while getting done (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, Symbol.asyncIterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    ...
    6. Repeat
      a. If received.[[Type]] is normal, then
        ii. Let innerResult be ? Invoke(iterator, "next",
            « received.[[Value]] »).
        iii. If generatorKind is async, then set innerResult to
             ? Await(innerResult).
        ...
        v. Let done be ? IteratorComplete(innerResult).
    ...
--- | 
          1868 | 
        
        
          | async-gen-yield-star-next-call-returns-abrupt.js | 
          ---
description: Abrupt completion while calling next (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, Symbol.asyncIterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    ...
    6. Repeat
      a. If received.[[Type]] is normal, then
        ii. Let innerResult be ? Invoke(iterator, "next",
            « received.[[Value]] »).
    ...
--- | 
          1633 | 
        
        
          | async-gen-yield-star-next-call-value-get-abrupt.js | 
          ---
description: Abrupt completion while getting value (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, Symbol.asyncIterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    ...
    6. Repeat
      a. If received.[[Type]] is normal, then
        ii. Let innerResult be ? Invoke(iterator, "next",
            « received.[[Value]] »).
        iii. If generatorKind is async, then set innerResult to
             ? Await(innerResult).
        ...
        vi. If done is true, then
           1. Return ? IteratorValue(innerResult).
    ...
--- | 
          1922 | 
        
        
          | async-gen-yield-star-next-get-abrupt.js | 
          ---
description: Abrupt completion while getting next (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, Symbol.asyncIterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    ...
    6. Repeat
      a. If received.[[Type]] is normal, then
        ii. Let innerResult be ? Invoke(iterator, "next",
            « received.[[Value]] »).
    ...
--- | 
          1628 | 
        
        
          | async-gen-yield-star-next-non-object-ignores-then.js | 
          ---
description: If next() value is not-object, do not access respective then property (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, Symbol.asyncIterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    ...
    6. Repeat
      a. If received.[[Type]] is normal, then
        ii. Let innerResult be ? Invoke(iterator, "next",
            « received.[[Value]] »).
        iii. If generatorKind is async, then set innerResult to
             ? Await(innerResult).
        iv. If Type(innerResult) is not Object, throw a TypeError exception.
    ...
    Await
    ...
    2. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    3. Perform ! Call(promiseCapability.[[Resolve]], undefined, « promise »).
    ...
    Promise Resolve Functions
    ...
    7. If Type(resolution) is not Object, then
      a. Return FulfillPromise(promise, resolution).
    8. Let then be Get(resolution, "then").
    ...
--- | 
          2304 | 
        
        
          | async-gen-yield-star-next-not-callable-boolean-throw.js | 
          ---
description: Not-callable next value in a yield star position - boolean (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, Symbol.asyncIterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    ...
    6. Repeat
      a. If received.[[Type]] is normal, then
        ii. Let innerResult be ? Invoke(iterator, "next",
            « received.[[Value]] »).
    ...
--- | 
          1628 | 
        
        
          | async-gen-yield-star-next-not-callable-null-throw.js | 
          ---
description: Not-callable next value in a yield star position - null (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, Symbol.asyncIterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    ...
    6. Repeat
      a. If received.[[Type]] is normal, then
        ii. Let innerResult be ? Invoke(iterator, "next",
            « received.[[Value]] »).
    ...
--- | 
          1622 | 
        
        
          | async-gen-yield-star-next-not-callable-number-throw.js | 
          ---
description: Not-callable next value in a yield star position - number (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, Symbol.asyncIterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    ...
    6. Repeat
      a. If received.[[Type]] is normal, then
        ii. Let innerResult be ? Invoke(iterator, "next",
            « received.[[Value]] »).
    ...
--- | 
          1624 | 
        
        
          | async-gen-yield-star-next-not-callable-object-throw.js | 
          ---
description: Not-callable next value in a yield star position - object (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, Symbol.asyncIterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    ...
    6. Repeat
      a. If received.[[Type]] is normal, then
        ii. Let innerResult be ? Invoke(iterator, "next",
            « received.[[Value]] »).
    ...
--- | 
          1624 | 
        
        
          | async-gen-yield-star-next-not-callable-string-throw.js | 
          ---
description: Not-callable next value in a yield star position - string (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, Symbol.asyncIterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    ...
    6. Repeat
      a. If received.[[Type]] is normal, then
        ii. Let innerResult be ? Invoke(iterator, "next",
            « received.[[Value]] »).
    ...
--- | 
          1624 | 
        
        
          | async-gen-yield-star-next-not-callable-symbol-throw.js | 
          ---
description: Not-callable next value in a yield star position - symbol (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, Symbol.asyncIterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    ...
    6. Repeat
      a. If received.[[Type]] is normal, then
        ii. Let innerResult be ? Invoke(iterator, "next",
            « received.[[Value]] »).
    ...
--- | 
          1634 | 
        
        
          | async-gen-yield-star-next-not-callable-undefined-throw.js | 
          ---
description: Not-callable next value in a yield star position - undefined (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, Symbol.asyncIterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    ...
    6. Repeat
      a. If received.[[Type]] is normal, then
        ii. Let innerResult be ? Invoke(iterator, "next",
            « received.[[Value]] »).
    ...
--- | 
          1637 | 
        
        
          | async-gen-yield-star-next-then-get-abrupt.js | 
          ---
description: Return abrupt after getting next().then (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, Symbol.asyncIterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    ...
    6. Repeat
      a. If received.[[Type]] is normal, then
        ii. Let innerResult be ? Invoke(iterator, "next",
            « received.[[Value]] »).
        iii. If generatorKind is async, then set innerResult to
             ? Await(innerResult).
    ...
    Await
    ...
    2. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    3. Perform ! Call(promiseCapability.[[Resolve]], undefined, « promise »).
    ...
    Promise Resolve Functions
    ...
    8. Let then be Get(resolution, "then").
    ...
    10. Get thenAction be then.[[Value]].
    ...
    12. Perform EnqueueJob("PromiseJobs", PromiseResolveThenableJob, « promise,
        resolution, thenAction »).
    ...
--- | 
          2240 | 
        
        
          | async-gen-yield-star-next-then-non-callable-boolean-fulfillpromise.js | 
          ---
description: FulfillPromise if next().then is not-callable (boolean) (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, Symbol.asyncIterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    ...
    6. Repeat
      a. If received.[[Type]] is normal, then
        ii. Let innerResult be ? Invoke(iterator, "next",
            « received.[[Value]] »).
        iii. If generatorKind is async, then set innerResult to
             ? Await(innerResult).
        iv. If Type(innerResult) is not Object, throw a TypeError exception.
    ...
    Await
    ...
    2. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    3. Perform ! Call(promiseCapability.[[Resolve]], undefined, « promise »).
    ...
    Promise Resolve Functions
    ...
    7. If Type(resolution) is not Object, then
      a. Return FulfillPromise(promise, resolution).
    8. Let then be Get(resolution, "then").
    ...
    11. If IsCallable(thenAction) is false, then
      a. Return FulfillPromise(promise, resolution).
    ...
--- | 
          2146 | 
        
        
          | async-gen-yield-star-next-then-non-callable-null-fulfillpromise.js | 
          ---
description: FulfillPromise if next().then is not-callable (null) (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, Symbol.asyncIterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    ...
    6. Repeat
      a. If received.[[Type]] is normal, then
        ii. Let innerResult be ? Invoke(iterator, "next",
            « received.[[Value]] »).
        iii. If generatorKind is async, then set innerResult to
             ? Await(innerResult).
        iv. If Type(innerResult) is not Object, throw a TypeError exception.
    ...
    Await
    ...
    2. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    3. Perform ! Call(promiseCapability.[[Resolve]], undefined, « promise »).
    ...
    Promise Resolve Functions
    ...
    7. If Type(resolution) is not Object, then
      a. Return FulfillPromise(promise, resolution).
    8. Let then be Get(resolution, "then").
    ...
    11. If IsCallable(thenAction) is false, then
      a. Return FulfillPromise(promise, resolution).
    ...
--- | 
          2140 | 
        
        
          | async-gen-yield-star-next-then-non-callable-number-fulfillpromise.js | 
          ---
description: FulfillPromise if next().then is not-callable (number) (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, Symbol.asyncIterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    ...
    6. Repeat
      a. If received.[[Type]] is normal, then
        ii. Let innerResult be ? Invoke(iterator, "next",
            « received.[[Value]] »).
        iii. If generatorKind is async, then set innerResult to
             ? Await(innerResult).
        iv. If Type(innerResult) is not Object, throw a TypeError exception.
    ...
    Await
    ...
    2. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    3. Perform ! Call(promiseCapability.[[Resolve]], undefined, « promise »).
    ...
    Promise Resolve Functions
    ...
    7. If Type(resolution) is not Object, then
      a. Return FulfillPromise(promise, resolution).
    8. Let then be Get(resolution, "then").
    ...
    11. If IsCallable(thenAction) is false, then
      a. Return FulfillPromise(promise, resolution).
    ...
--- | 
          2142 | 
        
        
          | async-gen-yield-star-next-then-non-callable-object-fulfillpromise.js | 
          ---
description: FulfillPromise if next().then is not-callable (object) (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, Symbol.asyncIterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    ...
    6. Repeat
      a. If received.[[Type]] is normal, then
        ii. Let innerResult be ? Invoke(iterator, "next",
            « received.[[Value]] »).
        iii. If generatorKind is async, then set innerResult to
             ? Await(innerResult).
        iv. If Type(innerResult) is not Object, throw a TypeError exception.
    ...
    Await
    ...
    2. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    3. Perform ! Call(promiseCapability.[[Resolve]], undefined, « promise »).
    ...
    Promise Resolve Functions
    ...
    7. If Type(resolution) is not Object, then
      a. Return FulfillPromise(promise, resolution).
    8. Let then be Get(resolution, "then").
    ...
    11. If IsCallable(thenAction) is false, then
      a. Return FulfillPromise(promise, resolution).
    ...
--- | 
          2142 | 
        
        
          | async-gen-yield-star-next-then-non-callable-string-fulfillpromise.js | 
          ---
description: FulfillPromise if next().then is not-callable (string) (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, Symbol.asyncIterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    ...
    6. Repeat
      a. If received.[[Type]] is normal, then
        ii. Let innerResult be ? Invoke(iterator, "next",
            « received.[[Value]] »).
        iii. If generatorKind is async, then set innerResult to
             ? Await(innerResult).
        iv. If Type(innerResult) is not Object, throw a TypeError exception.
    ...
    Await
    ...
    2. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    3. Perform ! Call(promiseCapability.[[Resolve]], undefined, « promise »).
    ...
    Promise Resolve Functions
    ...
    7. If Type(resolution) is not Object, then
      a. Return FulfillPromise(promise, resolution).
    8. Let then be Get(resolution, "then").
    ...
    11. If IsCallable(thenAction) is false, then
      a. Return FulfillPromise(promise, resolution).
    ...
--- | 
          2142 | 
        
        
          | async-gen-yield-star-next-then-non-callable-symbol-fulfillpromise.js | 
          ---
description: FulfillPromise if next().then is not-callable (symbol) (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, Symbol.asyncIterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    ...
    6. Repeat
      a. If received.[[Type]] is normal, then
        ii. Let innerResult be ? Invoke(iterator, "next",
            « received.[[Value]] »).
        iii. If generatorKind is async, then set innerResult to
             ? Await(innerResult).
        iv. If Type(innerResult) is not Object, throw a TypeError exception.
    ...
    Await
    ...
    2. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    3. Perform ! Call(promiseCapability.[[Resolve]], undefined, « promise »).
    ...
    Promise Resolve Functions
    ...
    7. If Type(resolution) is not Object, then
      a. Return FulfillPromise(promise, resolution).
    8. Let then be Get(resolution, "then").
    ...
    11. If IsCallable(thenAction) is false, then
      a. Return FulfillPromise(promise, resolution).
    ...
--- | 
          2152 | 
        
        
          | async-gen-yield-star-next-then-non-callable-undefined-fulfillpromise.js | 
          ---
description: FulfillPromise if next().then is not-callable (undefined) (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, Symbol.asyncIterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    ...
    6. Repeat
      a. If received.[[Type]] is normal, then
        ii. Let innerResult be ? Invoke(iterator, "next",
            « received.[[Value]] »).
        iii. If generatorKind is async, then set innerResult to
             ? Await(innerResult).
        iv. If Type(innerResult) is not Object, throw a TypeError exception.
    ...
    Await
    ...
    2. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    3. Perform ! Call(promiseCapability.[[Resolve]], undefined, « promise »).
    ...
    Promise Resolve Functions
    ...
    7. If Type(resolution) is not Object, then
      a. Return FulfillPromise(promise, resolution).
    8. Let then be Get(resolution, "then").
    ...
    11. If IsCallable(thenAction) is false, then
      a. Return FulfillPromise(promise, resolution).
    ...
--- | 
          2155 | 
        
        
          | async-gen-yield-star-next-then-returns-abrupt.js | 
          ---
description: Return abrupt after calling next().then (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, Symbol.asyncIterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    ...
    6. Repeat
      a. If received.[[Type]] is normal, then
        ii. Let innerResult be ? Invoke(iterator, "next",
            « received.[[Value]] »).
        iii. If generatorKind is async, then set innerResult to
             ? Await(innerResult).
    ...
    Await
    ...
    2. Let promiseCapability be ! NewPromiseCapability(%Promise%).
    3. Perform ! Call(promiseCapability.[[Resolve]], undefined, « promise »).
    ...
    Promise Resolve Functions
    ...
    8. Let then be Get(resolution, "then").
    ...
    10. Get thenAction be then.[[Value]].
    ...
    12. Perform EnqueueJob("PromiseJobs", PromiseResolveThenableJob, « promise,
        resolution, thenAction »).
    ...
--- | 
          2240 | 
        
        
          | async-gen-yield-star-sync-next.js | 
          ---
description: execution order for yield* with sync iterator and next() (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, async-iteration, Symbol.asyncIterator]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    ...
    2. Let value be ? GetValue(exprRef).
    3. Let generatorKind be ! GetGeneratorKind().
    4. Let iterator be ? GetIterator(value, generatorKind).
    5. Let received be NormalCompletion(undefined).
    6. Repeat
      a. If received.[[Type]] is normal, then
        i. Let innerResult be ? IteratorNext(iterator, received.[[Value]]).
        ii. Let innerResult be ? Invoke(iterator, "next",
            « received.[[Value]] »).
        iii. If generatorKind is async, then set innerResult to
             ? Await(innerResult).
        ...
        v. Let done be ? IteratorComplete(innerResult).
        vi. If done is true, then
           1. Return ? IteratorValue(innerResult).
        vii. Let received be GeneratorYield(innerResult).
      ...
    GetIterator ( obj [ , hint ] )
    ...
    3. If hint is async,
      a. Set method to ? GetMethod(obj, @@asyncIterator).
      b. If method is undefined,
        i. Let syncMethod be ? GetMethod(obj, @@iterator).
        ii. Let syncIterator be ? Call(syncMethod, obj).
        iii. Return ? CreateAsyncFromSyncIterator(syncIterator).
    ...
    %AsyncFromSyncIteratorPrototype%.next ( value )
    ...
    5. Let nextResult be IteratorNext(syncIterator, value).
    ...
    7. Let nextValue be IteratorValue(nextResult).
    ...
    9. Let nextDone be IteratorComplete(nextResult).
    ...
    12. Perform ! Call(valueWrapperCapability.[[Resolve]], undefined,
        « nextValue »).
    ...
    14. Set onFulfilled.[[Done]] to nextDone.
    15. Perform ! PerformPromiseThen(valueWrapperCapability.[[Promise]],
        onFulfilled, undefined, promiseCapability).
    ...
    Async Iterator Value Unwrap Functions
    1. Return ! CreateIterResultObject(value, F.[[Done]]).
--- | 
          6807 | 
        
        
          | async-gen-yield-star-sync-return.js | 
          ---
description: execution order for yield* with sync iterator and return() (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, async-iteration, Symbol.asyncIterator]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    ...
    6. Repeat
      ...
      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 generatorKind is async, then set innerReturnResult to
           ? Await(innerReturnResult).
        ...
        vii. Let done be ? IteratorComplete(innerReturnResult).
        viii. If done is true, then
             1. Let value be ? IteratorValue(innerReturnResult).
             2. Return Completion{[[Type]]: return, [[Value]]: value,
                [[Target]]: empty}.
        ix. Let received be GeneratorYield(innerResult).
    %AsyncFromSyncIteratorPrototype%.return ( value )
    5. Let return be GetMethod(syncIterator, "return").
    ...
    ...
    8. Let returnResult be Call(return, syncIterator, « value »).
    ...
    11. Let returnValue be IteratorValue(returnResult).
    ..
    13. Let returnDone be IteratorComplete(returnResult).
    ...
    16. Perform ! Call(valueWrapperCapability.[[Resolve]], undefined, « returnValue »).
    ...
    18. Set onFulfilled.[[Done]] to returnDone.
    19. Perform ! PerformPromiseThen(valueWrapperCapability.[[Promise]],
        onFulfilled, undefined, promiseCapability).
    ...
--- | 
          6043 | 
        
        
          | async-gen-yield-star-sync-throw.js | 
          ---
description: execution order for yield* with sync iterator and throw() (Async generator method)
esid: prod-AsyncGeneratorMethod
features: [Symbol.iterator, async-iteration]
flags: [generated, async]
info: |
    Async Generator Function Definitions
    AsyncGeneratorMethod :
      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    YieldExpression: yield * AssignmentExpression
    ...
    6. Repeat
      ...
      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. If generatorKind is async, then set innerResult to
             ? Await(innerResult).
          ...
          5. Let done be ? IteratorComplete(innerResult).
          6. If done is true, then
            a. Return ? IteratorValue(innerResult).
          7. Let received be GeneratorYield(innerResult).
      ...
    %AsyncFromSyncIteratorPrototype%.throw ( value )
    ...
    5. Let throw be GetMethod(syncIterator, "throw").
    ...
    8. Let throwResult be Call(throw, syncIterator, « value »).
    ...
    11. Let throwValue be IteratorValue(throwResult).
    ...
    13. Let throwDone be IteratorComplete(throwResult).
    ...
    16. Perform ! Call(valueWrapperCapability.[[Resolve]], undefined,
        « throwValue »).
    ...
    18. Set onFulfilled.[[Done]] to throwDone.
    19. Perform ! PerformPromiseThen(valueWrapperCapability.[[Promise]],
        onFulfilled, undefined, promiseCapability).
    ...
--- | 
          6013 | 
        
        
          | async-meth-array-destructuring-param-strict-body.js | 
          ---
description: ArrayBindingPattern and Use Strict Directive are not allowed to coexist for the same function. (async method)
esid: sec-async-function-definitions
features: [rest-parameters, async-iteration]
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    14.6 Async Function Definitions
    AsyncMethod :
     async PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
    13.3.3.4 Static Semantics: IsSimpleParameterList
    BindingElement : BindingPattern
    1. Return false.
    14.1.2 Static Semantics: Early Errors
    FunctionDeclaration : function BindingIdentifier ( FormalParameters ) { FunctionBody }
    FunctionDeclaration : function ( FormalParameters ) { FunctionBody }
    FunctionExpression : function BindingIdentifier ( FormalParameters ) { FunctionBody }
    - It is a Syntax Error if ContainsUseStrict of FunctionBody is true and
      IsSimpleParameterList of FormalParameters is false.
    14.2.1 Static Semantics: Early Errors
    ArrowFunction : ArrowParameters => ConciseBody
    - It is a Syntax Error if ContainsUseStrict of ConciseBody is true and
      IsSimpleParameterList of ArrowParameters is false.
    14.3.1 Static Semantics: Early Errors
    MethodDefinition : PropertyName ( UniqueFormalParameters ) { FunctionBody }
    - It is a Syntax Error if ContainsUseStrict of FunctionBody is true and
      IsSimpleParameterList of UniqueFormalParameters is false.
    MethodDefinition : set PropertyName ( PropertySetParameterList ) { FunctionBody }
    - It is a Syntax Error if ContainsUseStrict of FunctionBody is true and
      IsSimpleParameterList of PropertySetParameterList is false.
    14.4.1 Static Semantics: Early Errors
    GeneratorMethod : * PropertyName ( UniqueFormalParameters ) { GeneratorBody }
    - It is a Syntax Error if ContainsUseStrict of GeneratorBody is true and
      IsSimpleParameterList of UniqueFormalParameters is false.
    GeneratorDeclaration : function * BindingIdentifier ( FormalParameters ) { GeneratorBody }
    GeneratorDeclaration : function * ( FormalParameters ) { GeneratorBody }
    GeneratorExpression : function * BindingIdentifier ( FormalParameters ) { GeneratorBody }
    - It is a Syntax Error if ContainsUseStrict of GeneratorBody is true and
      IsSimpleParameterList of UniqueFormalParameters is false.
    14.5.1 Static Semantics: Early Errors
    AsyncGeneratorMethod : async * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    - It is a Syntax Error if ContainsUseStrict of AsyncGeneratorBody is true and
      IsSimpleParameterList of UniqueFormalParameters is false.
    AsyncGeneratorDeclaration : async function * BindingIdentifier ( FormalParameters ) { AsyncGeneratorBody }
    AsyncGeneratorDeclaration : async function * ( FormalParameters ) { AsyncGeneratorBody }
    AsyncGeneratorExpression : async function * BindingIdentifier ( FormalParameters ) { AsyncGeneratorBody }
    - It is a Syntax Error if ContainsUseStrict of AsyncGeneratorBody is true and
      IsSimpleParameterList of FormalParameters is false.
    14.7.1 Static Semantics: Early Errors
    AsyncMethod : async PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
    - It is a Syntax Error if ContainsUseStrict of AsyncFunctionBody is true and
      IsSimpleParameterList of UniqueFormalParameters is false.
    AsyncFunctionDeclaration : async function BindingIdentifier ( FormalParameters ) { AsyncFunctionBody }
    AsyncFunctionDeclaration : async function ( FormalParameters ) { AsyncFunctionBody }
    AsyncFunctionExpression : async function ( FormalParameters ) { AsyncFunctionBody }
    AsyncFunctionExpression : async function BindingIdentifier ( FormalParameters ) { AsyncFunctionBody }
    - It is a Syntax Error if ContainsUseStrict of AsyncFunctionBody is true and
      IsSimpleParameterList of FormalParameters is false.
    14.8.1 Static Semantics: Early Errors
    AsyncArrowFunction : CoverCallExpressionAndAsyncArrowHead => AsyncConciseBody
    - It is a Syntax Error if ContainsUseStrict of AsyncConciseBody is true and
      IsSimpleParameterList of CoverCallExpressionAndAsyncArrowHead is false.
--- | 
          4497 | 
        
        
          | async-meth-dflt-params-abrupt.js | 
          ---
description: Abrupt completion returned by evaluation of initializer (async method)
esid: sec-async-function-definitions
features: [default-parameters, async-functions]
flags: [generated, async]
info: |
    14.6 Async Function Definitions
    AsyncMethod :
     async PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
    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.
--- | 
          1400 | 
        
        
          | async-meth-dflt-params-arg-val-not-undefined.js | 
          ---
description: Use of initializer when argument value is not `undefined` (async method)
esid: sec-async-function-definitions
features: [default-parameters, async-functions]
flags: [generated, async]
info: |
    14.6 Async Function Definitions
    AsyncMethod :
     async PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
    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.
    [...]
--- | 
          2161 | 
        
        
          | async-meth-dflt-params-arg-val-undefined.js | 
          ---
description: Use of initializer when argument value is `undefined` (async method)
esid: sec-async-function-definitions
features: [default-parameters, async-functions]
flags: [generated, async]
info: |
    14.6 Async Function Definitions
    AsyncMethod :
     async PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
    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.
    [...]
--- | 
          1424 | 
        
        
          | async-meth-dflt-params-duplicates.js | 
          ---
description: It is a Syntax Error if BoundNames of FormalParameters contains any duplicate elements. (async method)
esid: sec-async-function-definitions
features: [default-parameters, async-iteration]
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    14.6 Async Function Definitions
    AsyncMethod :
     async PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
    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.
--- | 
          1084 | 
        
        
          | async-meth-dflt-params-ref-later.js | 
          ---
description: Referencing a parameter that occurs later in the ParameterList (async method)
esid: sec-async-function-definitions
features: [default-parameters, async-functions]
flags: [generated, async]
info: |
    14.6 Async Function Definitions
    AsyncMethod :
     async PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
    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.
--- | 
          1383 | 
        
        
          | async-meth-dflt-params-ref-prior.js | 
          ---
description: Referencing a parameter that occurs earlier in the ParameterList (async method)
esid: sec-async-function-definitions
features: [default-parameters, async-functions]
flags: [generated, async]
info: |
    14.6 Async Function Definitions
    AsyncMethod :
     async PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
    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.
--- | 
          1457 | 
        
        
          | async-meth-dflt-params-ref-self.js | 
          ---
description: Referencing a parameter from within its own initializer (async method)
esid: sec-async-function-definitions
features: [default-parameters, async-functions]
flags: [generated, async]
info: |
    14.6 Async Function Definitions
    AsyncMethod :
     async PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
    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.
--- | 
          1372 | 
        
        
          | async-meth-dflt-params-rest.js | 
          ---
description: RestParameter does not support an initializer (async method)
esid: sec-async-function-definitions
features: [default-parameters, async-iteration]
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    14.6 Async Function Definitions
    AsyncMethod :
     async PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
    14.1 Function Definitions
    Syntax
    FunctionRestParameter[Yield] :
      BindingRestElement[?Yield]
    13.3.3 Destructuring Binding Patterns
    Syntax
    BindingRestElement[Yield] :
      ...BindingIdentifier[?Yield]
      ...BindingPattern[?Yield]
--- | 
          903 | 
        
        
          | async-meth-dflt-params-trailing-comma.js | 
          ---
description: A trailing comma should not increase the respective length, using default parameters (async method)
esid: sec-async-function-definitions
features: [async-functions]
flags: [generated, async]
info: |
    14.6 Async Function Definitions
    AsyncMethod :
     async PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
    Trailing comma in the parameters list
    14.1 Function Definitions
    FormalParameters[Yield, Await] : FormalParameterList[?Yield, ?Await] ,
--- | 
          1123 | 
        
        
          | async-meth-escaped-async.js | 
          ---
esid: sec-grammar-notation
description: >
  The `async` contextual keyword must not contain Unicode escape sequences.
info: |
  Terminal symbols are shown
  in fixed width font, both in the productions of the grammars and throughout this
  specification whenever the text directly refers to such a terminal symbol. These
  are to appear in a script exactly as written. All terminal symbol code points
  specified in this way are to be understood as the appropriate Unicode code points
  from the Basic Latin range, as opposed to any similar-looking code points from
  other Unicode ranges.
negative:
  phase: parse
  type: SyntaxError
features: [async-functions]
--- | 
          885 | 
        
        
          | async-meth-eval-var-scope-syntax-err.js | 
          ---
description: sloppy direct eval in params introduces var (async method in sloppy code)
esid: sec-async-function-definitions
features: [default-parameters, async-functions]
flags: [generated, async, noStrict]
info: |
    14.6 Async Function Definitions
    AsyncMethod :
     async PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
    
    Runtime Semantics: IteratorBindingInitialization
    FormalParameter : BindingElement
    1. Return the result of performing IteratorBindingInitialization for BindingElement with arguments iteratorRecord and environment.
--- | 
          1187 | 
        
        
          | async-meth-object-destructuring-param-strict-body.js | 
          ---
description: ObjectBindingPattern and Use Strict Directive are not allowed to coexist for the same function. (async method)
esid: sec-async-function-definitions
features: [rest-parameters, async-iteration]
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    14.6 Async Function Definitions
    AsyncMethod :
     async PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
    13.3.3.4 Static Semantics: IsSimpleParameterList
    BindingElement : BindingPattern
    1. Return false.
    14.1.2 Static Semantics: Early Errors
    FunctionDeclaration : function BindingIdentifier ( FormalParameters ) { FunctionBody }
    FunctionDeclaration : function ( FormalParameters ) { FunctionBody }
    FunctionExpression : function BindingIdentifier ( FormalParameters ) { FunctionBody }
    - It is a Syntax Error if ContainsUseStrict of FunctionBody is true and
      IsSimpleParameterList of FormalParameters is false.
    14.2.1 Static Semantics: Early Errors
    ArrowFunction : ArrowParameters => ConciseBody
    - It is a Syntax Error if ContainsUseStrict of ConciseBody is true and
      IsSimpleParameterList of ArrowParameters is false.
    14.3.1 Static Semantics: Early Errors
    MethodDefinition : PropertyName ( UniqueFormalParameters ) { FunctionBody }
    - It is a Syntax Error if ContainsUseStrict of FunctionBody is true and
      IsSimpleParameterList of UniqueFormalParameters is false.
    MethodDefinition : set PropertyName ( PropertySetParameterList ) { FunctionBody }
    - It is a Syntax Error if ContainsUseStrict of FunctionBody is true and
      IsSimpleParameterList of PropertySetParameterList is false.
    14.4.1 Static Semantics: Early Errors
    GeneratorMethod : * PropertyName ( UniqueFormalParameters ) { GeneratorBody }
    - It is a Syntax Error if ContainsUseStrict of GeneratorBody is true and
      IsSimpleParameterList of UniqueFormalParameters is false.
    GeneratorDeclaration : function * BindingIdentifier ( FormalParameters ) { GeneratorBody }
    GeneratorDeclaration : function * ( FormalParameters ) { GeneratorBody }
    GeneratorExpression : function * BindingIdentifier ( FormalParameters ) { GeneratorBody }
    - It is a Syntax Error if ContainsUseStrict of GeneratorBody is true and
      IsSimpleParameterList of UniqueFormalParameters is false.
    14.5.1 Static Semantics: Early Errors
    AsyncGeneratorMethod : async * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    - It is a Syntax Error if ContainsUseStrict of AsyncGeneratorBody is true and
      IsSimpleParameterList of UniqueFormalParameters is false.
    AsyncGeneratorDeclaration : async function * BindingIdentifier ( FormalParameters ) { AsyncGeneratorBody }
    AsyncGeneratorDeclaration : async function * ( FormalParameters ) { AsyncGeneratorBody }
    AsyncGeneratorExpression : async function * BindingIdentifier ( FormalParameters ) { AsyncGeneratorBody }
    - It is a Syntax Error if ContainsUseStrict of AsyncGeneratorBody is true and
      IsSimpleParameterList of FormalParameters is false.
    14.7.1 Static Semantics: Early Errors
    AsyncMethod : async PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
    - It is a Syntax Error if ContainsUseStrict of AsyncFunctionBody is true and
      IsSimpleParameterList of UniqueFormalParameters is false.
    AsyncFunctionDeclaration : async function BindingIdentifier ( FormalParameters ) { AsyncFunctionBody }
    AsyncFunctionDeclaration : async function ( FormalParameters ) { AsyncFunctionBody }
    AsyncFunctionExpression : async function ( FormalParameters ) { AsyncFunctionBody }
    AsyncFunctionExpression : async function BindingIdentifier ( FormalParameters ) { AsyncFunctionBody }
    - It is a Syntax Error if ContainsUseStrict of AsyncFunctionBody is true and
      IsSimpleParameterList of FormalParameters is false.
    14.8.1 Static Semantics: Early Errors
    AsyncArrowFunction : CoverCallExpressionAndAsyncArrowHead => AsyncConciseBody
    - It is a Syntax Error if ContainsUseStrict of AsyncConciseBody is true and
      IsSimpleParameterList of CoverCallExpressionAndAsyncArrowHead is false.
--- | 
          4500 | 
        
        
          | async-meth-params-trailing-comma-multiple.js | 
          ---
description: A trailing comma should not increase the respective length, using multiple parameters (async method)
esid: sec-async-function-definitions
features: [async-functions]
flags: [generated, async]
info: |
    14.6 Async Function Definitions
    AsyncMethod :
     async PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
    Trailing comma in the parameters list
    14.1 Function Definitions
    FormalParameters[Yield, Await] : FormalParameterList[?Yield, ?Await] ,
--- | 
          1116 | 
        
        
          | async-meth-params-trailing-comma-single.js | 
          ---
description: A trailing comma should not increase the respective length, using a single parameter (async method)
esid: sec-async-function-definitions
features: [async-functions]
flags: [generated, async]
info: |
    14.6 Async Function Definitions
    AsyncMethod :
     async PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
    Trailing comma in the parameters list
    14.1 Function Definitions
    FormalParameters[Yield, Await] : FormalParameterList[?Yield, ?Await] ,
--- | 
          1078 | 
        
        
          | async-meth-rest-param-strict-body.js | 
          ---
description: RestParameter and Use Strict Directive are not allowed to coexist for the same function. (async method)
esid: sec-async-function-definitions
features: [rest-parameters, async-iteration]
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    14.6 Async Function Definitions
    AsyncMethod :
     async PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
    14.1.13 Static Semantics: IsSimpleParameterList
    FormalParameters : FormalParameterList , FunctionRestParameter
    1. Return false.
    14.1.2 Static Semantics: Early Errors
    FunctionDeclaration : function BindingIdentifier ( FormalParameters ) { FunctionBody }
    FunctionDeclaration : function ( FormalParameters ) { FunctionBody }
    FunctionExpression : function BindingIdentifier ( FormalParameters ) { FunctionBody }
    - It is a Syntax Error if ContainsUseStrict of FunctionBody is true and
      IsSimpleParameterList of FormalParameters is false.
    14.2.1 Static Semantics: Early Errors
    ArrowFunction : ArrowParameters => ConciseBody
    - It is a Syntax Error if ContainsUseStrict of ConciseBody is true and
      IsSimpleParameterList of ArrowParameters is false.
    14.3.1 Static Semantics: Early Errors
    MethodDefinition : PropertyName ( UniqueFormalParameters ) { FunctionBody }
    - It is a Syntax Error if ContainsUseStrict of FunctionBody is true and
      IsSimpleParameterList of UniqueFormalParameters is false.
    MethodDefinition : set PropertyName ( PropertySetParameterList ) { FunctionBody }
    - It is a Syntax Error if ContainsUseStrict of FunctionBody is true and
      IsSimpleParameterList of PropertySetParameterList is false.
    14.4.1 Static Semantics: Early Errors
    GeneratorMethod : * PropertyName ( UniqueFormalParameters ) { GeneratorBody }
    - It is a Syntax Error if ContainsUseStrict of GeneratorBody is true and
      IsSimpleParameterList of UniqueFormalParameters is false.
    GeneratorDeclaration : function * BindingIdentifier ( FormalParameters ) { GeneratorBody }
    GeneratorDeclaration : function * ( FormalParameters ) { GeneratorBody }
    GeneratorExpression : function * BindingIdentifier ( FormalParameters ) { GeneratorBody }
    - It is a Syntax Error if ContainsUseStrict of GeneratorBody is true and
      IsSimpleParameterList of UniqueFormalParameters is false.
    14.5.1 Static Semantics: Early Errors
    AsyncGeneratorMethod : async * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
    - It is a Syntax Error if ContainsUseStrict of AsyncGeneratorBody is true and
      IsSimpleParameterList of UniqueFormalParameters is false.
    AsyncGeneratorDeclaration : async function * BindingIdentifier ( FormalParameters ) { AsyncGeneratorBody }
    AsyncGeneratorDeclaration : async function * ( FormalParameters ) { AsyncGeneratorBody }
    AsyncGeneratorExpression : async function * BindingIdentifier ( FormalParameters ) { AsyncGeneratorBody }
    - It is a Syntax Error if ContainsUseStrict of AsyncGeneratorBody is true and
      IsSimpleParameterList of FormalParameters is false.
    14.7.1 Static Semantics: Early Errors
    AsyncMethod : async PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
    - It is a Syntax Error if ContainsUseStrict of AsyncFunctionBody is true and
      IsSimpleParameterList of UniqueFormalParameters is false.
    AsyncFunctionDeclaration : async function BindingIdentifier ( FormalParameters ) { AsyncFunctionBody }
    AsyncFunctionDeclaration : async function ( FormalParameters ) { AsyncFunctionBody }
    AsyncFunctionExpression : async function ( FormalParameters ) { AsyncFunctionBody }
    AsyncFunctionExpression : async function BindingIdentifier ( FormalParameters ) { AsyncFunctionBody }
    - It is a Syntax Error if ContainsUseStrict of AsyncFunctionBody is true and
      IsSimpleParameterList of FormalParameters is false.
    14.8.1 Static Semantics: Early Errors
    AsyncArrowFunction : CoverCallExpressionAndAsyncArrowHead => AsyncConciseBody
    - It is a Syntax Error if ContainsUseStrict of AsyncConciseBody is true and
      IsSimpleParameterList of CoverCallExpressionAndAsyncArrowHead is false.
--- | 
          4506 | 
        
        
          | async-meth-rest-params-trailing-comma-early-error.js | 
          ---
description: It's a syntax error if a FunctionRestParameter is followed by a trailing comma (async method)
esid: sec-async-function-definitions
features: [async-iteration]
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    14.6 Async Function Definitions
    AsyncMethod :
     async PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
    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]
--- | 
          1012 | 
        
        
          | async-returns-async-arrow-returns-arguments-from-parent-function.js | 
          ---
description: Async function returns an async function. (Async method)
esid: prod-AsyncMethod
features: [async-functions]
flags: [generated, async]
info: |
    Async Function Definitions
    AsyncMethod :
      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
--- | 
          917 | 
        
        
          | async-returns-async-arrow-returns-newtarget.js | 
          ---
description: Async function returns an async function. (Async method)
esid: prod-AsyncMethod
features: [async-functions]
flags: [generated, async]
info: |
    Async Function Definitions
    AsyncMethod :
      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
--- | 
          871 | 
        
        
          | async-returns-async-arrow.js | 
          ---
description: Async function returns an async function. (Async method)
esid: prod-AsyncMethod
features: [async-functions]
flags: [generated, async]
info: |
    Async Function Definitions
    AsyncMethod :
      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
--- | 
          837 | 
        
        
          | async-returns-async-function-returns-arguments-from-own-function.js | 
          ---
description: Async function returns an async function. (Async method)
esid: prod-AsyncMethod
features: [async-functions]
flags: [generated, async]
info: |
    Async Function Definitions
    AsyncMethod :
      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
--- | 
          936 | 
        
        
          | async-returns-async-function-returns-newtarget.js | 
          ---
description: Async function returns an async function. (Async method)
esid: prod-AsyncMethod
features: [async-functions]
flags: [generated, async]
info: |
    Async Function Definitions
    AsyncMethod :
      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
--- | 
          892 | 
        
        
          | async-returns-async-function.js | 
          ---
description: Async function returns an async function. (Async method)
esid: prod-AsyncMethod
features: [async-functions]
flags: [generated, async]
info: |
    Async Function Definitions
    AsyncMethod :
      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
--- | 
          857 | 
        
        
          | async-super-call-body.js | 
          ---
author: Brian Terlson <brian.terlson@microsoft.com>
esid: pending
description: >
  Super calls work in body of async methods
flags: [async]
--- | 
          526 | 
        
        
          | async-super-call-param.js | 
          ---
author: Brian Terlson <brian.terlson@microsoft.com>
esid: pending
description: >
  Super calls work in parameter list of async methods
flags: [async]
--- | 
          542 | 
        
        
          | browser.js | 
           | 
          0 | 
        
        
          | computed-property-name-yield-expression.js | 
          ---
description: >
    When the `yield` keyword occurs within the PropertyName of a
    non-generator MethodDefinition within a generator function, it behaves as a
    YieldExpression.
info: |
  ComputedPropertyName:
    [ AssignmentExpression ]
  AssignmentExpression[In, Yield, Await]:
    [+Yield]YieldExpression[?In, ?Await]
features: [computed-property-names, generators]
flags: [noStrict]
--- | 
          858 | 
        
        
          | early-errors-object-async-method-duplicate-parameters.js | 
          ---
author: Brian Terlson <brian.terlson@microsoft.com>
esid: sec-async-function-definitions
description: Formal parameters may not contain duplicates
info: |
  # 14.7 Async Function Definitions
   AsyncMethod[Yield, Await]:
     async[no LineTerminator here]PropertyName[?Yield, ?Await](UniqueFormalParameters[~Yield, +Await]){AsyncFunctionBody}
  # 14.1.2 Static Semantics: Early Errors
  UniqueFormalParameters:FormalParameters
  - It is a Syntax Error if BoundNames of FormalParameters contains any
    duplicate elements.
negative:
  phase: parse
  type: SyntaxError
--- | 
          789 | 
        
        
          | early-errors-object-method-arguments-in-formal-parameters-strict.js | 
          ---
author: Brian Terlson <brian.terlson@microsoft.com>
esid: pending
description: It is a SyntaxError if FormalParameters contains arguments
negative:
  phase: parse
  type: SyntaxError
flags: [onlyStrict]
features: [async-functions]
--- | 
          468 | 
        
        
          | early-errors-object-method-async-lineterminator.js | 
          ---
esid: prod-AsyncMethod
description: async methods cannot have a line terminator between "async" and the property name
info: |
  14.6 Async Function Definitions
  AsyncMethod:
    async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
negative:
  phase: parse
  type: SyntaxError
--- | 
          543 | 
        
        
          | early-errors-object-method-await-in-formals-default.js | 
          ---
author: Brian Terlson <brian.terlson@microsoft.com>
esid: pending
description: It is a SyntaxError if FormalParameters' default expressions contains await
negative:
  phase: parse
  type: SyntaxError
features: [async-functions]
--- | 
          453 | 
        
        
          | early-errors-object-method-await-in-formals.js | 
          ---
author: Brian Terlson <brian.terlson@microsoft.com>
esid: pending
description: It is a SyntaxError if FormalParameters contains await
negative:
  phase: parse
  type: SyntaxError
features: [async-functions]
--- | 
          427 | 
        
        
          | early-errors-object-method-body-contains-super-call.js | 
          ---
author: Brian Terlson <brian.terlson@microsoft.com>
esid: pending
description: It is a SyntaxError if AsyncFunctionBody contains SuperCall is true
negative:
  phase: parse
  type: SyntaxError
features: [async-functions]
--- | 
          442 | 
        
        
          | early-errors-object-method-duplicate-parameters.js | 
          ---
esid: sec-method-definitions
description: Formal parameters may not contain duplicates
info: |
  # 14.3 Method Definitions
  MethodDefinition[Yield, Await]:
    PropertyName[?Yield, ?Await](UniqueFormalParameters[~Yield, ~Await]){FunctionBody[~Yield, ~Await]}
  # 14.1.2 Static Semantics: Early Errors
  UniqueFormalParameters:FormalParameters
  - It is a Syntax Error if BoundNames of FormalParameters contains any
    duplicate elements.
negative:
  phase: parse
  type: SyntaxError
--- | 
          698 | 
        
        
          | early-errors-object-method-eval-in-formal-parameters-strict.js | 
          ---
author: Brian Terlson <brian.terlson@microsoft.com>
esid: pending
description: It is a SyntaxError if FormalParameters contains eval in strict mode
negative:
  phase: parse
  type: SyntaxError
flags: [onlyStrict]
features: [async-functions]
--- | 
          472 | 
        
        
          | early-errors-object-method-formals-body-duplicate.js | 
          ---
author: Brian Terlson <brian.terlson@microsoft.com>
esid: pending
description: It is a SyntaxError if BoundNames of FormalParameters also occurs in the LexicallyDeclaredNames of AsyncFunctionBody
negative:
  phase: parse
  type: SyntaxError
features: [async-functions]
--- | 
          504 | 
        
        
          | early-errors-object-method-formals-contains-super-call.js | 
          ---
author: Brian Terlson <brian.terlson@microsoft.com>
esid: pending
description: It is a syntax error if FormalParameters contains SuperCall is true
negative:
  phase: parse
  type: SyntaxError
--- | 
          418 | 
        
        
          | early-errors-object-method-NSPL-with-USD.js | 
          ---
author: Brian Terlson <brian.terlson@microsoft.com>
esid: pending
description: >
  It is a Syntax Error if ContainsUseStrict of AsyncConciseBody is *true* and IsSimpleParameterList of ArrowParameters is *false*.
negative:
  phase: parse
  type: SyntaxError
--- | 
          481 | 
        
        
          | escaped-get-e.js | 
          ---
esid: sec-grammar-notation
description: >
  The `get` contextual keyword must not contain Unicode escape sequences.
info: |
  Terminal symbols of the lexical, RegExp, and numeric string grammars are shown
  in fixed width font, both in the productions of the grammars and throughout this
  specification whenever the text directly refers to such a terminal symbol. These
  are to appear in a script exactly as written. All terminal symbol code points
  specified in this way are to be understood as the appropriate Unicode code points
  from the Basic Latin range, as opposed to any similar-looking code points from
  other Unicode ranges.
negative:
  phase: parse
  type: SyntaxError
--- | 
          902 | 
        
        
          | escaped-get-g.js | 
          ---
esid: sec-grammar-notation
description: >
  The `get` contextual keyword must not contain Unicode escape sequences.
info: |
  Terminal symbols of the lexical, RegExp, and numeric string grammars are shown
  in fixed width font, both in the productions of the grammars and throughout this
  specification whenever the text directly refers to such a terminal symbol. These
  are to appear in a script exactly as written. All terminal symbol code points
  specified in this way are to be understood as the appropriate Unicode code points
  from the Basic Latin range, as opposed to any similar-looking code points from
  other Unicode ranges.
negative:
  phase: parse
  type: SyntaxError
--- | 
          902 | 
        
        
          | escaped-get-t.js | 
          ---
esid: sec-grammar-notation
description: >
  The `get` contextual keyword must not contain Unicode escape sequences.
info: |
  Terminal symbols of the lexical, RegExp, and numeric string grammars are shown
  in fixed width font, both in the productions of the grammars and throughout this
  specification whenever the text directly refers to such a terminal symbol. These
  are to appear in a script exactly as written. All terminal symbol code points
  specified in this way are to be understood as the appropriate Unicode code points
  from the Basic Latin range, as opposed to any similar-looking code points from
  other Unicode ranges.
negative:
  phase: parse
  type: SyntaxError
--- | 
          902 | 
        
        
          | escaped-get.js | 
          ---
esid: sec-grammar-notation
description: >
  The `get` contextual keyword must not contain Unicode escape sequences.
info: |
  Terminal symbols are shown
  in fixed width font, both in the productions of the grammars and throughout this
  specification whenever the text directly refers to such a terminal symbol. These
  are to appear in a script exactly as written. All terminal symbol code points
  specified in this way are to be understood as the appropriate Unicode code points
  from the Basic Latin range, as opposed to any similar-looking code points from
  other Unicode ranges.
negative:
  phase: parse
  type: SyntaxError
--- | 
          862 | 
        
        
          | escaped-set-e.js | 
          ---
esid: sec-grammar-notation
description: >
  The `set` contextual keyword must not contain Unicode escape sequences.
info: |
  Terminal symbols of the lexical, RegExp, and numeric string grammars are shown
  in fixed width font, both in the productions of the grammars and throughout this
  specification whenever the text directly refers to such a terminal symbol. These
  are to appear in a script exactly as written. All terminal symbol code points
  specified in this way are to be understood as the appropriate Unicode code points
  from the Basic Latin range, as opposed to any similar-looking code points from
  other Unicode ranges.
negative:
  phase: parse
  type: SyntaxError
--- | 
          903 | 
        
        
          | escaped-set-s.js | 
          ---
esid: sec-grammar-notation
description: >
  The `set` contextual keyword must not contain Unicode escape sequences.
info: |
  Terminal symbols of the lexical, RegExp, and numeric string grammars are shown
  in fixed width font, both in the productions of the grammars and throughout this
  specification whenever the text directly refers to such a terminal symbol. These
  are to appear in a script exactly as written. All terminal symbol code points
  specified in this way are to be understood as the appropriate Unicode code points
  from the Basic Latin range, as opposed to any similar-looking code points from
  other Unicode ranges.
negative:
  phase: parse
  type: SyntaxError
--- | 
          903 | 
        
        
          | escaped-set-t.js | 
          ---
esid: sec-grammar-notation
description: >
  The `set` contextual keyword must not contain Unicode escape sequences.
info: |
  Terminal symbols of the lexical, RegExp, and numeric string grammars are shown
  in fixed width font, both in the productions of the grammars and throughout this
  specification whenever the text directly refers to such a terminal symbol. These
  are to appear in a script exactly as written. All terminal symbol code points
  specified in this way are to be understood as the appropriate Unicode code points
  from the Basic Latin range, as opposed to any similar-looking code points from
  other Unicode ranges.
negative:
  phase: parse
  type: SyntaxError
--- | 
          903 | 
        
        
          | escaped-set.js | 
          ---
esid: sec-grammar-notation
description: >
  The `set` contextual keyword must not contain Unicode escape sequences.
info: |
  Terminal symbols are shown
  in fixed width font, both in the productions of the grammars and throughout this
  specification whenever the text directly refers to such a terminal symbol. These
  are to appear in a script exactly as written. All terminal symbol code points
  specified in this way are to be understood as the appropriate Unicode code points
  from the Basic Latin range, as opposed to any similar-looking code points from
  other Unicode ranges.
negative:
  phase: parse
  type: SyntaxError
--- | 
          863 | 
        
        
          | fn-name-fn.js | 
          ---
es6id: 12.2.6.9
description: Assignment of function `name` attribute (MethodDefinition)
info: |
    6. If IsAnonymousFunctionDefinition(AssignmentExpression) is true, then
       a. Let hasNameProperty be HasOwnProperty(propValue, "name").
       b. ReturnIfAbrupt(hasNameProperty).
       c. If hasNameProperty is false, perform SetFunctionName(propValue,
          propKey).
includes: [propertyHelper.js]
features: [Symbol]
--- | 
          1079 | 
        
        
          | fn-name-gen.js | 
          ---
es6id: 14.4.13
description: >
    Assignment of function `name` attribute (GeneratorMethod)
info: |
    GeneratorMethod :
 PropertyName ( StrictFormalParameters ) { GeneratorBody }
    [...]
    9. Perform SetFunctionName(closure, propKey).
includes: [propertyHelper.js]
features: [generators, Symbol]
--- | 
          968 | 
        
        
          | forbidden-ext | 
           | 
           | 
        
        
          | gen-meth-array-destructuring-param-strict-body.js | 
           | 
          5598 | 
        
        
          | gen-meth-dflt-params-abrupt.js | 
          ---
description: Abrupt completion returned by evaluation of initializer (generator method)
esid: sec-generator-function-definitions-runtime-semantics-propertydefinitionevaluation
features: [default-parameters, generators]
flags: [generated]
info: |
    GeneratorMethod :
 PropertyName ( StrictFormalParameters ) { GeneratorBody }
    1. Let propKey be the result of evaluating PropertyName.
    2. ReturnIfAbrupt(propKey).
    3. If the function code for this GeneratorMethod is strict mode code,
       let strict be true. Otherwise let strict be false.
    4. Let scope be the running execution context's LexicalEnvironment.
    5. Let closure be GeneratorFunctionCreate(Method,
       StrictFormalParameters, 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.
--- | 
          2351 | 
        
        
          | gen-meth-dflt-params-arg-val-not-undefined.js | 
          ---
description: Use of initializer when argument value is not `undefined` (generator method)
esid: sec-generator-function-definitions-runtime-semantics-propertydefinitionevaluation
features: [default-parameters, generators]
flags: [generated]
info: |
    GeneratorMethod :
 PropertyName ( StrictFormalParameters ) { GeneratorBody }
    1. Let propKey be the result of evaluating PropertyName.
    2. ReturnIfAbrupt(propKey).
    3. If the function code for this GeneratorMethod is strict mode code,
       let strict be true. Otherwise let strict be false.
    4. Let scope be the running execution context's LexicalEnvironment.
    5. Let closure be GeneratorFunctionCreate(Method,
       StrictFormalParameters, 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.
    [...]
--- | 
          3234 | 
        
        
          | gen-meth-dflt-params-arg-val-undefined.js | 
          ---
description: Use of initializer when argument value is `undefined` (generator method)
esid: sec-generator-function-definitions-runtime-semantics-propertydefinitionevaluation
features: [default-parameters, generators]
flags: [generated]
info: |
    GeneratorMethod :
 PropertyName ( StrictFormalParameters ) { GeneratorBody }
    1. Let propKey be the result of evaluating PropertyName.
    2. ReturnIfAbrupt(propKey).
    3. If the function code for this GeneratorMethod is strict mode code,
       let strict be true. Otherwise let strict be false.
    4. Let scope be the running execution context's LexicalEnvironment.
    5. Let closure be GeneratorFunctionCreate(Method,
       StrictFormalParameters, 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.
    [...]
--- | 
          2497 | 
        
        
          | gen-meth-dflt-params-duplicates.js | 
          ---
description: It is a Syntax Error if BoundNames of FormalParameters contains any duplicate elements. (generator method)
esid: sec-generator-function-definitions-runtime-semantics-propertydefinitionevaluation
features: [default-parameters, generators]
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    GeneratorMethod :
 PropertyName ( StrictFormalParameters ) { GeneratorBody }
    1. Let propKey be the result of evaluating PropertyName.
    2. ReturnIfAbrupt(propKey).
    3. If the function code for this GeneratorMethod is strict mode code,
       let strict be true. Otherwise let strict be false.
    4. Let scope be the running execution context's LexicalEnvironment.
    5. Let closure be GeneratorFunctionCreate(Method,
       StrictFormalParameters, 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.
--- | 
          2185 | 
        
        
          | gen-meth-dflt-params-ref-later.js | 
          ---
description: Referencing a parameter that occurs later in the ParameterList (generator method)
esid: sec-generator-function-definitions-runtime-semantics-propertydefinitionevaluation
features: [default-parameters, generators]
flags: [generated]
info: |
    GeneratorMethod :
 PropertyName ( StrictFormalParameters ) { GeneratorBody }
    1. Let propKey be the result of evaluating PropertyName.
    2. ReturnIfAbrupt(propKey).
    3. If the function code for this GeneratorMethod is strict mode code,
       let strict be true. Otherwise let strict be false.
    4. Let scope be the running execution context's LexicalEnvironment.
    5. Let closure be GeneratorFunctionCreate(Method,
       StrictFormalParameters, 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.
--- | 
          2334 | 
        
        
          | gen-meth-dflt-params-ref-prior.js | 
          ---
description: Referencing a parameter that occurs earlier in the ParameterList (generator method)
esid: sec-generator-function-definitions-runtime-semantics-propertydefinitionevaluation
features: [default-parameters, generators]
flags: [generated]
info: |
    GeneratorMethod :
 PropertyName ( StrictFormalParameters ) { GeneratorBody }
    1. Let propKey be the result of evaluating PropertyName.
    2. ReturnIfAbrupt(propKey).
    3. If the function code for this GeneratorMethod is strict mode code,
       let strict be true. Otherwise let strict be false.
    4. Let scope be the running execution context's LexicalEnvironment.
    5. Let closure be GeneratorFunctionCreate(Method,
       StrictFormalParameters, 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.
--- | 
          2530 | 
        
        
          | gen-meth-dflt-params-ref-self.js | 
          ---
description: Referencing a parameter from within its own initializer (generator method)
esid: sec-generator-function-definitions-runtime-semantics-propertydefinitionevaluation
features: [default-parameters, generators]
flags: [generated]
info: |
    GeneratorMethod :
 PropertyName ( StrictFormalParameters ) { GeneratorBody }
    1. Let propKey be the result of evaluating PropertyName.
    2. ReturnIfAbrupt(propKey).
    3. If the function code for this GeneratorMethod is strict mode code,
       let strict be true. Otherwise let strict be false.
    4. Let scope be the running execution context's LexicalEnvironment.
    5. Let closure be GeneratorFunctionCreate(Method,
       StrictFormalParameters, 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.
--- | 
          2323 | 
        
        
          | gen-meth-dflt-params-rest.js | 
          ---
description: RestParameter does not support an initializer (generator method)
esid: sec-generator-function-definitions-runtime-semantics-propertydefinitionevaluation
features: [default-parameters, generators]
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    GeneratorMethod :
 PropertyName ( StrictFormalParameters ) { GeneratorBody }
    1. Let propKey be the result of evaluating PropertyName.
    2. ReturnIfAbrupt(propKey).
    3. If the function code for this GeneratorMethod is strict mode code,
       let strict be true. Otherwise let strict be false.
    4. Let scope be the running execution context's LexicalEnvironment.
    5. Let closure be GeneratorFunctionCreate(Method,
       StrictFormalParameters, 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]
--- | 
          2004 | 
        
        
          | gen-meth-dflt-params-trailing-comma.js | 
          ---
description: A trailing comma should not increase the respective length, using default parameters (generator method)
esid: sec-generator-function-definitions-runtime-semantics-propertydefinitionevaluation
features: [generators]
flags: [generated]
info: |
    GeneratorMethod :
 PropertyName ( StrictFormalParameters ) { GeneratorBody }
    1. Let propKey be the result of evaluating PropertyName.
    2. ReturnIfAbrupt(propKey).
    3. If the function code for this GeneratorMethod is strict mode code,
       let strict be true. Otherwise let strict be false.
    4. Let scope be the running execution context's LexicalEnvironment.
    5. Let closure be GeneratorFunctionCreate(Method,
       StrictFormalParameters, 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] ,
--- | 
          2196 | 
        
        
          | gen-meth-eval-var-scope-syntax-err.js | 
          ---
description: sloppy direct eval in params introduces var (generator method in sloppy code)
esid: sec-generator-function-definitions-runtime-semantics-propertydefinitionevaluation
features: [default-parameters, generators]
flags: [generated, noStrict]
info: |
    GeneratorMethod :
 PropertyName ( StrictFormalParameters ) { GeneratorBody }
    1. Let propKey be the result of evaluating PropertyName.
    2. ReturnIfAbrupt(propKey).
    3. If the function code for this GeneratorMethod is strict mode code,
       let strict be true. Otherwise let strict be false.
    4. Let scope be the running execution context's LexicalEnvironment.
    5. Let closure be GeneratorFunctionCreate(Method,
       StrictFormalParameters, 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.
--- | 
          2138 | 
        
        
          | gen-meth-object-destructuring-param-strict-body.js | 
           | 
          5601 | 
        
        
          | gen-meth-params-trailing-comma-multiple.js | 
          ---
description: A trailing comma should not increase the respective length, using multiple parameters (generator method)
esid: sec-generator-function-definitions-runtime-semantics-propertydefinitionevaluation
features: [generators]
flags: [generated]
info: |
    GeneratorMethod :
 PropertyName ( StrictFormalParameters ) { GeneratorBody }
    1. Let propKey be the result of evaluating PropertyName.
    2. ReturnIfAbrupt(propKey).
    3. If the function code for this GeneratorMethod is strict mode code,
       let strict be true. Otherwise let strict be false.
    4. Let scope be the running execution context's LexicalEnvironment.
    5. Let closure be GeneratorFunctionCreate(Method,
       StrictFormalParameters, 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] ,
--- | 
          2189 | 
        
        
          | gen-meth-params-trailing-comma-single.js | 
          ---
description: A trailing comma should not increase the respective length, using a single parameter (generator method)
esid: sec-generator-function-definitions-runtime-semantics-propertydefinitionevaluation
features: [generators]
flags: [generated]
info: |
    GeneratorMethod :
 PropertyName ( StrictFormalParameters ) { GeneratorBody }
    1. Let propKey be the result of evaluating PropertyName.
    2. ReturnIfAbrupt(propKey).
    3. If the function code for this GeneratorMethod is strict mode code,
       let strict be true. Otherwise let strict be false.
    4. Let scope be the running execution context's LexicalEnvironment.
    5. Let closure be GeneratorFunctionCreate(Method,
       StrictFormalParameters, 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] ,
--- | 
          2151 | 
        
        
          | gen-meth-rest-param-strict-body.js | 
           | 
          5607 | 
        
        
          | gen-meth-rest-params-trailing-comma-early-error.js | 
          ---
description: It's a syntax error if a FunctionRestParameter is followed by a trailing comma (generator method)
esid: sec-generator-function-definitions-runtime-semantics-propertydefinitionevaluation
features: [generators]
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    GeneratorMethod :
 PropertyName ( StrictFormalParameters ) { GeneratorBody }
    1. Let propKey be the result of evaluating PropertyName.
    2. ReturnIfAbrupt(propKey).
    3. If the function code for this GeneratorMethod is strict mode code,
       let strict be true. Otherwise let strict be false.
    4. Let scope be the running execution context's LexicalEnvironment.
    5. Let closure be GeneratorFunctionCreate(Method,
       StrictFormalParameters, 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]
--- | 
          2113 | 
        
        
          | gen-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 method)
esid: prod-GeneratorMethod
features: [generators]
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    14.4 Generator Function Definitions
    GeneratorMethod[Yield, Await]:
 PropertyName[?Yield, ?Await] ( UniqueFormalParameters[+Yield, ~Await] ) { GeneratorBody }
    BindingIdentifier : Identifier
    It is a Syntax Error if this production has a [Yield] parameter and
    StringValue of Identifier is "yield".
--- | 
          878 | 
        
        
          | gen-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 method)
esid: prod-GeneratorMethod
features: [generators]
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    14.4 Generator Function Definitions
    GeneratorMethod[Yield, Await]:
 PropertyName[?Yield, ?Await] ( UniqueFormalParameters[+Yield, ~Await] ) { GeneratorBody }
    BindingIdentifier : Identifier
    It is a Syntax Error if this production has a [Yield] parameter and
    StringValue of Identifier is "yield".
--- | 
          865 | 
        
        
          | gen-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 method)
esid: prod-GeneratorMethod
features: [generators]
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    14.4 Generator Function Definitions
    GeneratorMethod[Yield, Await]:
 PropertyName[?Yield, ?Await] ( UniqueFormalParameters[+Yield, ~Await] ) { GeneratorBody }
    IdentifierReference : Identifier
    It is a Syntax Error if this production has a [Yield] parameter and
    StringValue of Identifier is "yield".
--- | 
          886 | 
        
        
          | gen-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 method)
esid: prod-GeneratorMethod
features: [generators]
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    14.4 Generator Function Definitions
    GeneratorMethod[Yield, Await]:
 PropertyName[?Yield, ?Await] ( UniqueFormalParameters[+Yield, ~Await] ) { GeneratorBody }
    IdentifierReference : Identifier
    It is a Syntax Error if this production has a [Yield] parameter and
    StringValue of Identifier is "yield".
--- | 
          873 | 
        
        
          | gen-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 method)
esid: prod-GeneratorMethod
features: [generators]
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    14.4 Generator Function Definitions
    GeneratorMethod[Yield, Await]:
 PropertyName[?Yield, ?Await] ( UniqueFormalParameters[+Yield, ~Await] ) { GeneratorBody }
    LabelIdentifier : Identifier
    It is a Syntax Error if this production has a [Yield] parameter and
    StringValue of Identifier is "yield".
--- | 
          870 | 
        
        
          | gen-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 method)
esid: prod-GeneratorMethod
features: [generators]
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    14.4 Generator Function Definitions
    GeneratorMethod[Yield, Await]:
 PropertyName[?Yield, ?Await] ( UniqueFormalParameters[+Yield, ~Await] ) { GeneratorBody }
    LabelIdentifier : Identifier
    It is a Syntax Error if this production has a [Yield] parameter and
    StringValue of Identifier is "yield".
--- | 
          857 | 
        
        
          | gen-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 method - valid for non-strict only cases)
esid: prod-GeneratorMethod
features: [generators]
flags: [generated, noStrict]
info: |
    14.4 Generator Function Definitions
    GeneratorMethod[Yield, Await]:
 PropertyName ( UniqueFormalParameters ) { GeneratorBody }
--- | 
          1023 | 
        
        
          | gen-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 method - valid for non-strict only cases)
esid: prod-GeneratorMethod
features: [Symbol, object-spread, generators]
flags: [generated, noStrict]
info: |
    14.4 Generator Function Definitions
    GeneratorMethod[Yield, Await]:
 PropertyName ( UniqueFormalParameters ) { GeneratorBody }
    Spread Properties
    PropertyDefinition[Yield]:
      (...)
      ...AssignmentExpression[In, ?Yield]
--- | 
          1635 | 
        
        
          | gen-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 method)
esid: prod-GeneratorMethod
features: [object-spread, generators]
flags: [generated, onlyStrict]
negative:
  phase: parse
  type: SyntaxError
info: |
    14.4 Generator Function Definitions
    GeneratorMethod[Yield, Await]:
 PropertyName[?Yield, ?Await] ( UniqueFormalParameters[+Yield, ~Await] ) { GeneratorBody }
    Spread Properties
    PropertyDefinition[Yield]:
      (...)
      ...AssignmentExpression[In, ?Yield]
--- | 
          1082 | 
        
        
          | gen-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 method)
esid: prod-GeneratorMethod
features: [generators]
flags: [generated, onlyStrict]
negative:
  phase: parse
  type: SyntaxError
info: |
    14.4 Generator Function Definitions
    GeneratorMethod[Yield, Await]:
 PropertyName[?Yield, ?Await] ( UniqueFormalParameters[+Yield, ~Await] ) { GeneratorBody }
--- | 
          910 | 
        
        
          | gen-yield-spread-arr-multiple.js | 
          ---
description: Use yield value in a array spread position (Generator method)
esid: prod-GeneratorMethod
features: [generators]
flags: [generated]
includes: [compareArray.js]
info: |
    14.4 Generator Function Definitions
    GeneratorMethod[Yield, Await]:
 PropertyName[?Yield, ?Await] ( UniqueFormalParameters[+Yield, ~Await] ) { GeneratorBody }
    Array Initializer
    SpreadElement[Yield, Await]:
      ...AssignmentExpression[+In, ?Yield, ?Await]
--- | 
          1022 | 
        
        
          | gen-yield-spread-arr-single.js | 
          ---
description: Use yield value in a array spread position (Generator method)
esid: prod-GeneratorMethod
features: [generators]
flags: [generated]
info: |
    14.4 Generator Function Definitions
    GeneratorMethod[Yield, Await]:
 PropertyName[?Yield, ?Await] ( UniqueFormalParameters[+Yield, ~Await] ) { GeneratorBody }
    Array Initializer
    SpreadElement[Yield, Await]:
      ...AssignmentExpression[+In, ?Yield, ?Await]
--- | 
          1178 | 
        
        
          | gen-yield-spread-obj.js | 
          ---
description: Use yield value in a object spread position (Generator method)
esid: prod-GeneratorMethod
features: [object-spread, generators]
flags: [generated]
info: |
    14.4 Generator Function Definitions
    GeneratorMethod[Yield, Await]:
 PropertyName[?Yield, ?Await] ( UniqueFormalParameters[+Yield, ~Await] ) { GeneratorBody }
    Spread Properties
    PropertyDefinition[Yield]:
      (...)
      ...AssignmentExpression[In, ?Yield]
--- | 
          1111 | 
        
        
          | generator-invoke-ctor.js | 
          ---
description: >
    Generator functions declared as methods cannot be used as constructors.
es6id: 14.4.13
features: [generators]
--- | 
          415 | 
        
        
          | generator-invoke-fn-no-strict.js | 
          ---
description: >
    In the absence of the "use strict" directive, generator functions declared
    as methods obey "global" ThisMode semantics.
es6id: 14.4.13
flags: [noStrict]
features: [generators]
--- | 
          562 | 
        
        
          | generator-invoke-fn-strict.js | 
          ---
description: >
    In the presence of the "use strict" directive, generator functions declared
    as methods obey "strict" ThisMode semantics.
es6id: 14.4.13
flags: [noStrict]
features: [generators]
--- | 
          538 | 
        
        
          | generator-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]
--- | 
          1643 | 
        
        
          | generator-length.js | 
          ---
description: >
    Generator functions declared as methods have a `length` property that
    describes the number of formal parameters.
es6id: 14.4.13
includes: [propertyHelper.js]
features: [generators]
--- | 
          537 | 
        
        
          | generator-name-prop-string.js | 
          ---
description: >
    Generator functions declared as methods are assigned a `name` property
    according to the string value of their property name.
es6id: 14.4.13
includes: [propertyHelper.js]
features: [generators]
--- | 
          547 | 
        
        
          | generator-name-prop-symbol.js | 
          ---
description: >
    Generator functions declared as methods are assigned a `name` property
    according to the string value of their property name.
es6id: 14.4.13
includes: [propertyHelper.js]
features: [Symbol, generators]
--- | 
          576 | 
        
        
          | generator-no-yield.js | 
          ---
description: >
    Generators declared with GeneratorMethod syntax do not require a
    `yield` expression.
features: [generators]
es6id: 14.4
--- | 
          467 | 
        
        
          | generator-param-id-yield.js | 
          ---
description: >
    The BindingIdentifier of a SingleNameBinding witihn the FormalParameters of
    a GeneratorMethod may not be the `yield` keyword.
es6id: 14.4
features: [generators]
flags: [noStrict]
negative:
  phase: parse
  type: SyntaxError
--- | 
          476 | 
        
        
          | generator-param-init-yield.js | 
          ---
description: >
    The Initializer of a SingleNameBinding witihn the FormalParameters of a
    GeneratorMethod may not contain the `yield` keyword.
es6id: 14.4
features: [generators]
flags: [noStrict]
negative:
  phase: parse
  type: SyntaxError
--- | 
          504 | 
        
        
          | generator-param-redecl-const.js | 
          ---
info: |
 GeneratorMethod early SyntaxError when lexical declaration
 inside generator shadows parameter name
features: [generators]
es6id: 14.4.1
author: Sam Mikes
description: GeneratorMethod error with lexical shadowing
negative:
  phase: parse
  type: SyntaxError
--- | 
          475 | 
        
        
          | generator-param-redecl-let.js | 
          ---
info: |
 GeneratorMethod early SyntaxError when lexical declaration
 inside generator shadows parameter name
features: [generators]
es6id: 14.4.1
author: Sam Mikes
description: GeneratorMethod error with lexical shadowing
negative:
  phase: parse
  type: SyntaxError
--- | 
          473 | 
        
        
          | generator-params.js | 
          ---
description: >
    Generator functions declared as methods honor their declared formal
    parameters.
es6id: 14.4.13
features: [generators]
--- | 
          611 | 
        
        
          | generator-prop-name-eval-error.js | 
          ---
description: >
    Errors thrown during method definition are forwarded to the runtime.
es6id: 14.4.13
features: [generators]
--- | 
          413 | 
        
        
          | generator-prop-name-yield-expr.js | 
          ---
description: >
    When the `yield` keyword occurs within the PropertyName of a
    GeneratorMethod within a generator function, it behaves as a
    YieldExpression.
es6id: 14.4
features: [generators]
flags: [noStrict]
--- | 
          874 | 
        
        
          | generator-prop-name-yield-id.js | 
          ---
description: >
    When the `yield` keyword occurs within the PropertyName of a
    GeneratorMethod outside of a generator function, it behaves as an
    Identifier.
es6id: 14.4
features: [generators]
flags: [noStrict]
--- | 
          574 | 
        
        
          | generator-property-desc.js | 
          ---
description: >
    Generator functions declared as methods are defined as enumerable,
    writable, configurable properties on the initialized object.
es6id: 14.4.13
includes: [propertyHelper.js]
features: [generators]
--- | 
          518 | 
        
        
          | generator-prototype-prop.js | 
          ---
description: >
    Generator functions declared as methods define a `prototype` property.
es6id: 14.4.13
includes: [propertyHelper.js]
features: [generators]
--- | 
          636 | 
        
        
          | generator-prototype.js | 
          ---
description: >
    The prototype of generator functions declared as methods is the
    Generator Prototype.
es6id: 14.4.13
features: [generators]
--- | 
          446 | 
        
        
          | generator-return.js | 
          ---
description: >
    `return` is a valid statement within generator function bodies.
features: [generators]
es6id: 14.4
--- | 
          568 | 
        
        
          | generator-super-call-body.js | 
          ---
info: |
 GeneratorMethod early SyntaxError when super is called
 directly inside generator body
features: [generators]
es6id: 14.4.1
author: Sam Mikes
description: GeneratorMethod error if HasDirectSuper in body
negative:
  phase: parse
  type: SyntaxError
--- | 
          461 | 
        
        
          | generator-super-call-param.js | 
          ---
info: |
 GeneratorMethod early SyntaxError when super is called
 directly inside generator args
features: [generators]
es6id: 14.4.1
author: Sam Mikes
description: GeneratorMethod error if HasDirectSuper in args
negative:
  phase: parse
  type: SyntaxError
--- | 
          454 | 
        
        
          | generator-super-prop-body.js | 
          ---
info: |
 GeneratorMethod can reference SuperProperty in body
features: [generators]
es6id: 14.4.1
author: Sam Mikes
description: GeneratorMethod body uses SuperProperty (allowed)
--- | 
          462 | 
        
        
          | generator-super-prop-param.js | 
          ---
info: |
 GeneratorMethod can reference SuperProperty in default parameters
es6id: 14.4.1
author: Sam Mikes
description: GeneratorMethod uses SuperProperty (allowed)
features: [default-parameters, generators, super]
--- | 
          493 | 
        
        
          | generator-use-strict-with-non-simple-param.js | 
          ---
esid: sec-generator-function-definitions-static-semantics-early-errors
description: >
  A SyntaxError is thrown if a generator method 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 StrictFormalParameters is false.
negative:
  phase: parse
  type: SyntaxError
features: [generators]
--- | 
          682 | 
        
        
          | meth-array-destructuring-param-strict-body.js | 
           | 
          5357 | 
        
        
          | meth-dflt-params-abrupt.js | 
          ---
description: Abrupt completion returned by evaluation of initializer (method)
esid: sec-runtime-semantics-definemethod
features: [default-parameters]
flags: [generated]
info: |
    MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
    [...]
    6. Let closure be FunctionCreate(kind, StrictFormalParameters,
       FunctionBody, scope, strict). If functionPrototype was passed as a
       parameter then pass its value as the functionPrototype optional argument
       of FunctionCreate.
    [...]
    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.
--- | 
          2100 | 
        
        
          | meth-dflt-params-arg-val-not-undefined.js | 
          ---
description: Use of initializer when argument value is not `undefined` (method)
esid: sec-runtime-semantics-definemethod
features: [default-parameters]
flags: [generated]
info: |
    MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
    [...]
    6. Let closure be FunctionCreate(kind, StrictFormalParameters,
       FunctionBody, scope, strict). If functionPrototype was passed as a
       parameter then pass its value as the functionPrototype optional argument
       of FunctionCreate.
    [...]
    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.
    [...]
--- | 
          2976 | 
        
        
          | meth-dflt-params-arg-val-undefined.js | 
          ---
description: Use of initializer when argument value is `undefined` (method)
esid: sec-runtime-semantics-definemethod
features: [default-parameters]
flags: [generated]
info: |
    MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
    [...]
    6. Let closure be FunctionCreate(kind, StrictFormalParameters,
       FunctionBody, scope, strict). If functionPrototype was passed as a
       parameter then pass its value as the functionPrototype optional argument
       of FunctionCreate.
    [...]
    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.
    [...]
--- | 
          2239 | 
        
        
          | meth-dflt-params-duplicates.js | 
          ---
description: It is a Syntax Error if BoundNames of FormalParameters contains any duplicate elements. (method)
esid: sec-runtime-semantics-definemethod
features: [default-parameters]
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
    [...]
    6. Let closure be FunctionCreate(kind, StrictFormalParameters,
       FunctionBody, scope, strict). If functionPrototype was passed as a
       parameter then pass its value as the functionPrototype optional argument
       of FunctionCreate.
    [...]
    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.
--- | 
          1944 | 
        
        
          | meth-dflt-params-ref-later.js | 
          ---
description: Referencing a parameter that occurs later in the ParameterList (method)
esid: sec-runtime-semantics-definemethod
features: [default-parameters]
flags: [generated]
info: |
    MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
    [...]
    6. Let closure be FunctionCreate(kind, StrictFormalParameters,
       FunctionBody, scope, strict). If functionPrototype was passed as a
       parameter then pass its value as the functionPrototype optional argument
       of FunctionCreate.
    [...]
    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.
--- | 
          2083 | 
        
        
          | meth-dflt-params-ref-prior.js | 
          ---
description: Referencing a parameter that occurs earlier in the ParameterList (method)
esid: sec-runtime-semantics-definemethod
features: [default-parameters]
flags: [generated]
info: |
    MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
    [...]
    6. Let closure be FunctionCreate(kind, StrictFormalParameters,
       FunctionBody, scope, strict). If functionPrototype was passed as a
       parameter then pass its value as the functionPrototype optional argument
       of FunctionCreate.
    [...]
    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.
--- | 
          2272 | 
        
        
          | meth-dflt-params-ref-self.js | 
          ---
description: Referencing a parameter from within its own initializer (method)
esid: sec-runtime-semantics-definemethod
features: [default-parameters]
flags: [generated]
info: |
    MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
    [...]
    6. Let closure be FunctionCreate(kind, StrictFormalParameters,
       FunctionBody, scope, strict). If functionPrototype was passed as a
       parameter then pass its value as the functionPrototype optional argument
       of FunctionCreate.
    [...]
    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.
--- | 
          2072 | 
        
        
          | meth-dflt-params-rest.js | 
          ---
description: RestParameter does not support an initializer (method)
esid: sec-runtime-semantics-definemethod
features: [default-parameters]
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
    [...]
    6. Let closure be FunctionCreate(kind, StrictFormalParameters,
       FunctionBody, scope, strict). If functionPrototype was passed as a
       parameter then pass its value as the functionPrototype optional argument
       of FunctionCreate.
    [...]
    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]
--- | 
          1763 | 
        
        
          | meth-dflt-params-trailing-comma.js | 
          ---
description: A trailing comma should not increase the respective length, using default parameters (method)
esid: sec-runtime-semantics-definemethod
flags: [generated]
info: |
    MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
    [...]
    6. Let closure be FunctionCreate(kind, StrictFormalParameters,
       FunctionBody, scope, strict). If functionPrototype was passed as a
       parameter then pass its value as the functionPrototype optional argument
       of FunctionCreate.
    [...]
    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] ,
--- | 
          1927 | 
        
        
          | meth-eval-var-scope-syntax-err.js | 
          ---
description: sloppy direct eval in params introduces var (method in sloppy code)
esid: sec-runtime-semantics-definemethod
features: [default-parameters]
flags: [generated, noStrict]
info: |
    MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
    [...]
    6. Let closure be FunctionCreate(kind, StrictFormalParameters,
       FunctionBody, scope, strict). If functionPrototype was passed as a
       parameter then pass its value as the functionPrototype optional argument
       of FunctionCreate.
    [...]
    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.
--- | 
          1887 | 
        
        
          | meth-object-destructuring-param-strict-body.js | 
           | 
          5360 | 
        
        
          | meth-params-trailing-comma-multiple.js | 
          ---
description: A trailing comma should not increase the respective length, using multiple parameters (method)
esid: sec-runtime-semantics-definemethod
flags: [generated]
info: |
    MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
    [...]
    6. Let closure be FunctionCreate(kind, StrictFormalParameters,
       FunctionBody, scope, strict). If functionPrototype was passed as a
       parameter then pass its value as the functionPrototype optional argument
       of FunctionCreate.
    [...]
    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] ,
--- | 
          1920 | 
        
        
          | meth-params-trailing-comma-single.js | 
          ---
description: A trailing comma should not increase the respective length, using a single parameter (method)
esid: sec-runtime-semantics-definemethod
flags: [generated]
info: |
    MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
    [...]
    6. Let closure be FunctionCreate(kind, StrictFormalParameters,
       FunctionBody, scope, strict). If functionPrototype was passed as a
       parameter then pass its value as the functionPrototype optional argument
       of FunctionCreate.
    [...]
    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] ,
--- | 
          1882 | 
        
        
          | meth-rest-param-strict-body.js | 
           | 
          5366 | 
        
        
          | meth-rest-params-trailing-comma-early-error.js | 
          ---
description: It's a syntax error if a FunctionRestParameter is followed by a trailing comma (method)
esid: sec-runtime-semantics-definemethod
flags: [generated]
negative:
  phase: parse
  type: SyntaxError
info: |
    MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
    [...]
    6. Let closure be FunctionCreate(kind, StrictFormalParameters,
       FunctionBody, scope, strict). If functionPrototype was passed as a
       parameter then pass its value as the functionPrototype optional argument
       of FunctionCreate.
    [...]
    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]
--- | 
          1861 | 
        
        
          | name-invoke-ctor.js | 
          ---
description: >
    Functions declared as methods may not be used as constructors.
es6id: 14.3.8
--- | 
          359 | 
        
        
          | name-invoke-fn-no-strict.js | 
          ---
description: >
    In the absence of the "use strict" directive, functions declared as methods
    obey "global" ThisMode semantics.
es6id: 14.3.8
flags: [noStrict]
--- | 
          520 | 
        
        
          | name-invoke-fn-strict.js | 
          ---
description: >
    In the presence of the "use strict" directive, functions declared as
    methods obey "strict" ThisMode semantics.
es6id: 14.3.8
flags: [noStrict]
--- | 
          496 | 
        
        
          | name-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: [default-parameters]
includes: [propertyHelper.js]
--- | 
          1627 | 
        
        
          | name-length.js | 
          ---
description: >
    Functions declared as methods have a `length` property that describes the
    number of formal parameters.
es6id: 14.3.8
includes: [propertyHelper.js]
--- | 
          502 | 
        
        
          | name-name-prop-string.js | 
          ---
description: >
    Functions declared as methods are assigned a `name` property according to
    the string value of their property name.
es6id: 14.3.8
includes: [propertyHelper.js]
--- | 
          512 | 
        
        
          | name-name-prop-symbol.js | 
          ---
description: >
    Functions declared as methods are assigned a `name` property according to
    the string value of their property name.
es6id: 14.3.8
includes: [propertyHelper.js]
features: [Symbol]
--- | 
          552 | 
        
        
          | name-param-id-yield.js | 
          ---
description: >
    The BindingIdentifier of a SingleNameBinding witihn the FormalParameters of
    a non-generator MethodDefinition may be the `yield` keyword.
es6id: 14.3
flags: [noStrict]
--- | 
          465 | 
        
        
          | name-param-init-yield.js | 
          ---
description: >
    When the `yield` keyword occurs within the Initializer of a
    SingleNameBinding within the FormalParameters of a non-generator
    MethodDefinition, it behaves as an Identifier.
es6id: 14.3
flags: [noStrict]
--- | 
          526 | 
        
        
          | name-param-redecl.js | 
          ---
description: >
    It is a Syntax Error if any element of the BoundNames of
    StrictFormalParameters also occurs in the LexicallyDeclaredNames of
    FunctionBody.
es6id: 14.3.1
negative:
  phase: parse
  type: SyntaxError
--- | 
          479 | 
        
        
          | name-params.js | 
          ---
description: >
    Functions declared as methods honor their declared formal parameters.
es6id: 14.3.8
--- | 
          565 | 
        
        
          | name-prop-name-eval-error.js | 
          ---
description: >
    Errors thrown during method definition are forwarded to the runtime.
es6id: 14.3.8
--- | 
          388 | 
        
        
          | name-prop-name-yield-expr.js | 
          ---
description: >
    When the `yield` keyword occurs within the PropertyName of a
    non-generator MethodDefinition within a generator function, it behaves as a
    YieldExpression.
es6id: 14.3
features: [generators]
flags: [noStrict]
--- | 
          888 | 
        
        
          | name-prop-name-yield-id.js | 
          ---
description: >
    When the `yield` keyword occurs within the PropertyName of a
    non-generator MethodDefinition outside of a generator function, it behaves
    as an Identifier.
es6id: 14.3
flags: [noStrict]
--- | 
          565 | 
        
        
          | name-property-desc.js | 
          ---
description: >
    Functions declared as methods are defined as enumerable, writable,
    configurable properties on the initialized object.
es6id: 14.3.8
includes: [propertyHelper.js]
--- | 
          483 | 
        
        
          | name-prototype-prop.js | 
          ---
description: >
    Functions declared as methods do not define a `prototype` property.
es6id: 14.3.9
--- | 
          457 | 
        
        
          | name-prototype.js | 
          ---
description: >
    The prototype of functions declared as methods is the Function prototype.
es6id: 14.3.8
--- | 
          381 | 
        
        
          | name-super-call-body.js | 
          ---
description: >
    It is a Syntax Error if HasDirectSuper of MethodDefinition is true.
esid: sec-object-initializer-static-semantics-early-errors
negative:
  phase: parse
  type: SyntaxError
--- | 
          430 | 
        
        
          | name-super-call-param.js | 
          ---
description: >
    It is a Syntax Error if HasDirectSuper of MethodDefinition is true.
esid: sec-object-initializer-static-semantics-early-errors
negative:
  phase: parse
  type: SyntaxError
--- | 
          429 | 
        
        
          | name-super-prop-body.js | 
          ---
description: >
    The HomeObject of Functions declared as methods is the Object prototype.
es6id: 14.3.8
features: [super]
--- | 
          439 | 
        
        
          | name-super-prop-param.js | 
          ---
description: >
    The HomeObject of Functions declared as methods is the Object prototype.
es6id: 14.3.8
features: [super]
--- | 
          444 | 
        
        
          | object-method-returns-promise.js | 
          ---
author: Brian Terlson <brian.terlson@microsoft.com>
esid: pending
description: >
  Async function method definitions return promises
features: [async-functions]
--- | 
          453 | 
        
        
          | params-dflt-gen-meth-args-unmapped.js | 
          ---
description: Referencing the arguments object from a default parameter (generator method)
esid: sec-generator-function-definitions-runtime-semantics-propertydefinitionevaluation
es6id: 14.4.13
features: [generators, default-parameters]
info: |
    GeneratorMethod :
 PropertyName ( StrictFormalParameters ) { GeneratorBody }
    1. Let propKey be the result of evaluating PropertyName.
    2. ReturnIfAbrupt(propKey).
    3. If the function code for this GeneratorMethod is strict mode code,
       let strict be true. Otherwise let strict be false.
    4. Let scope be the running execution context's LexicalEnvironment.
    5. Let closure be GeneratorFunctionCreate(Method,
       StrictFormalParameters, 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.
--- | 
          2898 | 
        
        
          | params-dflt-gen-meth-ref-arguments.js | 
          ---
description: Referencing the arguments object from a default parameter (generator method)
esid: sec-generator-function-definitions-runtime-semantics-propertydefinitionevaluation
es6id: 14.4.13
features: [generators, default-parameters]
info: |
    GeneratorMethod :
 PropertyName ( StrictFormalParameters ) { GeneratorBody }
    1. Let propKey be the result of evaluating PropertyName.
    2. ReturnIfAbrupt(propKey).
    3. If the function code for this GeneratorMethod is strict mode code,
       let strict be true. Otherwise let strict be false.
    4. Let scope be the running execution context's LexicalEnvironment.
    5. Let closure be GeneratorFunctionCreate(Method,
       StrictFormalParameters, 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.
--- | 
          2468 | 
        
        
          | params-dflt-meth-args-unmapped.js | 
          ---
description: Referencing the arguments object from a default parameter (method)
esid: sec-runtime-semantics-definemethod
es6id: 14.3.8
features: [default-parameters]
info: |
    MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
    [...]
    6. Let closure be FunctionCreate(kind, StrictFormalParameters,
       FunctionBody, scope, strict). If functionPrototype was passed as a
       parameter then pass its value as the functionPrototype optional argument
       of FunctionCreate.
    [...]
    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. 
--- | 
          2645 | 
        
        
          | params-dflt-meth-ref-arguments.js | 
          ---
description: Referencing the arguments object from a default parameter (method)
esid: sec-runtime-semantics-definemethod
es6id: 14.3.8
features: [default-parameters]
info: |
    MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
    [...]
    6. Let closure be FunctionCreate(kind, StrictFormalParameters,
       FunctionBody, scope, strict). If functionPrototype was passed as a
       parameter then pass its value as the functionPrototype optional argument
       of FunctionCreate.
    [...]
    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.
--- | 
          2214 | 
        
        
          | private-name-early-error-async-fn-inside-class.js | 
          ---
esid: sec-method-definitions-static-semantics-early-errors
description: >
  Throws an early SyntaxError if a method definition has a private name even
  inside a class body (async method).
info: |
  Static Semantics: Early Errors
  PropertyDefinition : MethodDefinition
    It is a Syntax Error if PrivateBoundNames of MethodDefinition is non-empty.
negative:
  phase: parse
  type: SyntaxError
features: [class-methods-private, async-functions, class, class-fields-public]
--- | 
          711 | 
        
        
          | private-name-early-error-async-fn.js | 
          ---
esid: sec-method-definitions-static-semantics-early-errors
description: >
  Throws an early SyntaxError if a method definition has a private name
  (async method).
info: |
  Static Semantics: Early Errors
  PropertyDefinition : MethodDefinition
    It is a Syntax Error if PrivateBoundNames of MethodDefinition is non-empty.
negative:
  phase: parse
  type: SyntaxError
features: [class-methods-private, async-functions]
--- | 
          641 | 
        
        
          | private-name-early-error-async-gen-inside-class.js | 
          ---
esid: sec-method-definitions-static-semantics-early-errors
description: >
  Throws an early SyntaxError if a method definition has a private name even
  inside a class body. (async generator)
info: |
  Static Semantics: Early Errors
  PropertyDefinition : MethodDefinition
    It is a Syntax Error if PrivateBoundNames of MethodDefinition is non-empty.
negative:
  phase: parse
  type: SyntaxError
features: [class-methods-private, async-iteration, class, class-fields-public]
--- | 
          716 | 
        
        
          | private-name-early-error-async-gen.js | 
          ---
esid: sec-method-definitions-static-semantics-early-errors
description: >
  Throws an early SyntaxError if a method definition has a private name.
  (async generator)
info: |
  Static Semantics: Early Errors
  PropertyDefinition : MethodDefinition
    It is a Syntax Error if PrivateBoundNames of MethodDefinition is non-empty.
negative:
  phase: parse
  type: SyntaxError
features: [class-methods-private, async-iteration]
--- | 
          646 | 
        
        
          | private-name-early-error-gen-inside-class.js | 
          ---
esid: sec-method-definitions-static-semantics-early-errors
description: >
  Throws an early SyntaxError if a method definition has a private name even
  inside a class body. (generator)
info: |
  Static Semantics: Early Errors
  PropertyDefinition : MethodDefinition
    It is a Syntax Error if PrivateBoundNames of MethodDefinition is non-empty.
negative:
  phase: parse
  type: SyntaxError
features: [class-methods-private, generators, class, class-fields-public]
--- | 
          699 | 
        
        
          | private-name-early-error-gen.js | 
          ---
esid: sec-method-definitions-static-semantics-early-errors
description: >
  Throws an early SyntaxError if a method definition has a private name.
  (generator)
info: |
  Static Semantics: Early Errors
  PropertyDefinition : MethodDefinition
    It is a Syntax Error if PrivateBoundNames of MethodDefinition is non-empty.
negative:
  phase: parse
  type: SyntaxError
features: [class-methods-private, generators]
--- | 
          629 | 
        
        
          | private-name-early-error-get-method-inside-class.js | 
          ---
esid: sec-method-definitions-static-semantics-early-errors
description: >
  Throws an early SyntaxError if a method definition has a private name even
  inside a class body. (getter method)
info: |
  Static Semantics: Early Errors
  PropertyDefinition : MethodDefinition
    It is a Syntax Error if PrivateBoundNames of MethodDefinition is non-empty.
negative:
  phase: parse
  type: SyntaxError
features: [class-methods-private, class, class-fields-public]
--- | 
          693 | 
        
        
          | private-name-early-error-get-method.js | 
          ---
esid: sec-method-definitions-static-semantics-early-errors
description: >
  Throws an early SyntaxError if a method definition has a private name.
  (getter method)
info: |
  Static Semantics: Early Errors
  PropertyDefinition : MethodDefinition
    It is a Syntax Error if PrivateBoundNames of MethodDefinition is non-empty.
negative:
  phase: parse
  type: SyntaxError
features: [class-methods-private]
--- | 
          623 | 
        
        
          | private-name-early-error-method-inside-class.js | 
          ---
esid: sec-method-definitions-static-semantics-early-errors
description: >
  Throws an early SyntaxError if a method definition has a private name even
  inside a class body. (ordinary method)
info: |
  Static Semantics: Early Errors
  PropertyDefinition : MethodDefinition
    It is a Syntax Error if PrivateBoundNames of MethodDefinition is non-empty.
negative:
  phase: parse
  type: SyntaxError
features: [class-methods-private, class, class-fields-public]
--- | 
          691 | 
        
        
          | private-name-early-error-method.js | 
          ---
esid: sec-method-definitions-static-semantics-early-errors
description: >
  Throws an early SyntaxError if a method definition has a private name.
  (ordinary method)
info: |
  Static Semantics: Early Errors
  PropertyDefinition : MethodDefinition
    It is a Syntax Error if PrivateBoundNames of MethodDefinition is non-empty.
negative:
  phase: parse
  type: SyntaxError
features: [class-methods-private]
--- | 
          621 | 
        
        
          | private-name-early-error-set-method-inside-class.js | 
          ---
esid: sec-method-definitions-static-semantics-early-errors
description: >
  Throws an early SyntaxError if a method definition has a private name even
  inside a class body. (getter method)
info: |
  Static Semantics: Early Errors
  PropertyDefinition : MethodDefinition
    It is a Syntax Error if PrivateBoundNames of MethodDefinition is non-empty.
negative:
  phase: parse
  type: SyntaxError
features: [class-methods-private, class, class-fields-public]
--- | 
          694 | 
        
        
          | private-name-early-error-set-method.js | 
          ---
esid: sec-method-definitions-static-semantics-early-errors
description: >
  Throws an early SyntaxError if a method definition has a private name.
  (getter method)
info: |
  Static Semantics: Early Errors
  PropertyDefinition : MethodDefinition
    It is a Syntax Error if PrivateBoundNames of MethodDefinition is non-empty.
negative:
  phase: parse
  type: SyntaxError
features: [class-methods-private]
--- | 
          624 | 
        
        
          | setter-use-strict-with-non-simple-param.js | 
          ---
esid: sec-method-definitions-static-semantics-early-errors
description: >
  A SyntaxError is thrown if a setter method contains a non-simple parameter list and a UseStrict directive.
info: |
  Static Semantics: Early Errors
  It is a Syntax Error if ContainsUseStrict of FunctionBody is true and IsSimpleParameterList of PropertySetParameterList is false.
negative:
  phase: parse
  type: SyntaxError
--- | 
          648 | 
        
        
          | shell.js | 
           | 
          0 | 
        
        
          | static-init-await-binding-accessor.js | 
          ---
esid: sec-class-definitions-static-semantics-early-errors
description: The `await` keyword is interpreted as an identifier within the body of accessor methods
info: |
  ClassStaticBlockBody : ClassStaticBlockStatementList
  [...]
  - It is a Syntax Error if ContainsAwait of ClassStaticBlockStatementList is true.
features: [class-static-block]
--- | 
          578 | 
        
        
          | static-init-await-binding-generator.js | 
          ---
esid: sec-class-definitions-static-semantics-early-errors
description: The `await` keyword is interpreted as an identifier within the parameter list of generator methods
info: |
  ClassStaticBlockBody : ClassStaticBlockStatementList
  [...]
  - It is a Syntax Error if ContainsAwait of ClassStaticBlockStatementList is true.
features: [class-static-block]
--- | 
          584 | 
        
        
          | static-init-await-binding-normal.js | 
          ---
esid: sec-class-definitions-static-semantics-early-errors
description: The `await` keyword is interpreted as an identifier within the parameter list of methods
info: |
  ClassStaticBlockBody : ClassStaticBlockStatementList
  [...]
  - It is a Syntax Error if ContainsAwait of ClassStaticBlockStatementList is true.
features: [class-static-block]
--- | 
          573 | 
        
        
          | static-init-await-reference-accessor.js | 
          ---
esid: sec-class-definitions-static-semantics-early-errors
description: The `await` keyword is interpreted as an identifier within accessor methods
info: |
  ClassStaticBlockBody : ClassStaticBlockStatementList
  [...]
  - It is a Syntax Error if ContainsAwait of ClassStaticBlockStatementList is true.
features: [class-static-block]
--- | 
          784 | 
        
        
          | static-init-await-reference-generator.js | 
          ---
esid: sec-class-definitions-static-semantics-early-errors
description: The `await` keyword is interpreted as an identifier within generator methods
info: |
  ClassStaticBlockBody : ClassStaticBlockStatementList
  [...]
  - It is a Syntax Error if ContainsAwait of ClassStaticBlockStatementList is true.
features: [class-static-block]
--- | 
          775 | 
        
        
          | static-init-await-reference-normal.js | 
          ---
esid: sec-class-definitions-static-semantics-early-errors
description: The `await` keyword is interpreted as an identifier within methods
info: |
  ClassStaticBlockBody : ClassStaticBlockStatementList
  [...]
  - It is a Syntax Error if ContainsAwait of ClassStaticBlockStatementList is true.
features: [class-static-block]
--- | 
          757 | 
        
        
          | use-strict-with-non-simple-param.js | 
          ---
esid: sec-method-definitions-static-semantics-early-errors
description: >
  A SyntaxError is thrown if a method contains a non-simple parameter list and a UseStrict directive.
info: |
  Static Semantics: Early Errors
   It is a Syntax Error if ContainsUseStrict of FunctionBody is true and IsSimpleParameterList of StrictFormalParameters is false.
negative:
  phase: parse
  type: SyntaxError
--- | 
          636 | 
        
        
          | yield-as-expression-with-rhs.js | 
          ---
description: >
    `yield` is a valid expression within generator function bodies.
features: [generators]
es6id: 14.4
--- | 
          3057 | 
        
        
          | yield-as-expression-without-rhs.js | 
          ---
description: >
    `yield` is a valid expression within generator function bodies.
features: [generators]
es6id: 14.4
--- | 
          3117 | 
        
        
          | yield-as-function-expression-binding-identifier.js | 
          ---
description: >
    `yield` may be used as the binding identifier of a function expression
    within generator bodies.
features: [generators]
es6id: 14.1
flags: [noStrict]
--- | 
          520 | 
        
        
          | yield-as-generator-method-binding-identifier.js | 
          ---
description: >
    `yield` is a valid BindingIdentifier for GeneratorMethods
features: [generators]
es6id: 12.1.1
--- | 
          833 | 
        
        
          | yield-as-identifier-in-nested-function.js | 
          ---
description: >
    `yield` is not a reserved keyword within normal function bodies declared
    within generator function bodies.
features: [generators]
es6id: 12.1.1
flags: [noStrict]
--- | 
          547 | 
        
        
          | yield-as-literal-property-name.js | 
          ---
description: >
    `yield` may be used as a literal property name in an object literal
    within generator function bodies.
features: [generators]
es6id: 12.1.1
--- | 
          518 | 
        
        
          | yield-as-logical-or-expression.js | 
          ---
description: >
    `yield` expressions are not LogicalOrExpressions.
features: [generators]
es6id: 12.1.1
negative:
  phase: parse
  type: SyntaxError
--- | 
          408 | 
        
        
          | 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.
features: [generators]
es6id: 12.1.1
negative:
  phase: parse
  type: SyntaxError
--- | 
          462 | 
        
        
          | yield-as-property-name.js | 
          ---
description: >
    `yield` may be used as a literal property name in an object literal
    within generator function bodies.
features: [generators]
es6id: 12.1.1
--- | 
          503 | 
        
        
          | yield-as-statement.js | 
          ---
description: >
    `yield` is a valid statement within generator function bodies.
features: [generators]
es6id: 14.4
--- | 
          1237 | 
        
        
          | yield-as-yield-operand.js | 
          ---
description: >
    `yield` expressions may be used as the right-hand-side of other `yield`
    expressions.
features: [generators]
es6id: 14.4
--- | 
          859 | 
        
        
          | yield-newline.js | 
          ---
description: >
    Newlines terminate `yield` expressions.
features: [generators]
es6id: 14.4
--- | 
          660 | 
        
        
          | yield-return.js | 
          ---
info: |
    Generator can be declared with GeneratorMethod syntax
features: [generators]
es6id: 14.4
author: Sam Mikes
description: can declare generator methods
--- | 
          434 | 
        
        
          | yield-star-after-newline.js | 
          ---
description: >
    A newline may not precede the `*` token in a `yield` expression.
features: [generators]
es6id: 14.4
negative:
  phase: parse
  type: SyntaxError
--- | 
          412 | 
        
        
          | yield-star-before-newline.js | 
          ---
description: >
    The right-hand side of a `yield *` expression may appear on a new line.
features: [generators]
es6id: 14.4
--- | 
          492 | 
        
        
          | yield-weak-binding.js | 
          ---
description: >
    `yield` expressions bind weakly
features: [generators]
es6id: 14.4
negative:
  phase: parse
  type: SyntaxError
--- | 
          378 |