From: "mame (Yusuke Endoh)" Date: 2012-04-21T01:46:42+09:00 Subject: [ruby-core:44496] [ruby-trunk - Bug #5761][Closed] Array#flatten(N) calls to_ary on the (N+1)-level objects Issue #5761 has been updated by mame (Yusuke Endoh). Status changed from Assigned to Closed This is already fixed in ruby-1.9.3-p194. -- Yusuke Endoh ---------------------------------------- Bug #5761: Array#flatten(N) calls to_ary on the (N+1)-level objects https://bugs.ruby-lang.org/issues/5761#change-26052 Author: jonleighton (Jon Leighton) Status: Closed Priority: Normal Assignee: mame (Yusuke Endoh) Category: core Target version: ruby -v: ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-linux] $ cat flatten.rb class Foo def respond_to?(name, include_private = true) puts "respond_to?(#{name})" super end def method_missing(name, *args) puts "method_missing(#{name})" super end end puts "[[Foo.new]].flatten(1)" p [[Foo.new]].flatten(1) puts puts "[[[Foo.new]]].flatten(2)" p [[[Foo.new]]].flatten(2) puts puts "[[[Foo.new]]].flatten(1)" p [[[Foo.new]]].flatten(1) $ ruby flatten.rb [[Foo.new]].flatten(1) method_missing(to_ary) respond_to?(to_ary) [#] [[[Foo.new]]].flatten(2) method_missing(to_ary) respond_to?(to_ary) [#] [[[Foo.new]]].flatten(1) [[#]] $ ruby -v ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-linux] Expected behaviour: no method calls are made on the (N+1)-level objects. For what it's worth, this is the 1.8.7 output: $ ruby flatten.rb [[Foo.new]].flatten(1) respond_to?(to_ary) [#] [[[Foo.new]]].flatten(2) respond_to?(to_ary) [#] [[[Foo.new]]].flatten(1) [[#]] -- http://bugs.ruby-lang.org/