aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--eval.c4
-rw-r--r--parse.y2
3 files changed, 8 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 1f212d167d..a1d51e9acd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Fri Jul 29 09:57:58 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_call0): fix calling zsuper from a method with anonymous
+ rest argument. [ruby-dev:26639]
+
Thu Jul 28 21:49:17 2005 IWATSUKI Hiroyuki <don@na.rim.or.jp>
* parse.y (rb_parser_end_seen_p): exclude from ripper.
diff --git a/eval.c b/eval.c
index fc4e3afce4..ab6e462dc4 100644
--- a/eval.c
+++ b/eval.c
@@ -5771,7 +5771,7 @@ formal_assign(recv, node, argc, argv, local_vars)
rb_eval(recv, opt);
}
}
- if (node->nd_rest && !NIL_P(node->nd_rest)) {
+ if (RTEST(node->nd_rest)) {
VALUE v;
if (argc > 0)
@@ -5923,7 +5923,7 @@ rb_call0(klass, recv, id, oid, argc, argv, body, nosuper)
}
if (node) {
formal_assign(recv, node, argc, argv, local_vars);
- if (node->nd_rest) {
+ if (RTEST(node->nd_rest)) {
ruby_frame->argc = -(ruby_frame->argc - argc)-1;
}
}
diff --git a/parse.y b/parse.y
index 9c3c3e0877..8dcdf0646d 100644
--- a/parse.y
+++ b/parse.y
@@ -8015,7 +8015,7 @@ new_args_gen(parser, m, o, r, b)
}
tmp = tmp->nd_next;
}
- if (r && !NIL_P(r)) {
+ if (RTEST(r)) {
if (arg_dup_check(r->nd_vid, m, list, r)) {
yyerror("duplicated rest argument name");
return 0;