   505→   * ExpressionStatement[Yield, Await]:
   506→   *  [lookahead ∉ { {, function, async [no LineTerminator here] function, class, let [ }]Expression[+In, ?Yield, ?Await]
   507→   */
   508→
   509→  return parseExpressionStatement(parser, context, expr, tokenStart);
   510→}
   511→
   512→/**
   513→ * Parses block statement
   514→ *
   515→ * @see [Link](https://tc39.github.io/ecma262/#prod-BlockStatement)
   516→ * @see [Link](https://tc39.github.io/ecma262/#prod-Block)
   517→ *
   518→ * @param parser  Parser object
   519→ * @param context Context masks
   520→ * @param scope  Scope object
   521→ * @param labels Labels object
   522→ * @param type BlockStatement or StaticBlock
   523→ */
   524→function parseBlock<T extends ESTree.BlockStatement | ESTree.StaticBlock = ESTree.BlockStatement>(
   525→  parser: Parser,
   526→  context: Context,
   527→  scope: Scope | undefined,
   528→  privateScope: PrivateScope | undefined,
   529→  labels: ESTree.Labels,
   530→  start: Location = parser.tokenStart,
   531→  type: T['type'] = 'BlockStatement',
   532→): T {
   533→  // Block ::
   534→  //   '{' StatementList '}'
   535→
   536→  const body: ESTree.Statement[] = [];
   537→
   538→  consume(parser, context | Context.AllowRegExp, Token.LeftBrace);
   539→  while (parser.getToken() !== Token.RightBrace) {
   540→    body.push(
   541→      parseStatementListItem(parser, context, scope, privateScope, Origin.BlockStatement, { $: labels }) as any,
   542→    );
   543→  }
   544→
   545→  consume(parser, context | Context.AllowRegExp, Token.RightBrace);
   546→
   547→  return parser.finishNode(
   548→    {
   549→      type,
   550→      body,
   551→    } as T,
   552→    start,
   553→  );
   554→}
   555→
   556→/**
   557→ * Parses return statement
   558→ *
   559→ * @see [Link](https://tc39.github.io/ecma262/#prod-ReturnStatement)
   560→ *
   561→ * @param parser Parser object
   562→ * @param context Context masks
   563→ */
   564→function parseReturnStatement(
   565→  parser: Parser,
   566→  context: Context,
   567→  privateScope: PrivateScope | undefined,
   568→): ESTree.ReturnStatement {
   569→  // ReturnStatement ::
   570→  //   'return' [no line terminator] Expression? ';'
   571→
   572→  if ((context & Context.InReturnContext) === 0) parser.report(Errors.IllegalReturn);
   573→
   574→  const start = parser.tokenStart;
   575→  nextToken(parser, context | Context.AllowRegExp);
   576→
   577→  const argument =
   578→    parser.flags & Flags.NewLine || parser.getToken() & Token.IsAutoSemicolon
   579→      ? null
   580→      : parseExpressions(parser, context, privateScope, 0, 1, parser.tokenStart);
   581→
   582→  matchOrInsertSemicolon(parser, context | Context.AllowRegExp);
   583→
   584→  return parser.finishNode<ESTree.ReturnStatement>(

[8329 more lines in file. Use offset=585 to continue.]