mirror of
https://github.com/pry/pry.git
synced 2022-11-09 12:35:05 -05:00
Avoid loop in weird method locator
This commit is contained in:
parent
5eb4e23dd8
commit
c2ed9ec135
2 changed files with 25 additions and 1 deletions
|
@ -104,8 +104,10 @@ class Pry
|
|||
# TODO: Fix up the exception handling so we don't need a bare rescue
|
||||
if normal_method?(guess)
|
||||
return guess
|
||||
else
|
||||
elsif guess != guess.super
|
||||
guess = guess.super
|
||||
else
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -41,6 +41,27 @@ describe "whereami" do
|
|||
Object.remove_const(:Cor)
|
||||
end
|
||||
|
||||
if RUBY_VERSION > "2.0.0"
|
||||
it 'should work with prepended methods' do
|
||||
module Cor2
|
||||
def blimey!
|
||||
super
|
||||
end
|
||||
end
|
||||
class Cor
|
||||
prepend Cor2
|
||||
def blimey!
|
||||
pry_eval(binding, 'whereami').should =~ /Cor2[#]blimey!/
|
||||
end
|
||||
end
|
||||
|
||||
Cor.new.blimey!
|
||||
|
||||
Object.remove_const(:Cor)
|
||||
Object.remove_const(:Cor2)
|
||||
end
|
||||
end
|
||||
|
||||
it 'should work in BasicObjects' do
|
||||
cor = Class.new(BasicObject) do
|
||||
def blimey!
|
||||
|
@ -230,4 +251,5 @@ describe "whereami" do
|
|||
it "should work inside an object" do
|
||||
expect(pry_eval(Object.new, 'whereami')).to match(/Inside #<Object/)
|
||||
end
|
||||
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue