summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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);