aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-02-12 15:48:44 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-02-12 15:48:44 +0000
commit6b7dbd3e31c7d5943a5f021c9e45af0a0c3a664d (patch)
tree76fe893ab338b299b14c79bd51593c8c92140597
parent3d9c0014e6c9ebe269781c718f380b9527114d8f (diff)
downloadruby-6b7dbd3e31c7d5943a5f021c9e45af0a0c3a664d.tar.gz
* 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
-rw-r--r--ChangeLog4
-rw-r--r--bootstraptest/test_autoload.rb9
-rw-r--r--insns.def1
3 files changed, 14 insertions, 0 deletions
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 <nobu@ruby-lang.org>
+
+ * insns.def (defineclass): try to autoload const to be overridden.
+
Thu Feb 12 23:22:29 2009 Tanaka Akira <akr@fsij.org>
* 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);