  6688→function parseIdentifierOrArrow(
  6689→  parser: Parser,
  6690→  context: Context,
  6691→  privateScope: PrivateScope | undefined,
  6692→): ESTree.Identifier | ESTree.ArrowFunctionExpression {
  6693→  const { tokenStart: start } = parser;
  6694→  const { tokenValue } = parser;
  6695→
  6696→  let isNonSimpleParameterList: 0 | 1 = 0;
  6697→  let hasStrictReserved: 0 | 1 = 0;
  6698→
  6699→  if ((parser.getToken() & Token.IsEvalOrArguments) === Token.IsEvalOrArguments) {
  6700→    isNonSimpleParameterList = 1;
  6701→  } else if ((parser.getToken() & Token.FutureReserved) === Token.FutureReserved) {
  6702→    hasStrictReserved = 1;
  6703→  }
  6704→
  6705→  const expr = parseIdentifier(parser, context);
  6706→  parser.assignable = AssignmentKind.Assignable;
  6707→  if (parser.getToken() === Token.Arrow) {
  6708→    const scope = parser.options.lexical ? createArrowHeadParsingScope(parser, context, tokenValue) : undefined;
  6709→
  6710→    if (isNonSimpleParameterList) parser.flags |= Flags.NonSimpleParameterList;
  6711→    if (hasStrictReserved) parser.flags |= Flags.HasStrictReserved;
  6712→
  6713→    return parseArrowFunctionExpression(parser, context, scope, privateScope, [expr], /* isAsync */ 0, start);
  6714→  }
  6715→  return expr;
  6716→}
  6717→
  6718→/**
  6719→ * Parse arrow function expression
  6720→ *
  6721→ * @param parser  Parser object
  6722→ * @param context Context masks
  6723→ * @param params
  6724→ * @param isAsync
  6725→ * @param start Start index
  6726→ */
  6727→function parseArrowFromIdentifier(
  6728→  parser: Parser,
  6729→  context: Context,
  6730→  privateScope: PrivateScope | undefined,
  6731→  value: any,
  6732→  expr: ESTree.Expression,
  6733→  inNew: 0 | 1,
  6734→  canAssign: 0 | 1,
  6735→  isAsync: 0 | 1,
  6736→  start: Location,
  6737→): ESTree.ArrowFunctionExpression {
  6738→  if (!canAssign) parser.report(Errors.InvalidAssignmentTarget);
  6739→  if (inNew) parser.report(Errors.InvalidAsyncArrow);
  6740→  parser.flags &= ~Flags.NonSimpleParameterList;
  6741→  const scope = parser.options.lexical ? createArrowHeadParsingScope(parser, context, value) : void 0;
  6742→
  6743→  return parseArrowFunctionExpression(parser, context, scope, privateScope, [expr], isAsync, start);
  6744→}
  6745→
  6746→/**
  6747→ * Parse arrow function expression
  6748→ *
  6749→ * @param parser  Parser object
  6750→ * @param context Context masks
  6751→ * @param params
  6752→ * @param isAsync
  6753→ * @param start Start index
  6754→ */
  6755→function parseParenthesizedArrow(
  6756→  parser: Parser,
  6757→  context: Context,
  6758→  scope: Scope | undefined,
  6759→  privateScope: PrivateScope | undefined,
  6760→  params: any,
  6761→  canAssign: 0 | 1,
  6762→  isAsync: 0 | 1,
  6763→  start: Location,
  6764→): ESTree.ArrowFunctionExpression {
  6765→  if (!canAssign) parser.report(Errors.InvalidAssignmentTarget);
  6766→
  6767→  for (let i = 0; i < params.length; ++i) reinterpretToPattern(parser, params[i]);
  6768→
  6769→  return parseArrowFunctionExpression(parser, context, scope, privateScope, params, isAsync, start);
  6770→}
  6771→
  6772→/**
  6773→ * Parse arrow function expression
  6774→ *
  6775→ * @param parser  Parser object
  6776→ * @param context Context masks
  6777→ * @param params
  6778→ * @param isAsync
  6779→ * @param start Start index
  6780→ */
  6781→function parseArrowFunctionExpression(
  6782→  parser: Parser,
  6783→  context: Context,
  6784→  scope: Scope | undefined,
  6785→  privateScope: PrivateScope | undefined,
  6786→  params: any,
  6787→  isAsync: 0 | 1,
  6788→  start: Location,
  6789→): ESTree.ArrowFunctionExpression {
  6790→  /**
  6791→   * ArrowFunction :
  6792→   *   ArrowParameters => ConciseBody
  6793→   *
  6794→   * ArrowParameters :
  6795→   *   BindingIdentifier
  6796→   *   CoverParenthesizedExpressionAndArrowParameterList
  6797→   *
  6798→   * CoverParenthesizedExpressionAndArrowParameterList :
  6799→   *   ( Expression )
  6800→   *   ( )
  6801→   *   ( ... BindingIdentifier )
  6802→   *   ( Expression , ... BindingIdentifier )
  6803→   *
  6804→   * ConciseBody :
  6805→   *   [lookahead not {] AssignmentExpression
  6806→   *   { FunctionBody }
  6807→   *

[2106 more lines in file. Use offset=6808 to continue.]