Issue #4565 has been reported by Hidetoshi Nagai.

----------------------------------------
Bug #4565: incompatible change at rev.31169 about autoload
http://redmine.ruby-lang.org/issues/4565

Author: Hidetoshi Nagai
Status: Open
Priority: High
Assignee: 
Category: core
Target version: 1.9.3
ruby -v: ruby 1.9.3dev (2011-04-10 trunk 31255) [x86_64-linux]


 After rev.31169, const_defined? about a pre-autoloading constant on a included module returns true.
 # Ruby/Tk cannot work on rev.31169 or later.
 
 On ruby1.8 and before rev.31169, returns false.
 For example, the following outputs a different result between before rev.31169 and after.
 ----------------------------------------------
 module X; autoload :A, 'foo.rb'; end                                          
 module M; include X; end                                                      
 p M.const_defined? :A
 ----------------------------------------------
 # see also, [ruby-dev:43383].
 
 This change makes it impossible checking M::A is defined on M or included from X without autoloading,
 beacause M.autoload?(:A) returns nil.
 Even if M.autoload?(:A) returns 'foo.rb', it is not a good solution.
 It has a same problem about where the autoload is defined.
 At least, Ruby/Tk requires a way to check it for default-widget-set control.
 -- 
 Hidetoshi NAGAI (nagai / ai.kyutech.ac.jp)
 Department of Artificial Intelligence, Kyushu Institute of Technology
 


-- 
http://redmine.ruby-lang.org