Skip to content

Files

Latest commit

 

History

History
71 lines (47 loc) · 1.37 KB

Lint-UselessRuby2Keywords.md

File metadata and controls

71 lines (47 loc) · 1.37 KB

Pattern: Unnecessary ruby2_keywords call

Issue: -

Description

This rule looks for ruby2_keywords calls for methods that do not need it.

ruby2_keywords should only be called on methods that accept an argument splat (*args) but do not explicit keyword arguments (k: or k: true) or a keyword splat (**kwargs).

Examples

# good (splat argument without keyword arguments)
ruby2_keywords def foo(*args); end

# bad (no arguments)
ruby2_keywords def foo; end

# good
def foo; end

# bad (positional argument)
ruby2_keywords def foo(arg); end

# good
def foo(arg); end

# bad (double splatted argument)
ruby2_keywords def foo(**args); end

# good
def foo(**args); end

# bad (keyword arguments)
ruby2_keywords def foo(i:, j:); end

# good
def foo(i:, j:); end

# bad (splat argument with keyword arguments)
ruby2_keywords def foo(*args, i:, j:); end

# good
def foo(*args, i:, j:); end

# bad (splat argument with double splat)
ruby2_keywords def foo(*args, **kwargs); end

# good
def foo(*args, **kwargs); end

# bad (ruby2_keywords given a symbol)
def foo; end
ruby2_keywords :foo

# good
def foo; end

# bad (ruby2_keywords with dynamic method)
define_method(:foo) { |arg| }
ruby2_keywords :foo

# good
define_method(:foo) { |arg| }

Further Reading