struct Ameba::Rule::Style::RedundantReturn

Overview

A rule that disallows redundant return expressions.

For example, this is considered invalid:

def foo
  return :bar
end
def bar(arg)
  case arg
  when .nil?
    return "nil"
  when .blank?
    return "blank"
  else
    return "empty"
  end
end

And has to be written as the following:

def foo
  :bar
end
def bar(arg)
  case arg
  when .nil?
    "nil"
  when .blank?
    "blank"
  else
    "empty"
  end
end

Configuration params

  1. allow_multi_return, default: true

Allows end-user to configure whether to report or not the return statements which return tuple literals i.e.

def method(a, b)
  return a, b
end

If this param equals to false, the method above has to be written as:

def method(a, b)
  {a, b}
end
  1. allow_empty_return, default: true

Allows end-user to configure whether to report or not the return statements without arguments. Sometimes such returns are used to return the nil value explicitly.

def method
  @foo = :empty
  return
end

If this param equals to false, the method above has to be written as:

def method
  @foo = :empty
  nil
end

YAML config example

Style/RedundantReturn:
  Enabled: true
  AllowMutliReturn: true
  AllowEmptyReturn: true

Defined in:

ameba/rule/style/redundant_return.cr

Constant Summary

MSG = "Redundant `return` detected"

Constructors

Instance Method Summary

Instance methods inherited from struct Ameba::Rule::Base

catch(source : Source) catch, excluded?(source) excluded?, group group, initialize initialize, name name, special? special?, test(source : Source, node : Crystal::ASTNode, *opts)
test(source : Source)
test

Constructor methods inherited from struct Ameba::Rule::Base

new new

Class methods inherited from struct Ameba::Rule::Base

parsed_doc parsed_doc

Constructor Detail

def self.new(config = nil) #

A rule that disallows redundant return expressions.

For example, this is considered invalid:

def foo
  return :bar
end
def bar(arg)
  case arg
  when .nil?
    return "nil"
  when .blank?
    return "blank"
  else
    return "empty"
  end
end

And has to be written as the following:

def foo
  :bar
end
def bar(arg)
  case arg
  when .nil?
    "nil"
  when .blank?
    "blank"
  else
    "empty"
  end
end

Configuration params

  1. allow_multi_return, default: true

Allows end-user to configure whether to report or not the return statements which return tuple literals i.e.

def method(a, b)
  return a, b
end

If this param equals to false, the method above has to be written as:

def method(a, b)
  {a, b}
end
  1. allow_empty_return, default: true

Allows end-user to configure whether to report or not the return statements without arguments. Sometimes such returns are used to return the nil value explicitly.

def method
  @foo = :empty
  return
end

If this param equals to false, the method above has to be written as:

def method
  @foo = :empty
  nil
end

YAML config example

Style/RedundantReturn:
  Enabled: true
  AllowMutliReturn: true
  AllowEmptyReturn: true

[View source]

Instance Method Detail

def test(source : Nil | Ameba::Source, node : Crystal::Def) #

[View source]
def test(source) #

[View source]