From: redmine@... Date: 2011-04-19T13:42:25+09:00 Subject: [ruby-core:35810] [Ruby 1.9 - Bug #4565][Closed] incompatible change at rev.31169 about autoload Issue #4565 has been updated by Nobuyoshi Nakada. Status changed from Assigned to Closed % Done changed from 0 to 100 ---------------------------------------- Bug #4565: incompatible change at rev.31169 about autoload http://redmine.ruby-lang.org/issues/4565 Author: Hidetoshi Nagai Status: Closed Priority: High Assignee: Nobuyoshi Nakada 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