mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* variable.c (rb_autoload_p): search superclasses as same as actual
loading. fixes [ruby-core:35679] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31279 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
d986500059
commit
af103c63dc
3 changed files with 27 additions and 1 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
Thu Apr 14 21:23:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
|
* variable.c (rb_autoload_p): search superclasses as same as actual
|
||||||
|
loading. fixes [ruby-core:35679]
|
||||||
|
|
||||||
Thu Apr 14 21:21:06 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
Thu Apr 14 21:21:06 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
* include/ruby/win32.h (frexp, modf): wrongly declared as pure in
|
* include/ruby/win32.h (frexp, modf): wrongly declared as pure in
|
||||||
|
|
|
@ -34,4 +34,22 @@ p Foo::Bar
|
||||||
File.unlink(*tmpfiles) rescue nil if tmpfiles
|
File.unlink(*tmpfiles) rescue nil if tmpfiles
|
||||||
tmpdirs.each {|dir| Dir.rmdir(dir)}
|
tmpdirs.each {|dir| Dir.rmdir(dir)}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_autoload_p
|
||||||
|
bug4565 = '[ruby-core:35679]'
|
||||||
|
|
||||||
|
require 'tmpdir'
|
||||||
|
tmpdir = Dir.mktmpdir('autoload')
|
||||||
|
tmpfile = tmpdir + '/foo.rb'
|
||||||
|
a = Module.new do
|
||||||
|
autoload :X, tmpfile
|
||||||
|
end
|
||||||
|
b = Module.new do
|
||||||
|
include a
|
||||||
|
end
|
||||||
|
assert_equal(true, a.const_defined?(:X))
|
||||||
|
assert_equal(true, b.const_defined?(:X))
|
||||||
|
assert_equal(tmpfile, a.autoload?(:X), bug4565)
|
||||||
|
assert_equal(tmpfile, b.autoload?(:X), bug4565)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1569,7 +1569,10 @@ rb_autoload_p(VALUE mod, ID id)
|
||||||
NODE *load;
|
NODE *load;
|
||||||
const char *loading = 0;
|
const char *loading = 0;
|
||||||
|
|
||||||
if (!autoload_node_id(mod, id)) return Qnil;
|
while (!autoload_node_id(mod, id)) {
|
||||||
|
mod = RCLASS_SUPER(mod);
|
||||||
|
if (!mod) return Qnil;
|
||||||
|
}
|
||||||
load = autoload_node(mod, id, &loading);
|
load = autoload_node(mod, id, &loading);
|
||||||
if (!load) return Qnil;
|
if (!load) return Qnil;
|
||||||
return load && (file = load->nd_lit) ? file : Qnil;
|
return load && (file = load->nd_lit) ? file : Qnil;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue