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,
);
}