[macruby-changes] [3186] MacRuby/trunk/eval.c

source_changes at macosforge.org source_changes at macosforge.org
Mon Jan 4 14:42:37 PST 2010


Revision: 3186
          http://trac.macosforge.org/projects/ruby/changeset/3186
Author:   lsansonetti at apple.com
Date:     2010-01-04 14:42:37 -0800 (Mon, 04 Jan 2010)
Log Message:
-----------
#extend_object: honor nested modules

Modified Paths:
--------------
    MacRuby/trunk/eval.c

Modified: MacRuby/trunk/eval.c
===================================================================
--- MacRuby/trunk/eval.c	2010-01-04 22:17:59 UTC (rev 3185)
+++ MacRuby/trunk/eval.c	2010-01-04 22:42:37 UTC (rev 3186)
@@ -582,8 +582,22 @@
     }
     else {
 	klass = rb_singleton_class(obj);
-    }	
+    }
+
     rb_include_module(klass, module);
+
+    VALUE m = module;
+    do {
+	VALUE ary = rb_attr_get(m, idIncludedModules);
+	if (ary != Qnil) {
+	    for (int i = 0, count = RARRAY_LEN(ary); i < count; i++) {
+		VALUE mod = RARRAY_AT(ary, i);
+		rb_extend_object(obj, mod);
+	    }
+	}
+	m = RCLASS_SUPER(m);
+    }
+    while (m == 0 || RCLASS_SINGLETON(m));
 }
 
 /*
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20100104/2aeef1ec/attachment.html>


More information about the macruby-changes mailing list