Skip to content

Commit 56dfd08

Browse files
committed
handle more cases for ruby/prefer-endless-method
1 parent 25376c3 commit 56dfd08

File tree

2 files changed

+35
-2
lines changed

2 files changed

+35
-2
lines changed

lib/ruby/prefer-endless-method.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,11 @@ def one_plus_one = 1 + 1
2828

2929
first_body_node = node.body.body.first
3030
break if %i[if_node unless_node].include?(first_body_node.type) && first_body_node.end_keyword.nil?
31-
break if %i[multi_write_node instance_variable_or_write_node class_variable_or_write_node or_node and_node].include?(first_body_node.type)
31+
break if %i[multi_write_node instance_variable_or_write_node class_variable_or_write_node or_node and_node hash_node].include?(first_body_node.type)
32+
break if first_body_node.type == :call_node && first_body_node.opening.nil? && !first_body_node.arguments.nil? && first_body_node.closing.nil? && !first_body_node.block.nil?
3233

3334
body_column = mutation_adapter.get_start_loc(first_body_node).column
34-
new_body = node.body.body.first.to_source.split("\n").map { |line| line.sub(/^ {#{body_column}}/, '') }.join("\n")
35+
new_body = first_body_node.to_source.split("\n").map { |line| line.sub(/^ {#{body_column}}/, '') }.join("\n")
3536
receiver_and_name = node.receiver ? "#{node.receiver.to_source}.#{node.name}" : node.name.to_s
3637
replace_with "def #{receiver_and_name}{{lparen}}{{parameters}}{{rparen}} = #{new_body}"
3738
end

spec/ruby/prefer-endless-method_spec.rb

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,38 @@ def new_rating=(new_rating)
154154
include_examples 'convertable'
155155
end
156156

157+
context 'do not process for hash_node' do
158+
let(:test_content) { <<~EOS }
159+
def query
160+
{ foo: 'bar' }
161+
end
162+
EOS
163+
let(:test_rewritten_content) { <<~EOS }
164+
def query
165+
{ foo: 'bar' }
166+
end
167+
EOS
168+
169+
include_examples 'convertable'
170+
end
171+
172+
context 'do not process for call_node without parentheses' do
173+
let(:test_content) { <<~EOS }
174+
def should_be_ignored
175+
should 'be ignored' do
176+
end
177+
end
178+
EOS
179+
let(:test_rewritten_content) { <<~EOS }
180+
def should_be_ignored
181+
should 'be ignored' do
182+
end
183+
end
184+
EOS
185+
186+
include_examples 'convertable'
187+
end
188+
157189
context 'do not process if name ends with =' do
158190
let(:test_content) { <<~EOS }
159191
def remove_item_ids=(item_ids)

0 commit comments

Comments
 (0)