Skip to content

Commit

Permalink
use NodeMutation to fetch file line
Browse files Browse the repository at this point in the history
  • Loading branch information
flyerhzm committed Jun 16, 2024
1 parent a8eac57 commit 2f0785f
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 10 deletions.
3 changes: 2 additions & 1 deletion lib/synvert/core/rewriter/instance.rb
Original file line number Diff line number Diff line change
Expand Up @@ -436,7 +436,8 @@ def add_action(action)
# end
# @param message [String] warning message.
def warn(message)
@rewriter.add_warning Rewriter::Warning.new(self, message)
line = @current_mutation.adapter.get_start_loc(@current_node).line
@rewriter.add_warning Rewriter::Warning.new(@file_path, line, message)
end

# It adds a callback when visiting an ast node.
Expand Down
9 changes: 5 additions & 4 deletions lib/synvert/core/rewriter/warning.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,12 @@ module Synvert::Core
class Rewriter::Warning
# Initialize a Warning.
#
# @param instance [Synvert::Core::Rewriter::Instance]
# @param file_path [String] file path.
# @param line [Integer] file line.
# @param message [String] warning message.
def initialize(instance, message)
@file_path = instance.file_path
@line = instance.current_node.loc.expression.line
def initialize(file_path, line, message)
@file_path = file_path
@line = line
@message = message
end

Expand Down
4 changes: 3 additions & 1 deletion spec/synvert/core/rewriter/instance_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -260,7 +260,9 @@ module Synvert::Core
end

it 'parses warn' do
expect(Rewriter::Warning).to receive(:new).with(instance, 'foobar')
instance.instance_variable_set(:@file_path, 'app/test.rb')
expect(@current_mutation).to receive_message_chain(:adapter, :get_start_loc, :line).and_return(2)
expect(Rewriter::Warning).to receive(:new).with('app/test.rb', 2, 'foobar')
instance.warn 'foobar'
end

Expand Down
5 changes: 1 addition & 4 deletions spec/synvert/core/rewriter/warning_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,7 @@
module Synvert::Core
describe Rewriter::Warning do
subject {
source = "def test\n debugger\nend"
send_node = Parser::CurrentRuby.parse(source).body.first
instance = double(current_node: send_node, file_path: 'app/test.rb')
Rewriter::Warning.new(instance, 'remove debugger')
Rewriter::Warning.new('app/test.rb', 2, 'remove debugger')
}

it 'gets message with filename and line number' do
Expand Down

0 comments on commit 2f0785f

Please sign in to comment.