class RuboCop::Cop::Lint::ReturnInVoidContext

end
return
def foo=(bar)
end
baz
return if bar?
foo
def initialize
# good
@example
end
return 42
def foo=(bar)
end
baz
return :qux if bar?
foo
def initialize
# bad
@example
where the value will be ignored. (initialize and setter methods)
Checks for the use of a return with a value in a context

def non_void_context(return_node)

def non_void_context(return_node)
  return_node.each_ancestor(:block, :def, :defs).first
end

def on_return(return_node)

def on_return(return_node)
  return unless return_node.descendants.any?
  context_node = non_void_context(return_node)
  return unless context_node&.def_type?
  return unless context_node&.void_context?
  add_offense(
    return_node.loc.keyword,
    message: format(message, method: context_node.method_name)
  )
end