Skip to content

Commit 4265041

Browse files
committed
safe guard in ruby/prefer-endless-method
1 parent 0889fef commit 4265041

File tree

2 files changed

+36
-1
lines changed

2 files changed

+36
-1
lines changed

lib/ruby/prefer-endless-method.rb

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,12 @@ def one_plus_one = 1 + 1
2323

2424
within_files Synvert::ALL_RUBY_FILES + Synvert::ALL_RAKE_FILES do
2525
find_node '.def_node[body!=nil][body.body.length=1]' do
26-
body_column = mutation_adapter.get_start_loc(node.body.body.first).column
26+
first_body_node = node.body.body.first
27+
if %i[if_node unless_node].include?(first_body_node.type) && first_body_node.end_keyword.nil?
28+
break
29+
end
30+
break if first_body_node.type == :multi_write_node
31+
body_column = mutation_adapter.get_start_loc(first_body_node).column
2732
new_body = node.body.body.first.to_source.split("\n").map { |line| line.sub(/^ {#{body_column}}/, '') }.join("\n")
2833
replace_with "def {{name}}{{lparen}}{{parameters}}{{rparen}} = #{new_body}"
2934
end

spec/ruby/prefer-endless-method_spec.rb

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,4 +85,34 @@ def generate_invitation_token = loop do
8585

8686
include_examples 'convertable'
8787
end
88+
89+
context 'do not process if end_keyword is nil' do
90+
let(:test_content) { <<~EOS }
91+
def current_user
92+
@current_user ||= User.find(session[:user_id]) if session[:user_id]
93+
end
94+
EOS
95+
let(:test_rewritten_content) { <<~EOS }
96+
def current_user
97+
@current_user ||= User.find(session[:user_id]) if session[:user_id]
98+
end
99+
EOS
100+
101+
include_examples 'convertable'
102+
end
103+
104+
context 'do not process for multi_write_node' do
105+
let(:test_content) { <<~EOS }
106+
def index
107+
@pagy, @builds = pagy(@organization.builds)
108+
end
109+
EOS
110+
let(:test_rewritten_content) { <<~EOS }
111+
def index
112+
@pagy, @builds = pagy(@organization.builds)
113+
end
114+
EOS
115+
116+
include_examples 'convertable'
117+
end
88118
end

0 commit comments

Comments
 (0)