class Prism::Translation::Parser::Compiler

def visit_if_node(node)

^^^^^^^^^^^^^^^
foo ? bar : baz

^^^^^^^^^^
bar if foo

^^^^^^^^^^^^^^^^^^^
if foo then bar end
def visit_if_node(node)
  if !node.if_keyword_loc
    builder.ternary(
      visit(node.predicate),
      token(node.then_keyword_loc),
      visit(node.statements),
      token(node.consequent.else_keyword_loc),
      visit(node.consequent)
    )
  elsif node.if_keyword_loc.start_offset == node.location.start_offset
    builder.condition(
      token(node.if_keyword_loc),
      visit(node.predicate),
      if node.then_keyword_loc
        token(node.then_keyword_loc)
      else
        srange_find(node.predicate.location.end_offset, (node.statements&.location || node.consequent&.location || node.end_keyword_loc).start_offset, [";"])
      end,
      visit(node.statements),
      case node.consequent
      when IfNode
        token(node.consequent.if_keyword_loc)
      when ElseNode
        token(node.consequent.else_keyword_loc)
      end,
      visit(node.consequent),
      if node.if_keyword != "elsif"
        token(node.end_keyword_loc)
      end
    )
  else
    builder.condition_mod(
      visit(node.statements),
      visit(node.consequent),
      token(node.if_keyword_loc),
      visit(node.predicate)
    )
  end
end