Bug #4565

incompatible change at rev.31169 about autoload

Added by Hidetoshi Nagai about 3 years ago. Updated almost 3 years ago.

[ruby-core:35679]
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] Backport:

Description

=begin
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, .

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

=end

History

#1 Updated by Yui NARUSE about 3 years ago

  • Status changed from Open to Assigned
  • Assignee set to Nobuyoshi Nakada

=begin

=end

#2 Updated by Nobuyoshi Nakada about 3 years ago

  • Status changed from Assigned to Closed
  • % Done changed from 0 to 100

=begin

=end

Also available in: Atom PDF