Bug #2203
closedCall to a removed method doesn't raise an exception
Description
=begin
obj = Object.new
s = class << obj
alias_method :rt, :respond_to?
self
end
p obj.methods(false) # [:rt]
p obj.rt(:bar) # returns false as expected
s.send(:remove_method, :rt) # removes :rt method
p obj.methods(false) # []
obj.rt(:foo) # this should raise an exception but it doesn’t
D:\temp>ruby19 -v a.rb
ruby 1.9.1p129 (2009-05-12 revision 23412) [i386-mswin32]
[:rt]
false
[]
D:\temp>ruby -v a.rb
ruby 1.8.6 (2009-03-31 patchlevel 368) [i386-mingw32]
["rt"]
false
[]
=end
Updated by tmat (Tomas Matousek) over 14 years ago
=begin
Sorry for duplicates of this bug report - the web site sometimes responds only after a few refreshes.
Tomas
-----Original Message-----
From: Tomas Matousek [mailto:redmine@ruby-lang.org]
Sent: Tuesday, October 13, 2009 5:41 PM
To: ruby-core@ruby-lang.org
Subject: [ruby-core:26075] [Bug #2203] Call to a removed method doesn't raise an exception
Bug #2203: Call to a removed method doesn't raise an exception
http://redmine.ruby-lang.org/issues/show/2203
Author: Tomas Matousek
Status: Open, Priority: High
ruby -v: ruby 1.8.6 (2009-03-31 patchlevel 368) [i386-mingw32]
obj = Object.new
s = class << obj
alias_method :rt, :respond_to?
self
end
p obj.methods(false) # [:rt]
p obj.rt(:bar) # returns false as expected
s.send(:remove_method, :rt) # removes :rt method
p obj.methods(false) # []
obj.rt(:foo) # this should raise an exception but it doesn’t
D:\temp>ruby19 -v a.rb
ruby 1.9.1p129 (2009-05-12 revision 23412) [i386-mswin32] [:rt] false []
D:\temp>ruby -v a.rb
ruby 1.8.6 (2009-03-31 patchlevel 368) [i386-mingw32] ["rt"] false []
=end
Updated by nobu (Nobuyoshi Nakada) over 14 years ago
- Status changed from Open to Closed
=begin
This issue was solved with changeset r25359.
Tomas, thank you for your reporting of the issue.
You have greatfully contributed toward Ruby.
May Ruby be with you.
=end