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 + + * 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 * 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;