diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-06-24 08:59:34 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-06-24 08:59:34 +0000 |
commit | a8911cce69a6f851d44253f10fce43a88c7be95a (patch) | |
tree | ecbdca5ab67c8264e3c1b1126b01edb7a11623df | |
parent | 1b66e88cca2a932cd787c4bf0665516b33fd303c (diff) | |
download | ruby-a8911cce69a6f851d44253f10fce43a88c7be95a.tar.gz ruby-a8911cce69a6f851d44253f10fce43a88c7be95a.tar.xz ruby-a8911cce69a6f851d44253f10fce43a88c7be95a.zip |
* eval.c (rb_yield_0): show yielded block position not only yielding
point. [ruby-dev:20441]
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@3996 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | eval.c | 20 |
2 files changed, 17 insertions, 8 deletions
@@ -1,3 +1,8 @@ +Tue Jun 24 17:59:30 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net> + + * eval.c (rb_yield_0): show yielded block position not only yielding + point. [ruby-dev:20441] + Tue Jun 24 16:47:07 2003 Minero Aoki <aamine@loveruby.net> * lib/net/http.rb (HTTPHeader#proxy_basic_auth): missing `@'. @@ -2350,7 +2350,6 @@ rb_Array(val) VALUE val; { VALUE tmp = rb_check_array_type(val); - ID to_a; if (NIL_P(tmp)) { /* hack to avoid invoke Object#to_a */ @@ -4080,21 +4079,26 @@ rb_yield_0(val, self, klass, pcall, avalue) massign(self, block->var, val, pcall); } else { + int len = 0; if (avalue) { - if (RARRAY(val)->len == 0) { - goto zero_arg; - } - if (RARRAY(val)->len == 1) { + len = RARRAY(val)->len; + if (len == 1) { val = RARRAY(val)->ptr[0]; } else { - rb_warn("multiple values for a block parameter (%d for 1)", RARRAY(val)->len); + goto mult_values; } } else if (val == Qundef) { - zero_arg: - rb_warn("multiple values for a block parameter (0 for 1)"); val = Qnil; + mult_values: + { + NODE *curr = ruby_current_node; + ruby_current_node = block->var; + rb_warn("multiple values for a block parameter (%d for 1)\n\tfrom %s:%d", + len, curr->nd_file, nd_line(curr)); + ruby_current_node = curr; + } } assign(self, block->var, val, pcall); } |