https://bugs.ruby-lang.org/https://bugs.ruby-lang.org/favicon.ico?17113305112017-09-25T12:21:12ZRuby Issue Tracking SystemRuby master - Feature #13922: Consider showing warning messages about same-named aliases - either directly or perhaps via the "did you mean gem"https://bugs.ruby-lang.org/issues/13922?journal_id=668982017-09-25T12:21:12Zznz (Kazuhiro NISHIYAMA)
<ul></ul><p>In following example, <code>ruby -w</code> warns <code>alias_after_def</code> and <code>duplicated_def</code> only, but rubocop warns all combinations.</p>
<pre><code>% cat /tmp/a.rb
#!/usr/bin/ruby -w
class Foo
def m
end
def alias_after_def
end
alias alias_after_def m
alias def_after_alias m
def def_after_alias
end
alias duplicated_alias m
alias duplicated_alias m
def duplicated_def
end
def duplicated_def
end
end
% ruby -w /tmp/a.rb
/tmp/a.rb:9: warning: method redefined; discarding old alias_after_def
/tmp/a.rb:6: warning: previous definition of alias_after_def was here
/tmp/a.rb:22: warning: method redefined; discarding old duplicated_def
/tmp/a.rb:19: warning: previous definition of duplicated_def was here
% rubocop /tmp/a.rb
Inspecting 1 file
W
Offenses:
/tmp/a.rb:1:1: W: Script file a.rb doesn't have execute permission.
#!/usr/bin/ruby -w
^^^^^^^^^^^^^^^^^^
/tmp/a.rb:2:1: C: Missing top-level class documentation comment.
class Foo
^^^^^
/tmp/a.rb:3:3: C: Put empty method definitions on a single line.
def m ...
^^^^^
/tmp/a.rb:6:3: C: Put empty method definitions on a single line.
def alias_after_def ...
^^^^^^^^^^^^^^^^^^^
/tmp/a.rb:9:3: W: Method Foo#alias_after_def is defined at both /tmp/a.rb:6 and /tmp/a.rb:9.
alias alias_after_def m
^^^^^
/tmp/a.rb:13:3: W: Method Foo#def_after_alias is defined at both /tmp/a.rb:11 and /tmp/a.rb:13.
def def_after_alias
^^^
/tmp/a.rb:13:3: C: Put empty method definitions on a single line.
def def_after_alias ...
^^^^^^^^^^^^^^^^^^^
/tmp/a.rb:17:3: W: Method Foo#duplicated_alias is defined at both /tmp/a.rb:16 and /tmp/a.rb:17.
alias duplicated_alias m
^^^^^
/tmp/a.rb:19:3: C: Put empty method definitions on a single line.
def duplicated_def ...
^^^^^^^^^^^^^^^^^^
/tmp/a.rb:22:3: W: Method Foo#duplicated_def is defined at both /tmp/a.rb:19 and /tmp/a.rb:22.
def duplicated_def
^^^
/tmp/a.rb:22:3: C: Put empty method definitions on a single line.
def duplicated_def ...
^^^^^^^^^^^^^^^^^^
1 file inspected, 11 offenses detected
</code></pre>