[macruby-changes] [259] MacRuby/branches/testing

source_changes at macosforge.org source_changes at macosforge.org
Fri Jun 6 12:49:38 PDT 2008


Revision: 259
          http://trac.macosforge.org/projects/ruby/changeset/259
Author:   lsansonetti at apple.com
Date:     2008-06-06 12:49:38 -0700 (Fri, 06 Jun 2008)

Log Message:
-----------
merge with trunk

Modified Paths:
--------------
    MacRuby/branches/testing/array.c
    MacRuby/branches/testing/blockinlining.c
    MacRuby/branches/testing/include/ruby/node.h
    MacRuby/branches/testing/parse.y

Modified: MacRuby/branches/testing/array.c
===================================================================
--- MacRuby/branches/testing/array.c	2008-06-06 19:48:20 UTC (rev 258)
+++ MacRuby/branches/testing/array.c	2008-06-06 19:49:38 UTC (rev 259)
@@ -4224,6 +4224,10 @@
     rb_define_method(rb_cArray, "flatten", rb_ary_flatten, -1);
     rb_define_method(rb_cArray, "flatten!", rb_ary_flatten_bang, -1);
     rb_define_method(rb_cArray, "_count", rb_ary_count, -1);
+#if WITH_OBJC
+    /* to maintain backwards compatibility with our /etc/irbrc file */
+    rb_define_method(rb_cArray, "nitems", rb_ary_count, -1);
+#endif
     rb_define_method(rb_cArray, "shuffle!", rb_ary_shuffle_bang, 0);
     rb_define_method(rb_cArray, "shuffle", rb_ary_shuffle, 0);
     rb_define_method(rb_cArray, "choice", rb_ary_choice, 0);

Modified: MacRuby/branches/testing/blockinlining.c
===================================================================
--- MacRuby/branches/testing/blockinlining.c	2008-06-06 19:48:20 UTC (rev 258)
+++ MacRuby/branches/testing/blockinlining.c	2008-06-06 19:49:38 UTC (rev 259)
@@ -9,9 +9,6 @@
 **********************************************************************/
 
 #include "ruby/ruby.h"
-#if WITH_OBJC
-# define process_named_args(x) (x)
-#endif
 #include "ruby/node.h"
 #include "vm_core.h"
 

Modified: MacRuby/branches/testing/include/ruby/node.h
===================================================================
--- MacRuby/branches/testing/include/ruby/node.h	2008-06-06 19:48:20 UTC (rev 258)
+++ MacRuby/branches/testing/include/ruby/node.h	2008-06-06 19:49:38 UTC (rev 259)
@@ -425,16 +425,17 @@
 #define NEW_DXSTR(s) NEW_NODE(NODE_DXSTR,s,0,0)
 #define NEW_DSYM(s) NEW_NODE(NODE_DSYM,s,0,0)
 #define NEW_EVSTR(n) NEW_NODE(NODE_EVSTR,0,(n),0)
-#if WITH_OBJC
+#if WITH_OBJC && __IN_PARSE_Y__
 # define NEW_CALL(r,m,a) process_named_args(NEW_NODE(NODE_CALL,r,m,a))
 # define NEW_FCALL(m,a) process_named_args(NEW_NODE(NODE_FCALL,0,m,a))
 # define NEW_VCALL(m) process_named_args(NEW_NODE(NODE_VCALL,0,m,0))
+# define NEW_SUPER(a) unprocess_named_args(NEW_NODE(NODE_SUPER,0,0,a))
 #else
 # define NEW_CALL(r,m,a) NEW_NODE(NODE_CALL,r,m,a)
 # define NEW_FCALL(m,a) NEW_NODE(NODE_FCALL,0,m,a)
 # define NEW_VCALL(m) NEW_NODE(NODE_VCALL,0,m,0)
+# define NEW_SUPER(a) NEW_NODE(NODE_SUPER,0,0,a)
 #endif
-#define NEW_SUPER(a) NEW_NODE(NODE_SUPER,0,0,a)
 #define NEW_ZSUPER() NEW_NODE(NODE_ZSUPER,0,0,0)
 #define NEW_ARGS(m,o) NEW_NODE(NODE_ARGS,o,m,0)
 #define NEW_ARGS_AUX(r,b) NEW_NODE(NODE_ARGS_AUX,r,b,0)

Modified: MacRuby/branches/testing/parse.y
===================================================================
--- MacRuby/branches/testing/parse.y	2008-06-06 19:48:20 UTC (rev 258)
+++ MacRuby/branches/testing/parse.y	2008-06-06 19:49:38 UTC (rev 259)
@@ -17,6 +17,7 @@
 
 #include "ruby/ruby.h"
 #include "ruby/intern.h"
+#define __IN_PARSE_Y__ 1
 #include "ruby/node.h"
 #include "ruby/st.h"
 #include "ruby/encoding.h"
@@ -437,6 +438,8 @@
 # define named_arg(id, flag) named_arg_gen(parser, id, flag)
 static NODE *process_named_args_gen(struct parser_params*, NODE*);
 # define process_named_args(node) process_named_args_gen(parser, node)
+static NODE *unprocess_named_args_gen(struct parser_params*, NODE*);
+# define unprocess_named_args(node) unprocess_named_args_gen(parser, node)
 #endif
 static int  local_id_gen(struct parser_params*, ID);
 #define local_id(id) local_id_gen(parser, id)
@@ -8711,6 +8714,22 @@
     return n;
 }
 
+static NODE *
+unprocess_named_args_gen(struct parser_params *parser, NODE *n)
+{
+    NODE *args = n->nd_args;
+    if (args != NULL 
+	&& args->nd_argc == 2 
+	&& nd_type(args->u3.node->u1.node) == NODE_ARRAY
+	&& args->u3.node->u1.node->flags & NODE_ARRAY_NAMED_ARGS) {
+
+	NODE *new_argv = NEW_LIST(args->nd_head);
+	arg_append(new_argv, NEW_HASH(args->u3.node->u1.node));
+	n->nd_args = new_argv;
+    }
+    return n;
+}
+
 static void
 named_arg_gen(struct parser_params *parser, ID id, int init)
 {

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/macruby-changes/attachments/20080606/cddf5c92/attachment-0001.htm 


More information about the macruby-changes mailing list