Module#autoload No Longer Raises where 1.8 Does
There has been a change between 1.8 and 1.9 with Module#autoload when the autoloaded file doesn't declare the named class and the module is already open:
$ cat /tmp/autoload.rb
autoload :Y, "/tmp/empty_file.rb"
class Y end end
$ ruby86 -vw /tmp/autoload.rb
ruby 1.8.6 (2009-06-08 patchlevel 369) [i686-linux]
/tmp/autoload.rb:7: uninitialized constant Autoload::W::Y (NameError)
$ ruby -vw /tmp/autoload.rb
ruby 1.9.2dev (2009-07-08 trunk 23995) [i686-linux]
nobu's post in [ruby-core:19129] suggests that 1.8 is correct here. Is the 1.9 behaviour a bug?
Updated by yugui (Yuki Sonoda) almost 14 years ago
- Assignee set to nobu (Nobuyoshi Nakada)
- Priority changed from 3 to 5
Updated by marcandre (Marc-Andre Lafortune) over 13 years ago
- Target version set to 1.9.2
Updated by mame (Yusuke Endoh) about 13 years ago
This behavior was changed at r22269, by nobu himself.
Nobu, please judge this.
Yusuke Endoh email@example.com
Updated by nobu (Nobuyoshi Nakada) about 13 years ago
- Status changed from Open to Rejected
Intended change, because class/module definitions don't need presceeding constant definitions.
It creates new one or re-opens existing one.
Sorry but I can't remember where the discussion was in ruby-core, now.