Project

General

Profile

Actions

Bug #7038

closed

Array#zip に配列以外のオブジェクトを指定した場合の例外がわかり辛い

Added by sho-h (Sho Hashimoto) over 11 years ago. Updated over 11 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]
Backport:
[ruby-dev:46145]

Description

=begin
1.9 以降でArray#zip に配列以外のオブジェクトを指定した場合の例外が NoMethodError ではわかり辛いのではないかと思います。

$ ruby -ve 'p [1,2,3].zip(1)'
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]
-e:1:in zip': undefined method each' for 1:Fixnum (NoMethodError)
from -e:1:in `'

1.8 までだと以下のように TypeError でした。

$ ruby -ve 'p [1,2,3].zip(1)'
ruby 1.8.7 (2010-08-16 patchlevel 302) [i486-linux]
-e:1:in `zip': can't convert Fixnum into Array (TypeError)
from -e:1

1.9 以降では、to_ary に失敗した後で、each を試すようですが、それに失敗した時に 1.8 までと同様に TypeError にしてもらう方がわかりやすいのではないかと思いました。
=end

Actions #1

Updated by nobu (Nobuyoshi Nakada) over 11 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

This issue was solved with changeset r36989.
Sho, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


array.c, enum.c: TypeError in zip

  • array.c (take_items), enum.c (enum_zip): raise TypeError at
    non-enumerable objects, not NoMethodError. [ruby-dev:46145]
    [Bug #7038]
  • vm_eval.c (rb_check_block_call): check_funcall variant with block
    function.
Actions

Also available in: Atom PDF

Like0
Like0