[macruby-changes] [387] MacRuby/branches/lrz_unstable/vm_eval.c
source_changes at macosforge.org
source_changes at macosforge.org
Wed Jul 30 15:08:27 PDT 2008
Revision: 387
http://trac.macosforge.org/projects/ruby/changeset/387
Author: lsansonetti at apple.com
Date: 2008-07-30 15:08:27 -0700 (Wed, 30 Jul 2008)
Log Message:
-----------
wip
Modified Paths:
--------------
MacRuby/branches/lrz_unstable/vm_eval.c
Modified: MacRuby/branches/lrz_unstable/vm_eval.c
===================================================================
--- MacRuby/branches/lrz_unstable/vm_eval.c 2008-07-30 20:40:50 UTC (rev 386)
+++ MacRuby/branches/lrz_unstable/vm_eval.c 2008-07-30 22:08:27 UTC (rev 387)
@@ -199,10 +199,16 @@
method = rb_objc_method_node(klass, mid, &imp, &sel);
- if (imp != NULL && method == NULL) {
+ if (imp != NULL && method == NULL)
return rb_objc_call(recv, sel, argc, (VALUE *)argv);
+
+ DLOG("RCALL", "[<%s %p> %s] node=%p", class_getName((Class)klass), (void *)recv, (char *)sel, method);
+
+ if (method == NULL) {
+ int missing_scope = scope == 2 ? NOEX_VCALL : scope == 3 ? NOEX_SUPER : NOEX_VCALL;
+ return method_missing(recv, mid, argc, argv, missing_scope);
}
- else if (method != NULL) {
+ else {
noex = method->nd_noex;
klass = method->nd_clss;
body = method->nd_body;
@@ -226,7 +232,6 @@
klass = method->nd_clss;
body = method->nd_body;
}
-#endif
else {
if (scope == 3) {
return method_missing(recv, mid, argc, argv, NOEX_SUPER);
@@ -234,6 +239,7 @@
return method_missing(recv, mid, argc, argv,
scope == 2 ? NOEX_VCALL : 0);
}
+#endif
if (mid != missing) {
/* receiver specified form for private method */
@@ -1324,7 +1330,11 @@
rb_define_method(rb_cBasicObject, "instance_eval", rb_obj_instance_eval, -1);
rb_define_method(rb_cBasicObject, "instance_exec", rb_obj_instance_exec, -1);
+#if WITH_OBJC
+ rb_define_private_method(rb_cNSObject, "method_missing", rb_method_missing, -1);
+#else
rb_define_private_method(rb_cBasicObject, "method_missing", rb_method_missing, -1);
+#endif
rb_define_method(rb_cBasicObject, "__send__", rb_f_send, -1);
rb_define_method(rb_mKernel, "send", rb_f_send, -1);
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/macruby-changes/attachments/20080730/f6da3ac4/attachment-0001.html
More information about the macruby-changes
mailing list