From 6b7dbd3e31c7d5943a5f021c9e45af0a0c3a664d Mon Sep 17 00:00:00 2001 From: nobu Date: Thu, 12 Feb 2009 15:48:44 +0000 Subject: * insns.def (defineclass): try to autoload const to be overridden. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22269 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 4 ++++ bootstraptest/test_autoload.rb | 9 +++++++++ insns.def | 1 + 3 files changed, 14 insertions(+) diff --git a/ChangeLog b/ChangeLog index dbb415a720..c82cf1693e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Fri Feb 13 00:48:42 2009 Nobuyoshi Nakada + + * insns.def (defineclass): try to autoload const to be overridden. + Thu Feb 12 23:22:29 2009 Tanaka Akira * test/socket/test_socket.rb (test_udp_server): filter out unreachable diff --git a/bootstraptest/test_autoload.rb b/bootstraptest/test_autoload.rb index 395153f438..fe728e1e4c 100644 --- a/bootstraptest/test_autoload.rb +++ b/bootstraptest/test_autoload.rb @@ -67,3 +67,12 @@ assert_finish 5, %q{ end }, '[ruby-core:21696]' +assert_equal 'A::C', %q{ + open("zzz.rb", "w") {} + class A + autoload :C, "zzz" + class C + end + C + end +} diff --git a/insns.def b/insns.def index 4eef8f64fa..9a709a5b3e 100644 --- a/insns.def +++ b/insns.def @@ -888,6 +888,7 @@ defineclass vm_check_if_namespace(cbase); /* find klass */ + rb_autoload_load(cbase, id); if (rb_const_defined_at(cbase, id)) { /* already exist */ klass = rb_const_get_at(cbase, id); -- cgit v1.2.3