class RuboCop::Cop::Lint::ElseLayout

end
do_that
else do_this

if something
@example
which is usually a mistake.
having an expression on the same line as the else keyword,
This cop checks for odd else block layout - like

def check(node)

def check(node)
  return unless node
  if node.loc.respond_to?(:else) &&
     node.loc.else &&
     node.loc.else.is?('else')
    _cond, _if_branch, else_branch = *node
    return unless else_branch && else_branch.type == :begin
    first_else_expr = else_branch.children.first
    if first_else_expr.loc.expression.line == node.loc.else.line
      add_offense(first_else_expr, :expression, message)
    end
  elsif node.loc.respond_to?(:keyword) &&
        %w(if elsif).include?(node.loc.keyword.source)
    _cond, _if_branch, else_branch = *node
    check(else_branch)
  end
end

def message

def message
  'Odd `else` layout detected. Did you mean to use `elsif`?'
end

def on_if(node)

def on_if(node)
  # ignore ternary ops
  return if node.loc.respond_to?(:question)
  # ignore modifier ops & elsif nodes
  return unless node.loc.end
  check(node)
end