Bug #3949
closedCan predefined classes be removed?
Description
=begin
According to rdoc, Module#remove_const cannot remove predefined classes:
Predefined classes and singleton objects (such as true) cannot be
removed.
But actually we can remove them.
$ ruby-1.8.0 -ve 'Object.send(:remove_const, :String); p String'
ruby 1.8.0 (2003-08-04) [i686-darwin]
-e:1: uninitialized constant String (NameError)
$ ruby-1.8.1 -ve 'Object.send(:remove_const, :String); p String'
ruby 1.8.1 (2003-12-25) [i686-darwin]
-e:1: uninitialized constant String (NameError)
...
$ ruby-1.9.1 -ve 'Object.send(:remove_const, :String); p String'
ruby 1.9.1p427 (2010-05-23 revision 27982) [i386-darwin9.8.0]
-e:1:in <main>': uninitialized constant String (NameError) $ ruby-1.9.2 -ve 'Object.send(:remove_const, :String); p String' ruby 1.9.2p6 (2010-08-18 revision 29252) [i386-darwin9.8.0] -e:1:in
': uninitialized constant Object::String (NameError)
The rdoc seems to be describing Ruby 1.6:
ruby-1.6 -ve 'Object.send(:remove_const, :String); p String'
$ ruby 1.6.8 (2005-09-21) [i386-darwin9.1.0]
-e:1:in remove_const': cannot remove Object::String (NameError) from -e:1:in
send'
from -e:1
This limitation is intended? or is the rdoc wrong? I think we should be able to remove any class on our own risk.
=end