public function rewriteChildren()

in codegen/syntax/IfStatement.hack [150:186]


  public function rewriteChildren<Tret as ?Node>(
    (function(Node, vec<Node>): Tret) $rewriter,
    vec<Node> $parents = vec[],
  ): this {
    $parents[] = $this;
    $keyword = $rewriter($this->_keyword, $parents);
    $left_paren = $rewriter($this->_left_paren, $parents);
    $condition = $rewriter($this->_condition, $parents);
    $right_paren = $rewriter($this->_right_paren, $parents);
    $statement = $rewriter($this->_statement, $parents);
    $elseif_clauses = $this->_elseif_clauses === null
      ? null
      : $rewriter($this->_elseif_clauses, $parents);
    $else_clause = $this->_else_clause === null
      ? null
      : $rewriter($this->_else_clause, $parents);
    if (
      $keyword === $this->_keyword &&
      $left_paren === $this->_left_paren &&
      $condition === $this->_condition &&
      $right_paren === $this->_right_paren &&
      $statement === $this->_statement &&
      $elseif_clauses === $this->_elseif_clauses &&
      $else_clause === $this->_else_clause
    ) {
      return $this;
    }
    return new static(
      $keyword as IfToken,
      $left_paren as LeftParenToken,
      $condition as IExpression,
      $right_paren as RightParenToken,
      $statement as IStatement,
      /* HH_FIXME[4110] ?NodeList<ElseifClause> may not be enforceable */ $elseif_clauses,
      $else_clause as ?ElseClause,
    );
  }