class RuboCop::Cop::Style::TrailingMethodEndStatement


end
end
bar
block do
def foo
end
baz.map { |b| b.this(x) }
def do_this(x)
end
do_stuff
def some_method
# good
end end
bar
block do
def foo
baz.map { |b| b.this(x) } end
def do_this(x)
do_stuff; end
def some_method
# bad
@example
This cop checks for trailing code after the method definition.

def body_and_end_on_same_line?(node)

def body_and_end_on_same_line?(node)
  last_child = node.children.last
  last_child.loc.last_line == node.loc.end.last_line
end

def on_def(node)

def on_def(node)
  return unless trailing_end?(node)
  add_offense(node.loc.end) do |corrector|
    corrector.insert_before(
      node.loc.end,
      "\n#{' ' * node.loc.keyword.column}"
    )
  end
end

def trailing_end?(node)

def trailing_end?(node)
  node.body &&
    node.multiline? &&
    body_and_end_on_same_line?(node)
end