# Tenko parser autogenerated test case

- From: tests/testcases/yield/arrow_piggy/autogen.md
- Path: tests/testcases/yield/arrow_piggy/gen/test/function_2a_g2829_7b_async_28yield29_7d.md

> :: yield : arrow piggy : gen : test
>
> ::> function 2a g2829 7b async 28yield29 7d
>            async (yield)
>          }

## Input


`````js
function * g() {
  async (yield)
}
`````

## Output

_Note: the whole output block is auto-generated. Manual changes will be overwritten!_

Below follow outputs in five parsing modes: sloppy, sloppy+annexb, strict script, module, module+annexb.

Note that the output parts are auto-generated by the test runner to reflect actual result.

### Sloppy mode

Parsed with script goal and as if the code did not start with strict mode header.

`````
ast: {
  type: 'Program',
  loc:{start:{line:1,column:0},end:{line:3,column:1},source:''},
  body: [
    {
      type: 'FunctionDeclaration',
      loc:{start:{line:1,column:0},end:{line:3,column:1},source:''},
      generator: true,
      async: false,
      id: {
        type: 'Identifier',
        loc:{start:{line:1,column:11},end:{line:1,column:12},source:''},
        name: 'g'
      },
      params: [],
      body: {
        type: 'BlockStatement',
        loc:{start:{line:1,column:15},end:{line:3,column:1},source:''},
        body: [
          {
            type: 'ExpressionStatement',
            loc:{start:{line:2,column:2},end:{line:2,column:15},source:''},
            expression: {
              type: 'CallExpression',
              loc:{start:{line:2,column:2},end:{line:2,column:15},source:''},
              callee: {
                type: 'Identifier',
                loc:{start:{line:2,column:2},end:{line:2,column:7},source:''},
                name: 'async'
              },
              arguments: [
                {
                  type: 'YieldExpression',
                  loc:{start:{line:2,column:9},end:{line:2,column:14},source:''},
                  delegate: false,
                  argument: null
                }
              ]
            }
          }
        ]
      }
    }
  ]
}

tokens (13x):
       ID_function PUNC_STAR IDENT PUNC_PAREN_OPEN PUNC_PAREN_CLOSE
       PUNC_CURLY_OPEN ID_async PUNC_PAREN_OPEN ID_yield
       PUNC_PAREN_CLOSE ASI PUNC_CURLY_CLOSE
`````

### Strict mode

Parsed with script goal but as if it was starting with `"use strict"` at the top.

_Output same as sloppy mode._

### Module goal

Parsed with the module goal.

_Output same as sloppy mode._

### Sloppy mode with AnnexB

Parsed with script goal with AnnexB rules enabled and as if the code did not start with strict mode header.

_Output same as sloppy mode._

### Module goal with AnnexB

Parsed with the module goal with AnnexB rules enabled.

_Output same as sloppy mode._

## AST Printer

Printer output different from input [sloppy][annexb:no]:

````js
function* g() {async((yield));}
````

Produces same AST
