mirror of
https://github.com/pry/pry.git
synced 2022-11-09 12:35:05 -05:00
Fix Ruby 2.6 warning for Binding#source_location
eval('[__FILE__, __LINE__]') will not work in future Ruby. Let's stop using it when Binding#source_location is available because it prints noisy warnings. Since Binding#source_location is added in Ruby 2.6 https://github.com/ruby/ruby/commit/571e48b7442, this commit is leaving old code with branching by binding.respond_to?(:source_location). Fixes #1871
This commit is contained in:
parent
54e6ce52f7
commit
272b3290b5
5 changed files with 50 additions and 9 deletions
|
@ -3,7 +3,11 @@ class Pry
|
|||
module FileAndLineLocator
|
||||
class << self
|
||||
def from_binding(target)
|
||||
[target.eval("__FILE__"), target.eval("__LINE__")]
|
||||
if target.respond_to?(:source_location)
|
||||
target.source_location
|
||||
else
|
||||
[target.eval("__FILE__"), target.eval("__LINE__")]
|
||||
end
|
||||
end
|
||||
|
||||
def from_code_object(code_object, filename_argument)
|
||||
|
|
|
@ -86,7 +86,13 @@ class Pry
|
|||
# The file to play from when no code object is specified.
|
||||
# e.g `play --lines 4..10`
|
||||
def default_file
|
||||
target.eval("__FILE__") && File.expand_path(target.eval("__FILE__"))
|
||||
file =
|
||||
if target.respond_to?(:source_location)
|
||||
target.source_location.first
|
||||
else
|
||||
target.eval("__FILE__")
|
||||
end
|
||||
file && File.expand_path(file)
|
||||
end
|
||||
|
||||
def file_content
|
||||
|
|
|
@ -27,7 +27,13 @@ class Pry
|
|||
private
|
||||
|
||||
def current_file
|
||||
File.expand_path target.eval("__FILE__")
|
||||
file =
|
||||
if target.respond_to?(:source_location)
|
||||
target.source_location.first
|
||||
else
|
||||
target.eval("__FILE__")
|
||||
end
|
||||
File.expand_path file
|
||||
end
|
||||
|
||||
def reload_current_file
|
||||
|
|
|
@ -37,8 +37,13 @@ class Pry
|
|||
BANNER
|
||||
|
||||
def setup
|
||||
@file = expand_path(target.eval('__FILE__'))
|
||||
@line = target.eval('__LINE__')
|
||||
if target.respond_to?(:source_location)
|
||||
file, @line = target.source_location
|
||||
@file = expand_path(file)
|
||||
else
|
||||
@file = expand_path(target.eval('__FILE__'))
|
||||
@line = target.eval('__LINE__')
|
||||
end
|
||||
@method = Pry::Method.from_binding(target)
|
||||
end
|
||||
|
||||
|
|
|
@ -25,7 +25,11 @@ class Pry
|
|||
# @return [Boolean]
|
||||
def normal_method?(method, b)
|
||||
if method && method.source_file && method.source_range
|
||||
binding_file, binding_line = b.eval('__FILE__'), b.eval('__LINE__')
|
||||
if b.respond_to?(:source_location)
|
||||
binding_file, binding_line = b.source_location
|
||||
else
|
||||
binding_file, binding_line = b.eval('__FILE__'), b.eval('__LINE__')
|
||||
end
|
||||
(File.expand_path(method.source_file) == File.expand_path(binding_file)) &&
|
||||
method.source_range.include?(binding_line)
|
||||
end
|
||||
|
@ -77,15 +81,31 @@ class Pry
|
|||
end
|
||||
|
||||
def target_file
|
||||
pry_file? ? target.eval('__FILE__') : File.expand_path(target.eval('__FILE__'))
|
||||
file =
|
||||
if target.respond_to?(:source_location)
|
||||
target.source_location.first
|
||||
else
|
||||
target.eval('__FILE__')
|
||||
end
|
||||
pry_file? ? file : File.expand_path(file)
|
||||
end
|
||||
|
||||
def target_line
|
||||
target.eval('__LINE__')
|
||||
if target.respond_to?(:source_location)
|
||||
target.source_location.last
|
||||
else
|
||||
target.eval('__LINE__')
|
||||
end
|
||||
end
|
||||
|
||||
def pry_file?
|
||||
Pry.eval_path == target.eval('__FILE__')
|
||||
file =
|
||||
if target.respond_to?(:source_location)
|
||||
target.source_location.first
|
||||
else
|
||||
target.eval('__FILE__')
|
||||
end
|
||||
Pry.eval_path == file
|
||||
end
|
||||
|
||||
# it's possible in some cases that the method we find by this approach is a sub-method of
|
||||
|
|
Loading…
Reference in a new issue